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