Updates branch master with sol006 branch, introducing new SOL006 model classes

Change-Id: Ica385dd2e44a0e72561b450554f7fa9e450f08c9
Signed-off-by: garciaale <agarcia@whitestack.com>
diff --git a/models/augments/additional-info.yang b/models/augments/additional-info.yang
new file mode 100644
index 0000000..2119073
--- /dev/null
+++ b/models/augments/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/models/augments/alarm.yang b/models/augments/alarm.yang
new file mode 100644
index 0000000..7b6db1f
--- /dev/null
+++ b/models/augments/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/models/augments/alternative-images.yang b/models/augments/alternative-images.yang
new file mode 100644
index 0000000..08adcc3
--- /dev/null
+++ b/models/augments/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/models/augments/cloud-init.yang b/models/augments/cloud-init.yang
new file mode 100644
index 0000000..160c5c8
--- /dev/null
+++ b/models/augments/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:cloud-init";
+    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/models/augments/common-augments.yang b/models/augments/common-augments.yang
new file mode 100644
index 0000000..7beec89
--- /dev/null
+++ b/models/augments/common-augments.yang
@@ -0,0 +1,554 @@
+/*
+  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 common-augments {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments";
+    prefix "common";
+
+    typedef parameter-data-type {
+        type enumeration {
+            enum STRING;
+            enum INTEGER;
+            enum BOOLEAN;
+        }
+    }
+
+    grouping primitive-parameter-value {
+        list parameter {
+            description
+              "List of parameters to the configuration primitive.";
+            key "name";
+            leaf name {
+                description
+                  "Name of the parameter.";
+                type string;
+            }
+
+            leaf data-type {
+                description
+                  "Data type associated with the value.";
+                type common:parameter-data-type;
+            }
+
+            leaf value {
+                description
+                  "Value associated with the name.";
+                type string;
+            }
+        }
+    }
+
+    grouping primitive-parameter {
+        leaf name {
+            description
+              "Name of the parameter.";
+            type string;
+        }
+
+        leaf data-type {
+            description
+              "Data type associated with the name.";
+            type common:parameter-data-type;
+        }
+
+        leaf mandatory {
+            description
+              "Is this field mandatory";
+            type boolean;
+            default false;
+        }
+
+        leaf default-value {
+            description
+              "The default value for this field";
+            type string;
+        }
+
+        leaf parameter-pool {
+            description
+              "NSD parameter pool name to use for this parameter";
+            type string;
+        }
+
+        leaf read-only {
+            description
+              "The value should be dimmed by the UI.
+               Only applies to parameters with default values.";
+            type boolean;
+            default false;
+        }
+
+        leaf hidden {
+            description
+              "The value should be hidden by the UI.
+               Only applies to parameters with default values.";
+            type boolean;
+            default false;
+        }
+    }
+
+    grouping vnfc-relations {
+        list relation {
+            description
+              "List of relations between elements in this descriptor.";
+            key "name";
+
+            leaf name {
+                description
+                  "Name of the relation.";
+
+                type string;
+            }
+
+            list entities {
+                description
+                  "List of two elements to be related.
+                   Elements to be related are identified by a pair (id, endpoint).
+                   The relation will relate (id1, endpoint1) to (id2, endpoint2).";
+                key "id";
+
+                leaf id {
+                    description
+                      "A string, reference to the element id in the descriptor.
+                       It could be a vnfd-id or a vdu-id in a VNFD,
+                       or a nsd-id or member-vnf-index in a NSD.";
+                    type string;
+                }
+
+                leaf endpoint {
+                    description
+                      "Endpoint name defining the relation.";
+                    type string;
+                }
+            }
+        }
+    }
+
+    grouping vnfc-metrics {
+        description
+          "Information about the VNF or VDU metrics";
+        list metrics {
+            description
+              "List of VNFC related metrics";
+            key "name";
+            leaf name {
+                description
+                  "Name of the metric, as defined in the Juju charm.";
+                type string;
+            }
+        }
+    }
+
+    grouping configuration-method {
+        choice config-method {
+            description
+              "Defines the configuration method for the VNF or VDU.";
+            case script {
+                description
+                  "Use custom script for configuring the VNF or VDU.
+                   This script is executed in the context of
+                   Orchestrator (The same system and environment
+                   as the Launchpad).";
+                container script {
+                    leaf script-type {
+                        description
+                          "Script type - currently supported - Scripts confirming to Rift CA plugin";
+                        type enumeration {
+                            enum rift;
+                        }
+                    }
+                }
+            }
+
+            case juju {
+                description
+                  "Configure the VNF or VDU through Juju.";
+                container juju {
+                    leaf charm {
+                        description
+                          "Juju charm to use with the VNF or VDU.";
+                        type string;
+                    }
+                    leaf proxy {
+                        description
+                          "Is this a proxy charm?";
+                        type boolean;
+                        default true;
+                    }
+                }
+            }
+        }
+    }
+
+    grouping vdu-config-access {
+
+        container config-access {
+
+            description
+              "Indicates the way to access to the xNF or xDU for VCA configuration.
+               For the moment there is a single way (ssh-access).";
+
+            container ssh-access {
+
+                description
+                  "If the xNF requires ssh and this parameter is set, SSH keys
+                   will be injected so that VCA can configure the xNF or xDU via ssh.";
+
+                leaf required {
+                    description
+                      "whether ssh access is needed or not";
+                    type boolean;
+                    default false;
+                }
+
+                leaf default-user {
+                    description
+                      "Default user for ssh";
+                    type string;
+                }
+            }
+        }
+    }
+    
+    grouping vnfc-configuration {
+        description
+          "Common information in the descriptors for NS, VNF or VDU configuration.
+           Note: If the NS contains multiple instances of the
+           same VNF or VDU, each instance could have a different
+           configuration.";
+
+        uses common:configuration-method;
+
+        list config-primitive {
+            description
+              "List of config primitives supported by the
+               configuration agent for this VNF or VDU.";
+            key "name";
+
+            leaf name {
+                description
+                  "Name of the config primitive.";
+                type string;
+            }
+
+            list parameter {
+                description
+                  "List of parameters to the config primitive.";
+                key "name";
+                uses primitive-parameter;
+            }
+
+            leaf user-defined-script {
+                description
+                  "A user defined script. If user defined script is defined,
+                   the script will be executed using bash";
+                type string;
+            }
+        }
+
+        list initial-config-primitive {
+            description
+              "Initial set of configuration primitives.";
+            key "seq";
+            leaf seq {
+                description
+                  "Sequence number for the configuration primitive.";
+                type uint64;
+            }
+
+            choice primitive-type {
+                case primitive-definition {
+                    leaf name {
+                        description
+                          "Name of the configuration primitive.";
+                        type string;
+                    }
+
+                    uses primitive-parameter-value;
+
+                    leaf user-defined-script {
+                        description
+                          "A user defined script.";
+                        type string;
+                    }
+                }
+            }
+        }
+
+        list terminate-config-primitive {
+            description
+              "Terminate set of configuration primitives.";
+            key "seq";
+            leaf seq {
+                description
+                  "Sequence number for the configuration primitive.";
+                type uint64;
+            }
+            leaf name {
+                description
+                  "Name of the configuration primitive.";
+                type string;
+            }
+
+            uses primitive-parameter-value;
+
+            leaf user-defined-script {
+                description
+                  "A user defined script.";
+                type string;
+            }
+        }
+        uses common:vnfc-metrics;
+    }
+
+    typedef alarm-severity-type {
+        description
+          "An indication of the importance or urgency of the alarm";
+        type enumeration {
+            enum LOW;
+            enum MODERATE;
+            enum CRITICAL;
+        }
+    }
+
+    typedef alarm-statistic-type {
+        description
+          "Statistic type to use to determine threshold crossing
+           for an alarm.";
+        type enumeration {
+            enum AVERAGE;
+            enum MINIMUM;
+            enum MAXIMUM;
+            enum COUNT;
+            enum SUM;
+        }
+    }
+
+    typedef relational-operation-type {
+        description
+          "The relational operator used to define whether an alarm,
+           scaling event, etc. should be triggered in certain scenarios,
+           such as if the metric statistic goes above or below a specified
+           value.";
+        type enumeration {
+            enum GE; // greater than or equal
+            enum LE; // less than or equal
+            enum GT; // greater than
+            enum LT; // less than
+            enum EQ; // equal
+        }
+    }
+
+    grouping alarm-properties {
+        leaf name {
+            description
+              "A human readable string to identify the alarm";
+            type string;
+        }
+
+        leaf description {
+            description
+              "A description of this alarm";
+            type string;
+        }
+
+        leaf vdur-id {
+            description
+              "The identifier of the VDUR that the alarm is associated with";
+            type string;
+        }
+
+        container actions {
+            list ok {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+
+            list insufficient-data {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+
+            list alarm {
+                key "url";
+                leaf url {
+                    type string;
+                }
+            }
+        }
+
+        leaf repeat {
+            description
+              "This flag indicates whether the alarm should be repeatedly emitted
+               while the associated threshold has been crossed.";
+
+            type boolean;
+            default true;
+        }
+
+        leaf enabled {
+            description
+              "This flag indicates whether the alarm has been enabled or
+               disabled.";
+
+            type boolean;
+            default true;
+        }
+
+        leaf severity {
+            description
+              "A measure of the importance or urgency of the alarm";
+            type alarm-severity-type;
+        }
+
+        leaf statistic {
+            description
+              "The type of metric statistic that is tracked by this alarm";
+            type alarm-statistic-type;
+        }
+
+        leaf operation {
+            description
+              "The relational operator used to define whether an alarm should be
+               triggered in certain scenarios, such as if the metric statistic
+               goes above or below a specified value.";
+            type relational-operation-type;
+        }
+
+        leaf value {
+            description
+              "This value defines the threshold that, if crossed, will trigger
+               the alarm.";
+            type decimal64 {
+                fraction-digits 4;
+            }
+        }
+
+        leaf period {
+            description
+              "The period defines the length of time (seconds) that the metric
+               data are collected over in oreder to evaluate the chosen
+               statistic.";
+            type uint32;
+        }
+
+        leaf evaluations {
+            description
+              "Defines the length of time (seconds) in which metric data are
+               collected in order to evaluate the chosen statistic.";
+            type uint32;
+        }
+    }
+
+    grouping virtual-interface {
+        container virtual-interface {
+            description
+              "Container for the virtual interface properties";
+
+            leaf type {
+                description
+                  "Specifies the type of virtual interface
+                   between VM and host.
+                   PARAVIRT        : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
+                   VIRTIO          : Deprecated! Use the traditional VIRTIO interface.
+                   PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
+                   SR-IOV          : Use SR-IOV interface.
+                   E1000           : Emulate E1000 interface.
+                   RTL8139         : Emulate RTL8139 interface.
+                   PCNET           : Emulate PCNET interface.
+                   OM-MGMT         : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
+
+                type enumeration {
+                    enum PARAVIRT;
+                    enum OM-MGMT;
+                    enum PCI-PASSTHROUGH;
+                    enum SR-IOV;
+                    enum VIRTIO;
+                    enum E1000;
+                    enum RTL8139;
+                    enum PCNET;
+                }
+                default "PARAVIRT";
+            }
+
+            leaf vpci {
+                description
+                  "Specifies the virtual PCI address. Expressed in
+                   the following format dddd:dd:dd.d. For example
+                   0000:00:12.0. This information can be used to
+                   pass as metadata during the VM creation.";
+                type string;
+            }
+
+            leaf bandwidth {
+                description
+                  "Aggregate bandwidth of the NIC.";
+                type uint64;
+            }
+        }
+    }
+
+    grouping description {
+        leaf description {
+            type string;
+        }
+    }
+
+    typedef scaling-trigger {
+        type enumeration {
+            enum pre-scale-in {
+                value 1;
+            }
+            enum post-scale-in {
+                value 2;
+            }
+            enum pre-scale-out {
+                value 3;
+            }
+            enum post-scale-out {
+                value 4;
+            }
+        }
+    }
+
+    typedef scaling-policy-type {
+        type enumeration {
+            enum manual {
+                value 1;
+            }
+            enum automatic {
+                value 2;
+            }
+        }
+    }
+
+    typedef scaling-criteria-operation {
+        type enumeration {
+            enum AND {
+                value 1;
+            }
+            enum OR {
+                value 2;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/models/augments/configuration.yang b/models/augments/configuration.yang
new file mode 100644
index 0000000..94a226d
--- /dev/null
+++ b/models/augments/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/models/augments/day1-2.yang b/models/augments/day1-2.yang
new file mode 100644
index 0000000..e66ce16
--- /dev/null
+++ b/models/augments/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:day1-2";
+    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/models/augments/epa.yang b/models/augments/epa.yang
new file mode 100644
index 0000000..d47d6a9
--- /dev/null
+++ b/models/augments/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/models/augments/interface.yang b/models/augments/interface.yang
new file mode 100644
index 0000000..a33eed1
--- /dev/null
+++ b/models/augments/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/models/augments/ip-profiles.yang b/models/augments/ip-profiles.yang
new file mode 100644
index 0000000..391afa8
--- /dev/null
+++ b/models/augments/ip-profiles.yang
@@ -0,0 +1,218 @@
+/*
+  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 ip-profiles {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments:ip-profiles";
+    prefix "ip-profiles";
+
+    import etsi-nfv-nsd {
+        prefix nsd;
+    }
+
+    import ietf-inet-types {
+        prefix inet;
+    }
+
+    import etsi-nfv-descriptors {
+      prefix nfv;
+    }
+
+    grouping extended-vld-protocol-data{
+        container virtual-link-protocol-data {
+          leaf associated-layer-protocol {
+            type identityref {
+              base nfv:layer-protocol;
+            }
+            description
+              "One of the values of the attribute layerProtocol of
+               the ConnectivityType IE.";
+            reference
+              "GS NFV IFA011: Section 7.1.8.13,
+               VirtualLinkProtocolData information element.";
+          }
+
+          container l2-protocol-data {
+            when "(../associated-layer-protocol = 'Ethernet') or " +
+                 "(../associated-layer-protocol = 'MPLS') or " +
+                 "(../associated-layer-protocol = 'ODU2') or " +
+                 "(../associated-layer-protocol = 'Pseudo-Wire')";
+
+            leaf name {
+              type string;
+              description
+                "Network name associated with this L2 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.14,
+                 L2ProtocolData information element.";
+            }
+
+            leaf network-type {
+              type enumeration {
+                enum flat;
+                enum vlan;
+                enum vxlan;
+                enum gre;
+              }
+              description
+                "Specifies the network type for this L2 protocol.
+                 Possible values: FLAT, VLAN, VXLAN, GRE.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.14,
+                 L2ProtocolData information element.";
+            }
+
+            leaf vlan-transparent {
+              type boolean;
+              description
+                "Specifies whether to support VLAN transparency for
+                 this L2 protocol or not.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.14,
+                 L2ProtocolData information element.";
+            }
+
+            leaf mtu {
+              type uint16;
+              description
+                "Specifies the maximum transmission unit (MTU) value
+                 for this L2 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.14,
+                 L2ProtocolData information element.";
+            }
+            description
+              "Specifies the L2 protocol data for this virtual link.
+               Shall be present when the associatedLayerProtocol
+               attribute indicates a L2 protocol and shall be absent
+               otherwise.";
+            reference
+              "GS NFV IFA011: Section 7.1.8.13,
+               VirtualLinkProtocolData information element.";
+          }
+
+          container l3-protocol-data {
+            when "(../associated-layer-protocol = 'IPv4') or " +
+                 "(../associated-layer-protocol = 'IPv6')";
+
+            leaf name {
+              type string;
+              description
+                "Network name associated with this L3 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf ip-version {
+              type enumeration {
+                enum ipv4;
+                enum ipv6;
+              }
+              default "ipv4";
+              description
+                "Specifies IP version of this L3 protocol.
+                 Value:
+                 • IPV4.
+                 • IPV6.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf cidr {
+              type string;
+              description
+                "Specifies the CIDR (Classless InterDomain Routing)
+                 of this L3 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf-list ip-allocation-pools {
+              type string;
+              description
+                "Specifies the allocation pools with start and end
+                 IP addresses for this L3 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf gateway-ip {
+              type inet:ip-address;
+              description
+                "Specifies the gateway IP address for this L3
+                 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf dhcp-enabled {
+              type boolean;
+              default "true";
+              description
+                "Indicates whether DHCP (Dynamic Host Configuration
+                 Protocol) is enabled or disabled for this L3
+                 protocol.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+
+            leaf ipv6-address-mode {
+              when "../ip-version = 'ipv6'";
+              type enumeration {
+                enum slaac;
+                enum dhcpv6-stateful;
+                enum dhcpv6-stateless;
+              }
+              description
+                "Specifies IPv6 address mode. Possible values:
+                 • SLAAC.
+                 • DHCPV6-STATEFUL.
+                 • DHCPV6-STATELESS.
+                 May be present when the value of the ipVersion
+                 attribute is 'IPV6' and shall be absent otherwise.";
+              reference
+                "GS NFV IFA011: Section 7.1.8.15,
+                 L3ProtocolData information element.";
+            }
+            description
+              "Specifies the L3 protocol data for this virtual link.
+               Shall be present when the associatedLayerProtocol
+               attribute indicates a L3 protocol and shall be absent
+               otherwise.";
+            reference
+              "GS NFV IFA011: Section 7.1.8.13,
+               VirtualLinkProtocolData information element.";
+          }
+          description
+            "Specifies the protocol data for a VL instantiated
+             according to this profile. Cardinality 0 is used when
+             no protocol data needs to be specified.";
+          reference
+            "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+             information element.";
+        }
+    }
+        
+    augment "/nsd:nsd/nsd:nsd/nsd:df/nsd:virtual-link-profile" {
+        uses extended-vld-protocol-data;
+    }
+}
diff --git a/models/augments/kdu.yang b/models/augments/kdu.yang
new file mode 100644
index 0000000..0cad701
--- /dev/null
+++ b/models/augments/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/models/augments/mgmt-interface.yang b/models/augments/mgmt-interface.yang
new file mode 100644
index 0000000..b4353d0
--- /dev/null
+++ b/models/augments/mgmt-interface.yang
@@ -0,0 +1,40 @@
+/*
+  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;
+    }
+
+    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/models/augments/ns-configuration.yang b/models/augments/ns-configuration.yang
new file mode 100644
index 0000000..a4effd2
--- /dev/null
+++ b/models/augments/ns-configuration.yang
@@ -0,0 +1,44 @@
+/*
+  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 ns-configuration {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments:ns-configuration";
+    prefix "ns-configuration";
+
+    import etsi-nfv-nsd {
+        prefix nsd;
+    }
+
+    import common-augments {
+        prefix common;
+    }
+
+    grouping extended-ns-configuration {
+        container ns-configuration {
+            description
+              "Information about NS configuration.";
+
+            uses common:vnfc-configuration;
+            uses common:vnfc-relations;
+        }
+    }
+
+    augment "/nsd:nsd/nsd:nsd" {
+        uses extended-ns-configuration;
+    }
+}
diff --git a/models/augments/ns-various.yang b/models/augments/ns-various.yang
new file mode 100644
index 0000000..921278d
--- /dev/null
+++ b/models/augments/ns-various.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 ns-various {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments:ns-various";
+    prefix "ns-various";
+
+    import etsi-nfv-nsd {
+        prefix nsd;
+    }
+
+    import ip-profiles {
+        prefix ip-profiles;
+    }
+
+    import common-augments {
+        prefix common;
+    }
+
+    grouping extended-floating-ip {
+        leaf floating-ip-required {
+            description
+              "Boolean parameter to indicate whether the CP must be exposed.
+               A public IP address will be allocated to this CP if exposed is true.
+               The default is false meaning a floating IP address is not required.
+               It must be explicitly asked for a floating IP address to be allocated.";
+            type boolean;
+        }
+    }
+
+    grouping extended-security-group {
+        leaf security-group {
+            description
+              "Name of the security group";
+            type string;
+        }
+    }
+
+    augment "/nsd:nsd/nsd:nsd" {
+        uses common:description;
+    }
+
+    augment "/nsd:nsd/nsd:nsd/nsd:sapd" {
+        uses extended-floating-ip;
+    }
+
+    augment "/nsd:nsd/nsd:nsd/nsd:df/nsd:virtual-link-profile/ip-profiles:virtual-link-protocol-data/ip-profiles:l3-protocol-data" {
+        uses extended-security-group;
+    }
+}
diff --git a/models/augments/ns-vld.yang b/models/augments/ns-vld.yang
new file mode 100644
index 0000000..e892d8a
--- /dev/null
+++ b/models/augments/ns-vld.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 ns-vld {
+    yang-version 1.1;
+    namespace "urn:etsi:osm:yang:augments:ns-vld";
+    prefix "ns-vld";
+
+    import etsi-nfv-nsd {
+        prefix nsd;
+    }
+
+    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;
+            }
+        }
+
+        leaf mgmt-network {
+            description
+              "Flag indicating whether this network is a VIM management network";
+            type boolean;
+            default false;
+        }
+    }
+
+
+    augment "/nsd:nsd/nsd:nsd/nsd:virtual-link-desc" {
+        uses extended-vld;
+    }
+}
diff --git a/models/augments/scaling.yang b/models/augments/scaling.yang
new file mode 100644
index 0000000..647edf1
--- /dev/null
+++ b/models/augments/scaling.yang
@@ -0,0 +1,168 @@
+/*
+  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 string;
+                    
+                }
+            }
+        }
+
+        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;
+    }
+}
diff --git a/models/augments/various.yang b/models/augments/various.yang
new file mode 100644
index 0000000..23f86ca
--- /dev/null
+++ b/models/augments/various.yang
@@ -0,0 +1,120 @@
+/*
+  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;
+    }
+    
+    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/models/augments/vip.yang b/models/augments/vip.yang
new file mode 100644
index 0000000..1db62eb
--- /dev/null
+++ b/models/augments/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