Move VNFD-related augments to a new folder 27/8927/1
authorTomás Villaseca <tvillaseca@whitestack.com>
Sat, 16 May 2020 20:57:44 +0000 (16:57 -0400)
committerTomás Villaseca <tvillaseca@whitestack.com>
Sat, 16 May 2020 20:57:44 +0000 (16:57 -0400)
Change-Id: I77863fb8493d849ce60b795b0c8ba8f90db76c96
Signed-off-by: Tomás Villaseca <tvillaseca@whitestack.com>
26 files changed:
augments/additional-info.yang [deleted file]
augments/alarm.yang [deleted file]
augments/alternative-images.yang [deleted file]
augments/cloud-init.yang [deleted file]
augments/configuration.yang [deleted file]
augments/day1-2.yang [deleted file]
augments/epa.yang [deleted file]
augments/interface.yang [deleted file]
augments/kdu.yang [deleted file]
augments/mgmt-interface.yang [deleted file]
augments/scaling.yang [deleted file]
augments/various.yang [deleted file]
augments/vip.yang [deleted file]
augments/vnfd/additional-info.yang [new file with mode: 0644]
augments/vnfd/alarm.yang [new file with mode: 0644]
augments/vnfd/alternative-images.yang [new file with mode: 0644]
augments/vnfd/cloud-init.yang [new file with mode: 0644]
augments/vnfd/configuration.yang [new file with mode: 0644]
augments/vnfd/day1-2.yang [new file with mode: 0644]
augments/vnfd/epa.yang [new file with mode: 0644]
augments/vnfd/interface.yang [new file with mode: 0644]
augments/vnfd/kdu.yang [new file with mode: 0644]
augments/vnfd/mgmt-interface.yang [new file with mode: 0644]
augments/vnfd/scaling.yang [new file with mode: 0644]
augments/vnfd/various.yang [new file with mode: 0644]
augments/vnfd/vip.yang [new file with mode: 0644]

diff --git a/augments/additional-info.yang b/augments/additional-info.yang
deleted file mode 100644 (file)
index 2119073..0000000
+++ /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 (file)
index 7b6db1f..0000000
+++ /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 (file)
index 08adcc3..0000000
+++ /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 (file)
index 73bc723..0000000
+++ /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 (file)
index 94a226d..0000000
+++ /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 (file)
index ccdc49a..0000000
+++ /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 (file)
index d47d6a9..0000000
+++ /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 (file)
index a33eed1..0000000
+++ /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 (file)
index 0cad701..0000000
+++ /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 (file)
index d9cf686..0000000
+++ /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 (file)
index 049ebc7..0000000
+++ /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 (file)
index e1981a0..0000000
+++ /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 (file)
index 1db62eb..0000000
+++ /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 (file)
index 0000000..2119073
--- /dev/null
@@ -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 (file)
index 0000000..7b6db1f
--- /dev/null
@@ -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 (file)
index 0000000..08adcc3
--- /dev/null
@@ -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 (file)
index 0000000..73bc723
--- /dev/null
@@ -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 (file)
index 0000000..94a226d
--- /dev/null
@@ -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 (file)
index 0000000..ccdc49a
--- /dev/null
@@ -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 (file)
index 0000000..d47d6a9
--- /dev/null
@@ -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 (file)
index 0000000..a33eed1
--- /dev/null
@@ -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 (file)
index 0000000..0cad701
--- /dev/null
@@ -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 (file)
index 0000000..d9cf686
--- /dev/null
@@ -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 (file)
index 0000000..049ebc7
--- /dev/null
@@ -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 (file)
index 0000000..e1981a0
--- /dev/null
@@ -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 (file)
index 0000000..1db62eb
--- /dev/null
@@ -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