From: Tomás Villaseca Date: Sat, 16 May 2020 20:57:44 +0000 (-0400) Subject: Move VNFD-related augments to a new folder X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F27%2F8927%2F1;p=osm%2FIM.git Move VNFD-related augments to a new folder Change-Id: I77863fb8493d849ce60b795b0c8ba8f90db76c96 Signed-off-by: Tomás Villaseca --- diff --git a/augments/additional-info.yang b/augments/additional-info.yang deleted file mode 100644 index 2119073..0000000 --- a/augments/additional-info.yang +++ /dev/null @@ -1,42 +0,0 @@ -/* - 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; - } -} diff --git a/augments/alarm.yang b/augments/alarm.yang deleted file mode 100644 index 7b6db1f..0000000 --- a/augments/alarm.yang +++ /dev/null @@ -1,70 +0,0 @@ -/* - 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; - } -} - - - - - - - - - - diff --git a/augments/alternative-images.yang b/augments/alternative-images.yang deleted file mode 100644 index 08adcc3..0000000 --- a/augments/alternative-images.yang +++ /dev/null @@ -1,57 +0,0 @@ -/* - 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 diff --git a/augments/cloud-init.yang b/augments/cloud-init.yang deleted file mode 100644 index 73bc723..0000000 --- a/augments/cloud-init.yang +++ /dev/null @@ -1,54 +0,0 @@ -/* - 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 diff --git a/augments/configuration.yang b/augments/configuration.yang deleted file mode 100644 index 94a226d..0000000 --- a/augments/configuration.yang +++ /dev/null @@ -1,92 +0,0 @@ -/* - 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 diff --git a/augments/day1-2.yang b/augments/day1-2.yang deleted file mode 100644 index ccdc49a..0000000 --- a/augments/day1-2.yang +++ /dev/null @@ -1,65 +0,0 @@ -/* - 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 diff --git a/augments/epa.yang b/augments/epa.yang deleted file mode 100644 index d47d6a9..0000000 --- a/augments/epa.yang +++ /dev/null @@ -1,262 +0,0 @@ -/* - 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 diff --git a/augments/interface.yang b/augments/interface.yang deleted file mode 100644 index a33eed1..0000000 --- a/augments/interface.yang +++ /dev/null @@ -1,58 +0,0 @@ -/* - 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 diff --git a/augments/kdu.yang b/augments/kdu.yang deleted file mode 100644 index 0cad701..0000000 --- a/augments/kdu.yang +++ /dev/null @@ -1,165 +0,0 @@ -/* - 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 diff --git a/augments/mgmt-interface.yang b/augments/mgmt-interface.yang deleted file mode 100644 index d9cf686..0000000 --- a/augments/mgmt-interface.yang +++ /dev/null @@ -1,43 +0,0 @@ -/* - 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 diff --git a/augments/scaling.yang b/augments/scaling.yang deleted file mode 100644 index 049ebc7..0000000 --- a/augments/scaling.yang +++ /dev/null @@ -1,169 +0,0 @@ -/* - 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 diff --git a/augments/various.yang b/augments/various.yang deleted file mode 100644 index e1981a0..0000000 --- a/augments/various.yang +++ /dev/null @@ -1,124 +0,0 @@ -/* - 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 diff --git a/augments/vip.yang b/augments/vip.yang deleted file mode 100644 index 1db62eb..0000000 --- a/augments/vip.yang +++ /dev/null @@ -1,63 +0,0 @@ -/* - 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 diff --git a/augments/vnfd/additional-info.yang b/augments/vnfd/additional-info.yang new file mode 100644 index 0000000..2119073 --- /dev/null +++ b/augments/vnfd/additional-info.yang @@ -0,0 +1,42 @@ +/* + 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; + } +} diff --git a/augments/vnfd/alarm.yang b/augments/vnfd/alarm.yang new file mode 100644 index 0000000..7b6db1f --- /dev/null +++ b/augments/vnfd/alarm.yang @@ -0,0 +1,70 @@ +/* + 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; + } +} + + + + + + + + + + diff --git a/augments/vnfd/alternative-images.yang b/augments/vnfd/alternative-images.yang new file mode 100644 index 0000000..08adcc3 --- /dev/null +++ b/augments/vnfd/alternative-images.yang @@ -0,0 +1,57 @@ +/* + 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 diff --git a/augments/vnfd/cloud-init.yang b/augments/vnfd/cloud-init.yang new file mode 100644 index 0000000..73bc723 --- /dev/null +++ b/augments/vnfd/cloud-init.yang @@ -0,0 +1,54 @@ +/* + 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 diff --git a/augments/vnfd/configuration.yang b/augments/vnfd/configuration.yang new file mode 100644 index 0000000..94a226d --- /dev/null +++ b/augments/vnfd/configuration.yang @@ -0,0 +1,92 @@ +/* + 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 diff --git a/augments/vnfd/day1-2.yang b/augments/vnfd/day1-2.yang new file mode 100644 index 0000000..ccdc49a --- /dev/null +++ b/augments/vnfd/day1-2.yang @@ -0,0 +1,65 @@ +/* + 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 diff --git a/augments/vnfd/epa.yang b/augments/vnfd/epa.yang new file mode 100644 index 0000000..d47d6a9 --- /dev/null +++ b/augments/vnfd/epa.yang @@ -0,0 +1,262 @@ +/* + 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 diff --git a/augments/vnfd/interface.yang b/augments/vnfd/interface.yang new file mode 100644 index 0000000..a33eed1 --- /dev/null +++ b/augments/vnfd/interface.yang @@ -0,0 +1,58 @@ +/* + 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 diff --git a/augments/vnfd/kdu.yang b/augments/vnfd/kdu.yang new file mode 100644 index 0000000..0cad701 --- /dev/null +++ b/augments/vnfd/kdu.yang @@ -0,0 +1,165 @@ +/* + 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 diff --git a/augments/vnfd/mgmt-interface.yang b/augments/vnfd/mgmt-interface.yang new file mode 100644 index 0000000..d9cf686 --- /dev/null +++ b/augments/vnfd/mgmt-interface.yang @@ -0,0 +1,43 @@ +/* + 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 diff --git a/augments/vnfd/scaling.yang b/augments/vnfd/scaling.yang new file mode 100644 index 0000000..049ebc7 --- /dev/null +++ b/augments/vnfd/scaling.yang @@ -0,0 +1,169 @@ +/* + 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 diff --git a/augments/vnfd/various.yang b/augments/vnfd/various.yang new file mode 100644 index 0000000..e1981a0 --- /dev/null +++ b/augments/vnfd/various.yang @@ -0,0 +1,124 @@ +/* + 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 diff --git a/augments/vnfd/vip.yang b/augments/vnfd/vip.yang new file mode 100644 index 0000000..1db62eb --- /dev/null +++ b/augments/vnfd/vip.yang @@ -0,0 +1,63 @@ +/* + 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