+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module additional-info {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:additional-info";
- prefix "additional-info";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- augment "/vnfd:vnfd" {
- uses common:description;
- }
-
- augment "/vnfd:vnfd/vnfd:df/vnfd:virtual-link-profile/vnfd:virtual-link-protocol-data/vnfd:l3-protocol-data" {
- uses common:description;
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
- uses common:description;
- }
-}
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module alarm {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:alarm";
- prefix "alarm";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- grouping extended-alarm {
- list alarm {
- key "alarm-id";
-
- leaf alarm-id {
- description
- "This field is reserved for the identifier assigned by the VIM provider";
-
- type string;
- }
-
-
- leaf vnf-monitoring-param-ref {
- description
- "Reference to the VNF level monitoring parameter
- that is aggregated";
- type leafref {
- path "/vnfd:vnfd/vnfd:df/vnfd:monitoring-parameter/vnfd:id";
- }
- }
-
- uses common:alarm-properties;
- }
-
- }
-
- augment "/vnfd:vnfd/vnfd:vdu" {
- uses extended-alarm;
- }
-}
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module alternative-images {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:alternative-images";
- prefix "alternative-images";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- grouping extended-vim-type {
- leaf vim-type {
- description
- "VIM type: openvim, openstack, vmware, aws, etc.";
- type string;
- }
- }
- grouping extended-alternative-images {
- leaf-list alternative-sw-image-desc {
- description
- "List of alternative images per VIM type.
- Different images can be used for specific types of VIMs instead
- of the default image. This allows deployments in sites where the
- image identifier in the VIM is given by the VIM provider and
- cannot be modified.
- If an alternative image is specified for a VIM type, it will prevail
- over the default image";
- type leafref {
- path "/vnfd:vnfd/vnfd:sw-image-desc/vnfd:id";
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:sw-image-desc" {
- uses extended-vim-type;
- }
-
- augment "/vnfd:vnfd/vnfd:vdu" {
- uses extended-alternative-images;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2019 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module cloud-init {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments";
- prefix "cloud-init";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- grouping extended-cloud-init {
- choice cloud-init-input {
- description
- "Indicates how the contents of cloud-init script are provided.
- There are 2 choices - inline or in a file";
-
- case inline {
- leaf cloud-init {
- description
- "Contents of cloud-init script, provided inline, in cloud-config format";
- type string;
- }
- }
-
- case filename {
- leaf cloud-init-file {
- description
- "Name of file with contents of cloud-init script in cloud-config format";
- type string;
- }
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:vdu" {
- uses extended-cloud-init;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module configuration {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:configuration";
- prefix "configuration";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import day1-2 {
- prefix day1-2;
- }
-
- import kdu {
- prefix kdu;
- }
- grouping extended-vnf-configuration {
- leaf vnf-configuration-id {
- description
- "Reference for the VNF configuration to use in this DF";
- type leafref {
- path "/vnfd:vnfd/day1-2:vnf-configuration/day1-2:id";
- }
- }
- }
-
- grouping extended-vdu-configuration {
- leaf vdu-configuration-id {
- description
- "Reference for the VDU configuration to use in this DF";
- type leafref {
- path "/vnfd:vnfd/day1-2:vdu-configuration/day1-2:id";
- }
- }
- }
-
- grouping extended-kdu-configuration {
- list kdu-profile {
- key "name";
-
- leaf name {
- description
- "Reference to the KDU";
- type leafref {
- path "/vnfd:vnfd/kdu:kdu/kdu:name";
- }
- }
-
- leaf kdu-configuration-id {
- description
- "Reference to the KDU configuration to use in this DF";
- type leafref {
- path "/vnfd:vnfd/kdu:kdu-configuration/kdu:id";
- }
- }
-
- leaf kdu-model-id {
- description
- "Reference to the KDU model to use in this DF";
- type leafref {
- path "/vnfd:vnfd/kdu:kdu-model/kdu:id";
- }
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:df" {
- uses extended-vnf-configuration;
- uses extended-kdu-configuration;
- }
-
- augment "/vnfd:vnfd/vnfd:df/vnfd:vdu-profile" {
- uses extended-vdu-configuration;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module day1-2 {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments";
- prefix "day1-2";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- grouping extended-vnf-configuration {
- list vnf-configuration {
- key "id";
- leaf id {
- description
- "Internal identifier for the VNF configuration";
- type string;
- }
- uses common:vnfc-configuration;
- uses common:vnfc-relations;
- uses common:vdu-config-access;
- }
- }
-
- grouping extended-vdu-configuration {
- list vdu-configuration {
- key "id";
- leaf id {
- description
- "Internal identifier for the VDU configuration";
- type string;
- }
- uses common:vnfc-configuration;
- uses common:vdu-config-access;
- }
- }
-
- augment "/vnfd:vnfd" {
- uses extended-vnf-configuration;
- }
-
- augment "/vnfd:vnfd" {
- uses extended-vdu-configuration;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module epa {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:epa";
- prefix "epa";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- grouping allocation-properties {
- leaf limit {
- description
- "Defines the maximum allocation. The value 0 indicates that usage is not limited.
- This parameter ensures that the instance never uses more than the defined amount of resource.";
- type uint64;
- }
-
- leaf reserve {
- description
- "Defines the guaranteed minimum reservation.
- If needed, the machine will definitely get allocated the reserved amount of resources.";
- type uint64;
- }
-
- leaf shares {
- description
- "Number of shares allocated.
- Specifies the proportional weighted share for the domain.
- If this element is omitted, the service defaults to the OS provided defaults";
- type uint64;
- }
- }
-
- grouping extended-mem-quota {
- container mem-quota {
- description
- "Memory quota describes the memory resource allocation policy.
- Limit and Reserve values are defined in MB";
- uses allocation-properties;
- }
- }
-
- grouping extended-vif-quota {
- container vif-quota {
- description
- "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
- Limit and Reserve values are defined in Mbps";
- uses allocation-properties;
- }
- }
-
- grouping extended-disk-io-quota {
- container disk-io-quota {
- description
- "Disk IO quota describes the disk IO operations resource allocation policy.
- Limit and Reserve values are defined in IOPS";
- uses allocation-properties;
- }
- }
-
- grouping extended-cpu-quota {
- container cpu-quota {
- description
- "CPU quota describes the CPU resource allocation policy.
- Limit and Reserve values are defined in MHz";
- uses allocation-properties;
- }
- }
-
- grouping extended-cpu-policy {
- leaf thread-policy {
- description
- "CPU thread pinning policy describes how to
- place the guest CPUs when the host supports
- hyper threads:
- AVOID : Avoids placing a guest on a host
- with threads.
- SEPARATE: Places vCPUs on separate cores,
- and avoids placing two vCPUs on
- two threads of same core.
- ISOLATE : Places each vCPU on a different core,
- and places no vCPUs from a different
- guest on the same core.
- PREFER : Attempts to place vCPUs on threads
- of the same core.";
- type enumeration {
- enum AVOID;
- enum SEPARATE;
- enum ISOLATE;
- enum PREFER;
- }
- }
- }
-
- grouping extended-mempage-size {
- leaf mempage-size {
- description
- "Memory page allocation size. If a VM requires
- hugepages, it should choose LARGE or SIZE_2MB
- or SIZE_1GB. If the VM prefers hugepages it
- should choose PREFER_LARGE.
- LARGE : Require hugepages (either 2MB or 1GB)
- SMALL : Doesn't require hugepages
- SIZE_2MB : Requires 2MB hugepages
- SIZE_1GB : Requires 1GB hugepages
- PREFER_LARGE : Application prefers hugepages";
- type enumeration {
- enum LARGE;
- enum SMALL;
- enum SIZE_2MB;
- enum SIZE_1GB;
- enum PREFER_LARGE;
- }
- }
- }
- grouping extended-numa {
- container numa-node-policy {
- description
- "This policy defines NUMA topology of the
- guest. Specifically identifies if the guest
- should be run on a host with one NUMA
- node or multiple NUMA nodes. As an example
- a guest might need 8 VCPUs and 4 GB of
- memory. However, it might need the VCPUs
- and memory distributed across multiple
- NUMA nodes. In this scenario, NUMA node
- 1 could run with 6 VCPUs and 3GB, and
- NUMA node 2 could run with 2 VCPUs and
- 1GB.";
-
- leaf node-cnt {
- description
- "The number of NUMA nodes to expose to the VM.";
- type uint16;
- }
-
- leaf mem-policy {
- description
- "This policy specifies how the memory should
- be allocated in a multi-node scenario.
- STRICT : The memory must be allocated
- strictly from the memory attached
- to the NUMA node.
- PREFERRED : The memory should be allocated
- preferentially from the memory
- attached to the NUMA node";
- type enumeration {
- enum STRICT;
- enum PREFERRED;
- }
- }
-
- list node {
- key id;
- leaf id {
- description
- "NUMA node identification. Typically
- it's 0 or 1";
- type uint64;
- }
-
- list vcpu {
- key "id";
- description
- "List of VCPUs to allocate on
- this NUMA node.";
- leaf id {
- type uint64;
- description
- "List of VCPUs ids to allocate on
- this NUMA node";
- }
- }
-
- leaf memory-mb {
- description
- "Memory size expressed in MB
- for this NUMA node.";
- type uint64;
- }
-
- choice om-numa-type {
- description
- "OpenMANO Numa type selection";
-
- case cores {
- leaf num-cores {
- type uint8;
- }
- }
-
- case paired-threads {
- container paired-threads {
- leaf num-paired-threads {
- type uint8;
- }
-
- list paired-thread-ids {
- description
- "List of thread pairs to use in case of paired-thread NUMA";
- max-elements 16;
- key thread-a;
-
- leaf thread-a {
- type uint8;
- }
-
- leaf thread-b {
- type uint8;
- }
- }
- }
- }
- case threads {
- leaf num-threads {
- type uint8;
- }
- }
- }
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-memory" {
- uses extended-numa;
- uses extended-mempage-size;
- uses extended-mem-quota;
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-cpu/vnfd:pinning" {
- uses extended-cpu-policy;
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-cpu" {
- uses extended-cpu-quota;
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
- uses extended-disk-io-quota;
- }
-
- augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement" {
- uses extended-vif-quota;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module interface {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:interface";
- prefix "interface";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- grouping extended-interface {
- description
- "List of Interfaces (external and internal) for the VNF";
-
- leaf position {
- description
- "Explicit Position of the interface within the list";
- type uint32;
- }
-
- leaf mac-address {
- description
- "MAC address of the interface.
- Some VNFs require a specific MAC address to be configured
- in the interface. While this is not recommended at all in
- NFV environments, this parameter exists to allow those
- scenarios.
- This parameter will be likely deprecated in the future.";
- type string;
- }
-
- uses common:virtual-interface;
- }
-
- augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement" {
- uses extended-interface;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module kdu {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:kdu";
- prefix "kdu";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- grouping extended-ext-cpd {
- leaf k8s-cluster-net {
- description
- "Reference to the K8s cluster network
- to which CPs instantiated from this external CP
- Descriptor (CPD) connect.";
- type leafref {
- path "/vnfd:vnfd/kdu:k8s-cluster/kdu:nets/kdu:id";
- }
- }
- }
-
- grouping extended-kdu-configuration {
- list kdu-configuration {
- key "id";
- leaf id {
- description
- "Internal identifier for the KDU configuration";
- type string;
- }
- uses common:vnfc-configuration;
- uses common:vdu-config-access;
-
- leaf-list blacklist-config-primitive {
- description
- "List of blacklisted config primitives from the list of
- default kdu config primitives";
-
- type enumeration {
- enum upgrade;
- enum rollback;
- }
- }
- }
- }
-
- grouping extended-kdu-model {
- list kdu-model {
- key "id";
-
- leaf id {
- description
- "Internal identifier for the KDU model";
- type string;
- }
-
- leaf kdu-model-type {
- description
- "Indicates the KDU model, either as a helm-chart or as a juju-bundle.";
-
- type enumeration {
- enum helm-chart;
- enum juju-bundle;
- }
- }
-
- leaf kdu-model-locator {
- description
- "Indicates the KDU model location, either as a path to a folder in the
- package or as a URL where to fetch the model.";
-
- type string;
- }
- }
- }
-
- grouping extended-kdu {
- list kdu {
- description
- "List of K8s Deployment Units";
- key "name";
-
- leaf name {
- description
- "Unique name for the KDU";
- type string;
- }
-
- leaf description {
- description
- "Description of the KDU.";
- type string;
- }
- }
-
- container k8s-cluster {
- leaf-list version {
- description
- "List of supported K8s versions.
- The cluster where the KDUs will be deployed will have to match
- one of these versions.";
-
- type string;
- }
-
- leaf-list cni {
- description
- "List of supported CNI plugins.
- The cluster where the KDUs will be deployed will have to use
- one of these CNI plugins.";
-
- type enumeration {
- enum calico;
- enum flannel;
- enum multus;
- }
- }
-
- list nets {
- description
- "List of required networks in the K8s cluster.
- The cluster where the KDUs will be deployed will have to use
- one of these CNI plugins.";
-
- key "id";
-
- leaf id {
- description
- "Internal identifier for the K8s cluster network in this VNF";
- type string;
- }
- }
- }
- }
-
- augment "/vnfd:vnfd" {
- uses extended-kdu;
- uses extended-kdu-configuration;
- uses extended-kdu-model;
- }
-
- augment "/vnfd:vnfd/vnfd:ext-cpd/vnfd:cp-connection" {
- uses extended-ext-cpd;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module mgmt-interface {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:mgmt-interface";
- prefix "mgmt-interface";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
- grouping extended-mgmt-interface {
- leaf mgmt-cp {
- description
- "Connection point over which the VNF is managed.";
- type leafref {
- path "/vnfd:vnfd/vnfd:ext-cpd/vnfd:id";
- }
- }
- }
-
- augment "/vnfd:vnfd" {
- uses extended-mgmt-interface;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module scaling {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:scaling";
- prefix "scaling";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- import day1-2 {
- prefix day1-2;
- }
-
- grouping extended-scaling {
- list scaling-policy {
-
- key "name";
-
- leaf name {
- description
- "Name of the scaling policy";
- type string;
- }
-
- leaf scaling-type {
- description
- "Type of scaling";
- type common:scaling-policy-type;
- }
-
- leaf enabled {
- description
- "Specifies if the scaling policy can be applied";
- type boolean;
- default true;
- }
-
- leaf scale-in-operation-type {
- description
- "Operation to be applied to check between scaling criterias to
- check if the scale in threshold condition has been met.
- Defaults to AND";
- type common:scaling-criteria-operation;
- default AND;
- }
-
- leaf scale-out-operation-type {
- description
- "Operation to be applied to check between scaling criterias to
- check if the scale out threshold condition has been met.
- Defauls to OR";
- type common:scaling-criteria-operation;
- default OR;
- }
-
- leaf threshold-time {
- description
- "The duration for which the criteria must hold true";
- type uint32;
- mandatory true;
- }
-
- leaf cooldown-time {
- description
- "The duration after a scaling-in/scaling-out action has been
- triggered, for which there will be no further optional";
- type uint32;
- mandatory true;
- }
-
- list scaling-criteria {
- description
- "list of conditions to be met for generating scaling
- requests";
- key "name";
-
- leaf name {
- type string;
- }
-
- leaf scale-in-threshold {
- description
- "Value below which scale-in requests are generated";
- type decimal64{
- fraction-digits 10;
- }
- }
-
- leaf scale-in-relational-operation {
- description
- "The relational operator used to compare the monitoring param
- against the scale-in-threshold.";
- type common:relational-operation-type;
- default LE;
- }
-
- leaf scale-out-threshold {
- description
- "Value above which scale-out requests are generated";
- type decimal64{
- fraction-digits 10;
- }
- }
-
- leaf scale-out-relational-operation {
- description
- "The relational operator used to compare the monitoring param
- against the scale-out-threshold.";
- type common:relational-operation-type;
- default GE;
- }
-
- leaf vnf-monitoring-param-ref {
- description
- "Reference to the VNF level monitoring parameter
- that is aggregated";
- type leafref {
- path "/vnfd:vnfd/vnfd:df/vnfd:monitoring-parameter/vnfd:id";
- }
- }
- }
- }
-
- list scaling-config-action {
- description
- "List of scaling config actions";
- key "trigger";
-
- leaf trigger {
- description
- "scaling trigger";
- type common:scaling-trigger;
- }
-
- leaf vnf-config-primitive-name-ref {
- description
- "Reference to the VNF config primitive";
- type leafref {
- path "/vnfd:vnfd/day1-2:vnf-configuration/day1-2:config-primitive/day1-2:name";
- }
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:df/vnfd:scaling-aspect" {
- uses extended-scaling;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module various {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:various";
- prefix "various";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- import common-augments {
- prefix common;
- }
-
- grouping extended-vld {
- container provider-network {
- description
- "Container for the provider network.";
- leaf physical-network {
- description
- "Name of the physical network on which the provider
- network is built.";
- type string;
- }
-
- leaf segmentation_id {
- description
- "ID of segregated virtual networks";
- type uint32;
- }
- }
- }
-
- grouping extended-security-group {
- leaf security-group {
- description
- "Name of the security group";
- type string;
- }
- }
-
- grouping extended-cpd {
- leaf port-security-enabled {
- description
- "Enables the port security for the port.";
- type boolean;
- default true;
- }
- }
-
- grouping extended-vdu {
- leaf pdu-type {
- description
- "Type of PDU. If this field exists, the deployment unit must be
- understood as a PDU, not as a VDU. This field is used to identify
- the category of PDU instances to be used at instantiation time. For
- the instantiation to be successful, there must be available
- PDU instances of this type in the selected datacenter.";
- type string;
- }
-
- container supplemental-boot-data {
- leaf boot-data-drive {
- description
- "Some VIMs implement additional drives to host config-files or meta-data";
- type boolean;
- default false;
- }
- }
- }
-
- grouping extended-device-bus {
- leaf device-bus {
- description
- "Type of disk-bus on which this disk is exposed to guest";
- type enumeration {
- enum ide;
- enum usb;
- enum virtio;
- enum scsi;
- }
- }
- }
-
- augment "/vnfd:vnfd/vnfd:int-virtual-link-desc" {
- uses extended-vld;
- }
-
- augment "/vnfd:vnfd/vnfd:df/vnfd:virtual-link-profile/vnfd:virtual-link-protocol-data/vnfd:l3-protocol-data" {
- uses extended-security-group;
- }
-
- augment "/vnfd:vnfd/vnfd:ext-cpd" {
- uses extended-cpd;
- }
-
- augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd" {
- uses extended-cpd;
- }
-
- augment "/vnfd:vnfd/vnfd:vdu" {
- uses extended-vdu;
- }
-
- augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
- uses extended-device-bus;
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- Copyright 2020 Whitestack LLC
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-module vip {
- yang-version 1.1;
- namespace "urn:etsi:osm:yang:augments:vip";
- prefix "vip";
-
- import etsi-nfv-vnfd {
- prefix vnfd;
- }
-
- grouping extended-vip {
- list vip {
- description
- "Paired interfaces from different VDUs that share a Virtual IP";
-
- key "name";
- leaf name {
- description
- "Name of the Virtual IP";
- type string;
- }
-
- list paired-interfaces {
- key "vdu-id-ref";
- leaf vdu-id-ref {
- description
- "Reference to the VDU";
- type leafref {
- path "/vnfd:vnfd/vnfd:vdu/vnfd:id";
- }
- }
-
- leaf interface-ref {
- description
- "Reference to the interface";
- type leafref {
- path "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement/vnfd:name";
- }
- }
- }
- }
- }
-
- augment "/vnfd:vnfd" {
- uses extended-vip;
- }
-}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module additional-info {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:additional-info";
+ prefix "additional-info";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ augment "/vnfd:vnfd" {
+ uses common:description;
+ }
+
+ augment "/vnfd:vnfd/vnfd:df/vnfd:virtual-link-profile/vnfd:virtual-link-protocol-data/vnfd:l3-protocol-data" {
+ uses common:description;
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
+ uses common:description;
+ }
+}
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module alarm {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:alarm";
+ prefix "alarm";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-alarm {
+ list alarm {
+ key "alarm-id";
+
+ leaf alarm-id {
+ description
+ "This field is reserved for the identifier assigned by the VIM provider";
+
+ type string;
+ }
+
+
+ leaf vnf-monitoring-param-ref {
+ description
+ "Reference to the VNF level monitoring parameter
+ that is aggregated";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:df/vnfd:monitoring-parameter/vnfd:id";
+ }
+ }
+
+ uses common:alarm-properties;
+ }
+
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu" {
+ uses extended-alarm;
+ }
+}
+
+
+
+
+
+
+
+
+
+
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module alternative-images {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:alternative-images";
+ prefix "alternative-images";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ grouping extended-vim-type {
+ leaf vim-type {
+ description
+ "VIM type: openvim, openstack, vmware, aws, etc.";
+ type string;
+ }
+ }
+ grouping extended-alternative-images {
+ leaf-list alternative-sw-image-desc {
+ description
+ "List of alternative images per VIM type.
+ Different images can be used for specific types of VIMs instead
+ of the default image. This allows deployments in sites where the
+ image identifier in the VIM is given by the VIM provider and
+ cannot be modified.
+ If an alternative image is specified for a VIM type, it will prevail
+ over the default image";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:sw-image-desc/vnfd:id";
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:sw-image-desc" {
+ uses extended-vim-type;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu" {
+ uses extended-alternative-images;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2019 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module cloud-init {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments";
+ prefix "cloud-init";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ grouping extended-cloud-init {
+ choice cloud-init-input {
+ description
+ "Indicates how the contents of cloud-init script are provided.
+ There are 2 choices - inline or in a file";
+
+ case inline {
+ leaf cloud-init {
+ description
+ "Contents of cloud-init script, provided inline, in cloud-config format";
+ type string;
+ }
+ }
+
+ case filename {
+ leaf cloud-init-file {
+ description
+ "Name of file with contents of cloud-init script in cloud-config format";
+ type string;
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu" {
+ uses extended-cloud-init;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module configuration {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:configuration";
+ prefix "configuration";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import day1-2 {
+ prefix day1-2;
+ }
+
+ import kdu {
+ prefix kdu;
+ }
+ grouping extended-vnf-configuration {
+ leaf vnf-configuration-id {
+ description
+ "Reference for the VNF configuration to use in this DF";
+ type leafref {
+ path "/vnfd:vnfd/day1-2:vnf-configuration/day1-2:id";
+ }
+ }
+ }
+
+ grouping extended-vdu-configuration {
+ leaf vdu-configuration-id {
+ description
+ "Reference for the VDU configuration to use in this DF";
+ type leafref {
+ path "/vnfd:vnfd/day1-2:vdu-configuration/day1-2:id";
+ }
+ }
+ }
+
+ grouping extended-kdu-configuration {
+ list kdu-profile {
+ key "name";
+
+ leaf name {
+ description
+ "Reference to the KDU";
+ type leafref {
+ path "/vnfd:vnfd/kdu:kdu/kdu:name";
+ }
+ }
+
+ leaf kdu-configuration-id {
+ description
+ "Reference to the KDU configuration to use in this DF";
+ type leafref {
+ path "/vnfd:vnfd/kdu:kdu-configuration/kdu:id";
+ }
+ }
+
+ leaf kdu-model-id {
+ description
+ "Reference to the KDU model to use in this DF";
+ type leafref {
+ path "/vnfd:vnfd/kdu:kdu-model/kdu:id";
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:df" {
+ uses extended-vnf-configuration;
+ uses extended-kdu-configuration;
+ }
+
+ augment "/vnfd:vnfd/vnfd:df/vnfd:vdu-profile" {
+ uses extended-vdu-configuration;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module day1-2 {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments";
+ prefix "day1-2";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-vnf-configuration {
+ list vnf-configuration {
+ key "id";
+ leaf id {
+ description
+ "Internal identifier for the VNF configuration";
+ type string;
+ }
+ uses common:vnfc-configuration;
+ uses common:vnfc-relations;
+ uses common:vdu-config-access;
+ }
+ }
+
+ grouping extended-vdu-configuration {
+ list vdu-configuration {
+ key "id";
+ leaf id {
+ description
+ "Internal identifier for the VDU configuration";
+ type string;
+ }
+ uses common:vnfc-configuration;
+ uses common:vdu-config-access;
+ }
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-vnf-configuration;
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-vdu-configuration;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module epa {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:epa";
+ prefix "epa";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ grouping allocation-properties {
+ leaf limit {
+ description
+ "Defines the maximum allocation. The value 0 indicates that usage is not limited.
+ This parameter ensures that the instance never uses more than the defined amount of resource.";
+ type uint64;
+ }
+
+ leaf reserve {
+ description
+ "Defines the guaranteed minimum reservation.
+ If needed, the machine will definitely get allocated the reserved amount of resources.";
+ type uint64;
+ }
+
+ leaf shares {
+ description
+ "Number of shares allocated.
+ Specifies the proportional weighted share for the domain.
+ If this element is omitted, the service defaults to the OS provided defaults";
+ type uint64;
+ }
+ }
+
+ grouping extended-mem-quota {
+ container mem-quota {
+ description
+ "Memory quota describes the memory resource allocation policy.
+ Limit and Reserve values are defined in MB";
+ uses allocation-properties;
+ }
+ }
+
+ grouping extended-vif-quota {
+ container vif-quota {
+ description
+ "Virtual interfaces quota describes the virtual interface bandwidth resource allocation policy.
+ Limit and Reserve values are defined in Mbps";
+ uses allocation-properties;
+ }
+ }
+
+ grouping extended-disk-io-quota {
+ container disk-io-quota {
+ description
+ "Disk IO quota describes the disk IO operations resource allocation policy.
+ Limit and Reserve values are defined in IOPS";
+ uses allocation-properties;
+ }
+ }
+
+ grouping extended-cpu-quota {
+ container cpu-quota {
+ description
+ "CPU quota describes the CPU resource allocation policy.
+ Limit and Reserve values are defined in MHz";
+ uses allocation-properties;
+ }
+ }
+
+ grouping extended-cpu-policy {
+ leaf thread-policy {
+ description
+ "CPU thread pinning policy describes how to
+ place the guest CPUs when the host supports
+ hyper threads:
+ AVOID : Avoids placing a guest on a host
+ with threads.
+ SEPARATE: Places vCPUs on separate cores,
+ and avoids placing two vCPUs on
+ two threads of same core.
+ ISOLATE : Places each vCPU on a different core,
+ and places no vCPUs from a different
+ guest on the same core.
+ PREFER : Attempts to place vCPUs on threads
+ of the same core.";
+ type enumeration {
+ enum AVOID;
+ enum SEPARATE;
+ enum ISOLATE;
+ enum PREFER;
+ }
+ }
+ }
+
+ grouping extended-mempage-size {
+ leaf mempage-size {
+ description
+ "Memory page allocation size. If a VM requires
+ hugepages, it should choose LARGE or SIZE_2MB
+ or SIZE_1GB. If the VM prefers hugepages it
+ should choose PREFER_LARGE.
+ LARGE : Require hugepages (either 2MB or 1GB)
+ SMALL : Doesn't require hugepages
+ SIZE_2MB : Requires 2MB hugepages
+ SIZE_1GB : Requires 1GB hugepages
+ PREFER_LARGE : Application prefers hugepages";
+ type enumeration {
+ enum LARGE;
+ enum SMALL;
+ enum SIZE_2MB;
+ enum SIZE_1GB;
+ enum PREFER_LARGE;
+ }
+ }
+ }
+ grouping extended-numa {
+ container numa-node-policy {
+ description
+ "This policy defines NUMA topology of the
+ guest. Specifically identifies if the guest
+ should be run on a host with one NUMA
+ node or multiple NUMA nodes. As an example
+ a guest might need 8 VCPUs and 4 GB of
+ memory. However, it might need the VCPUs
+ and memory distributed across multiple
+ NUMA nodes. In this scenario, NUMA node
+ 1 could run with 6 VCPUs and 3GB, and
+ NUMA node 2 could run with 2 VCPUs and
+ 1GB.";
+
+ leaf node-cnt {
+ description
+ "The number of NUMA nodes to expose to the VM.";
+ type uint16;
+ }
+
+ leaf mem-policy {
+ description
+ "This policy specifies how the memory should
+ be allocated in a multi-node scenario.
+ STRICT : The memory must be allocated
+ strictly from the memory attached
+ to the NUMA node.
+ PREFERRED : The memory should be allocated
+ preferentially from the memory
+ attached to the NUMA node";
+ type enumeration {
+ enum STRICT;
+ enum PREFERRED;
+ }
+ }
+
+ list node {
+ key id;
+ leaf id {
+ description
+ "NUMA node identification. Typically
+ it's 0 or 1";
+ type uint64;
+ }
+
+ list vcpu {
+ key "id";
+ description
+ "List of VCPUs to allocate on
+ this NUMA node.";
+ leaf id {
+ type uint64;
+ description
+ "List of VCPUs ids to allocate on
+ this NUMA node";
+ }
+ }
+
+ leaf memory-mb {
+ description
+ "Memory size expressed in MB
+ for this NUMA node.";
+ type uint64;
+ }
+
+ choice om-numa-type {
+ description
+ "OpenMANO Numa type selection";
+
+ case cores {
+ leaf num-cores {
+ type uint8;
+ }
+ }
+
+ case paired-threads {
+ container paired-threads {
+ leaf num-paired-threads {
+ type uint8;
+ }
+
+ list paired-thread-ids {
+ description
+ "List of thread pairs to use in case of paired-thread NUMA";
+ max-elements 16;
+ key thread-a;
+
+ leaf thread-a {
+ type uint8;
+ }
+
+ leaf thread-b {
+ type uint8;
+ }
+ }
+ }
+ }
+ case threads {
+ leaf num-threads {
+ type uint8;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-memory" {
+ uses extended-numa;
+ uses extended-mempage-size;
+ uses extended-mem-quota;
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-cpu/vnfd:pinning" {
+ uses extended-cpu-policy;
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-compute-desc/vnfd:virtual-cpu" {
+ uses extended-cpu-quota;
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
+ uses extended-disk-io-quota;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement" {
+ uses extended-vif-quota;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module interface {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:interface";
+ prefix "interface";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-interface {
+ description
+ "List of Interfaces (external and internal) for the VNF";
+
+ leaf position {
+ description
+ "Explicit Position of the interface within the list";
+ type uint32;
+ }
+
+ leaf mac-address {
+ description
+ "MAC address of the interface.
+ Some VNFs require a specific MAC address to be configured
+ in the interface. While this is not recommended at all in
+ NFV environments, this parameter exists to allow those
+ scenarios.
+ This parameter will be likely deprecated in the future.";
+ type string;
+ }
+
+ uses common:virtual-interface;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement" {
+ uses extended-interface;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module kdu {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:kdu";
+ prefix "kdu";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-ext-cpd {
+ leaf k8s-cluster-net {
+ description
+ "Reference to the K8s cluster network
+ to which CPs instantiated from this external CP
+ Descriptor (CPD) connect.";
+ type leafref {
+ path "/vnfd:vnfd/kdu:k8s-cluster/kdu:nets/kdu:id";
+ }
+ }
+ }
+
+ grouping extended-kdu-configuration {
+ list kdu-configuration {
+ key "id";
+ leaf id {
+ description
+ "Internal identifier for the KDU configuration";
+ type string;
+ }
+ uses common:vnfc-configuration;
+ uses common:vdu-config-access;
+
+ leaf-list blacklist-config-primitive {
+ description
+ "List of blacklisted config primitives from the list of
+ default kdu config primitives";
+
+ type enumeration {
+ enum upgrade;
+ enum rollback;
+ }
+ }
+ }
+ }
+
+ grouping extended-kdu-model {
+ list kdu-model {
+ key "id";
+
+ leaf id {
+ description
+ "Internal identifier for the KDU model";
+ type string;
+ }
+
+ leaf kdu-model-type {
+ description
+ "Indicates the KDU model, either as a helm-chart or as a juju-bundle.";
+
+ type enumeration {
+ enum helm-chart;
+ enum juju-bundle;
+ }
+ }
+
+ leaf kdu-model-locator {
+ description
+ "Indicates the KDU model location, either as a path to a folder in the
+ package or as a URL where to fetch the model.";
+
+ type string;
+ }
+ }
+ }
+
+ grouping extended-kdu {
+ list kdu {
+ description
+ "List of K8s Deployment Units";
+ key "name";
+
+ leaf name {
+ description
+ "Unique name for the KDU";
+ type string;
+ }
+
+ leaf description {
+ description
+ "Description of the KDU.";
+ type string;
+ }
+ }
+
+ container k8s-cluster {
+ leaf-list version {
+ description
+ "List of supported K8s versions.
+ The cluster where the KDUs will be deployed will have to match
+ one of these versions.";
+
+ type string;
+ }
+
+ leaf-list cni {
+ description
+ "List of supported CNI plugins.
+ The cluster where the KDUs will be deployed will have to use
+ one of these CNI plugins.";
+
+ type enumeration {
+ enum calico;
+ enum flannel;
+ enum multus;
+ }
+ }
+
+ list nets {
+ description
+ "List of required networks in the K8s cluster.
+ The cluster where the KDUs will be deployed will have to use
+ one of these CNI plugins.";
+
+ key "id";
+
+ leaf id {
+ description
+ "Internal identifier for the K8s cluster network in this VNF";
+ type string;
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-kdu;
+ uses extended-kdu-configuration;
+ uses extended-kdu-model;
+ }
+
+ augment "/vnfd:vnfd/vnfd:ext-cpd/vnfd:cp-connection" {
+ uses extended-ext-cpd;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module mgmt-interface {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:mgmt-interface";
+ prefix "mgmt-interface";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+ grouping extended-mgmt-interface {
+ leaf mgmt-cp {
+ description
+ "Connection point over which the VNF is managed.";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:ext-cpd/vnfd:id";
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-mgmt-interface;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module scaling {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:scaling";
+ prefix "scaling";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ import day1-2 {
+ prefix day1-2;
+ }
+
+ grouping extended-scaling {
+ list scaling-policy {
+
+ key "name";
+
+ leaf name {
+ description
+ "Name of the scaling policy";
+ type string;
+ }
+
+ leaf scaling-type {
+ description
+ "Type of scaling";
+ type common:scaling-policy-type;
+ }
+
+ leaf enabled {
+ description
+ "Specifies if the scaling policy can be applied";
+ type boolean;
+ default true;
+ }
+
+ leaf scale-in-operation-type {
+ description
+ "Operation to be applied to check between scaling criterias to
+ check if the scale in threshold condition has been met.
+ Defaults to AND";
+ type common:scaling-criteria-operation;
+ default AND;
+ }
+
+ leaf scale-out-operation-type {
+ description
+ "Operation to be applied to check between scaling criterias to
+ check if the scale out threshold condition has been met.
+ Defauls to OR";
+ type common:scaling-criteria-operation;
+ default OR;
+ }
+
+ leaf threshold-time {
+ description
+ "The duration for which the criteria must hold true";
+ type uint32;
+ mandatory true;
+ }
+
+ leaf cooldown-time {
+ description
+ "The duration after a scaling-in/scaling-out action has been
+ triggered, for which there will be no further optional";
+ type uint32;
+ mandatory true;
+ }
+
+ list scaling-criteria {
+ description
+ "list of conditions to be met for generating scaling
+ requests";
+ key "name";
+
+ leaf name {
+ type string;
+ }
+
+ leaf scale-in-threshold {
+ description
+ "Value below which scale-in requests are generated";
+ type decimal64{
+ fraction-digits 10;
+ }
+ }
+
+ leaf scale-in-relational-operation {
+ description
+ "The relational operator used to compare the monitoring param
+ against the scale-in-threshold.";
+ type common:relational-operation-type;
+ default LE;
+ }
+
+ leaf scale-out-threshold {
+ description
+ "Value above which scale-out requests are generated";
+ type decimal64{
+ fraction-digits 10;
+ }
+ }
+
+ leaf scale-out-relational-operation {
+ description
+ "The relational operator used to compare the monitoring param
+ against the scale-out-threshold.";
+ type common:relational-operation-type;
+ default GE;
+ }
+
+ leaf vnf-monitoring-param-ref {
+ description
+ "Reference to the VNF level monitoring parameter
+ that is aggregated";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:df/vnfd:monitoring-parameter/vnfd:id";
+ }
+ }
+ }
+ }
+
+ list scaling-config-action {
+ description
+ "List of scaling config actions";
+ key "trigger";
+
+ leaf trigger {
+ description
+ "scaling trigger";
+ type common:scaling-trigger;
+ }
+
+ leaf vnf-config-primitive-name-ref {
+ description
+ "Reference to the VNF config primitive";
+ type leafref {
+ path "/vnfd:vnfd/day1-2:vnf-configuration/day1-2:config-primitive/day1-2:name";
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:df/vnfd:scaling-aspect" {
+ uses extended-scaling;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module various {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:various";
+ prefix "various";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ import common-augments {
+ prefix common;
+ }
+
+ grouping extended-vld {
+ container provider-network {
+ description
+ "Container for the provider network.";
+ leaf physical-network {
+ description
+ "Name of the physical network on which the provider
+ network is built.";
+ type string;
+ }
+
+ leaf segmentation_id {
+ description
+ "ID of segregated virtual networks";
+ type uint32;
+ }
+ }
+ }
+
+ grouping extended-security-group {
+ leaf security-group {
+ description
+ "Name of the security group";
+ type string;
+ }
+ }
+
+ grouping extended-cpd {
+ leaf port-security-enabled {
+ description
+ "Enables the port security for the port.";
+ type boolean;
+ default true;
+ }
+ }
+
+ grouping extended-vdu {
+ leaf pdu-type {
+ description
+ "Type of PDU. If this field exists, the deployment unit must be
+ understood as a PDU, not as a VDU. This field is used to identify
+ the category of PDU instances to be used at instantiation time. For
+ the instantiation to be successful, there must be available
+ PDU instances of this type in the selected datacenter.";
+ type string;
+ }
+
+ container supplemental-boot-data {
+ leaf boot-data-drive {
+ description
+ "Some VIMs implement additional drives to host config-files or meta-data";
+ type boolean;
+ default false;
+ }
+ }
+ }
+
+ grouping extended-device-bus {
+ leaf device-bus {
+ description
+ "Type of disk-bus on which this disk is exposed to guest";
+ type enumeration {
+ enum ide;
+ enum usb;
+ enum virtio;
+ enum scsi;
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd/vnfd:int-virtual-link-desc" {
+ uses extended-vld;
+ }
+
+ augment "/vnfd:vnfd/vnfd:df/vnfd:virtual-link-profile/vnfd:virtual-link-protocol-data/vnfd:l3-protocol-data" {
+ uses extended-security-group;
+ }
+
+ augment "/vnfd:vnfd/vnfd:ext-cpd" {
+ uses extended-cpd;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd" {
+ uses extended-cpd;
+ }
+
+ augment "/vnfd:vnfd/vnfd:vdu" {
+ uses extended-vdu;
+ }
+
+ augment "/vnfd:vnfd/vnfd:virtual-storage-desc" {
+ uses extended-device-bus;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ Copyright 2020 Whitestack LLC
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+module vip {
+ yang-version 1.1;
+ namespace "urn:etsi:osm:yang:augments:vip";
+ prefix "vip";
+
+ import etsi-nfv-vnfd {
+ prefix vnfd;
+ }
+
+ grouping extended-vip {
+ list vip {
+ description
+ "Paired interfaces from different VDUs that share a Virtual IP";
+
+ key "name";
+ leaf name {
+ description
+ "Name of the Virtual IP";
+ type string;
+ }
+
+ list paired-interfaces {
+ key "vdu-id-ref";
+ leaf vdu-id-ref {
+ description
+ "Reference to the VDU";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:vdu/vnfd:id";
+ }
+ }
+
+ leaf interface-ref {
+ description
+ "Reference to the interface";
+ type leafref {
+ path "/vnfd:vnfd/vnfd:vdu/vnfd:int-cpd/vnfd:virtual-network-interface-requirement/vnfd:name";
+ }
+ }
+ }
+ }
+ }
+
+ augment "/vnfd:vnfd" {
+ uses extended-vip;
+ }
+}
\ No newline at end of file