diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba4ec2d7b634784082a719200016af7c15ecdefa
--- /dev/null
+++ b/example-data/nfv-nsd.xml
@@ -0,0 +1,135 @@
+
+
+ ASA
+ My Company
+ My Company ASAv
+ 9.8
+ 9.8
+ My Company Vnfm
+
+ firewall
+ Firewall VDU
+
+ inside
+ nfv:ethernet
+
+
+ management
+ nfv:ethernet
+
+
+ outside
+ nfv:ethernet
+
+ asa-vcd
+ asa-vsd
+ asa-image
+
+
+ asa-vcd
+
+ 4.0
+
+
+ 2
+
+
+
+ asa-vsd
+ nfv:root-storage
+ 0
+
+
+ asa-image
+ ASA image
+ 1.1
+
+ nfv:sha-224
+ deadbeef
+
+ bare
+ qcow2
+ 2.0
+ 1
+ http://www.cisco.com/asa.qcow2
+
+
+ inside
+
+ firewall
+ inside
+
+ nfv:ethernet
+
+
+ management
+
+ firewall
+ management
+
+ nfv:ethernet
+
+
+ outside
+
+ firewall
+ outside
+
+ nfv:ethernet
+
+
+ normal
+
+ firewall
+ 1
+ 2
+
+
+ double
+
+ firewall
+ 2
+
+
+
+ single
+
+ firewall
+ 1
+
+
+ single
+
+
+
+ firewall-nsd
+ ASA
+
+ inside
+
+
+ management
+
+
+ outside
+
+
+ firewall
+
+ firewall
+ ASA
+ normal
+ single
+ 1
+ 1
+
+
+ single
+
+ firewall
+ 1
+
+
+
+
+
diff --git a/example-data/nfv-pnfd.xml b/example-data/nfv-pnfd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4cd51f49372abadf771dcbef9bfc3c0dfe4ca34e
--- /dev/null
+++ b/example-data/nfv-pnfd.xml
@@ -0,0 +1,8 @@
+
+ physical-dpi
+ 1.0
+
+ outside
+ nfv:ethernet
+
+
diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7587240efcd281a762527e1b7fa1e6a49049ee9e
--- /dev/null
+++ b/example-data/nfv-vnfd.xml
@@ -0,0 +1,90 @@
+
+ ASA
+ My Company
+ My Company ASAv
+ 9.8
+ 9.8
+ My Company Vnfm
+
+ firewall
+ Firewall VDU
+
+ inside
+ nfv:ethernet
+
+
+ management
+ nfv:ethernet
+
+
+ outside
+ nfv:ethernet
+
+ asa-vcd
+ asa-vsd
+ asa-image
+
+
+ asa-vcd
+
+ 4.0
+
+
+ 2
+
+
+
+ asa-vsd
+ nfv:root-storage
+ 0
+
+
+ asa-image
+ ASA image
+ 1.1
+
+ nfv:sha-224
+ deadbeef
+
+ bare
+ qcow2
+ 2.0
+ 1
+ http://www.cisco.com/asa.qcow2
+
+
+ inside
+ nfv:ethernet
+
+
+ management
+ nfv:ethernet
+
+
+ outside
+ nfv:ethernet
+
+
+ normal
+
+ firewall
+ 1
+ 2
+
+
+ double
+
+ firewall
+ 2
+
+
+
+ single
+
+ firewall
+ 1
+
+
+ single
+
+
diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 1ee310fab7325b42f6337b3de3ad7e50e3e27700..92731014a95ae724ed26a40eb703cf7928f157c3 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -34,11 +34,11 @@
2
-
+
asa-vsd
root-storage
0
-
+
asa-image
ASA image
@@ -148,11 +148,11 @@
2
-
+
csr-vsd
root-storage
0
-
+
csr-image
CSR image
@@ -280,9 +280,7 @@
fw2dpi
-
- ethernet
-
+ ethernet
normal
@@ -295,9 +293,7 @@
mgmt
-
- ipv4
-
+ ipv4
normal
@@ -310,9 +306,7 @@
r2fw
-
- ethernet
-
+ ethernet
normal
@@ -535,9 +529,7 @@
r2fw
-
- ipv4
-
+ ipv4
r2fw
diff --git a/run-test.sh b/run-test.sh
index 471b13aec126d886f0f2d6f3b1fb8eba09b89090..9fad42dcaf0e07f3ca82d184ef5a3451b171c8b5 100755
--- a/run-test.sh
+++ b/run-test.sh
@@ -7,19 +7,36 @@ set -e
source /opt/confd/confdrc
cd src
-echo "Testing compilation"
CONFD_OPTS="--fail-on-warnings"
CONFD_OPTS=""
+
+echo "Testing compilations of VNFD."
+confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv-vnfd.fxs etsi-nfv-vnfd.yang
+echo "Testing compilations of PNFD."
+confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv-pnfd.fxs etsi-nfv-pnfd.yang
+echo "Testing compilations of NSD."
+confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv-nsd.fxs etsi-nfv-nsd.yang
+echo "Testing compilations of descriptors."
confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv-descriptors.fxs etsi-nfv-descriptors.yang
echo "Starting ConfD"
confd
-echo "Loading data for the simple example"
+echo "Loading Data for VNFD"
+confd_load -l -m nfv-vnfd.xml
+
+echo "Loading Data for PNFD"
+confd_load -l -m nfv-pnfd.xml
+
+echo "Loading Data for NSD"
+confd_load -l -m nfv-nsd.xml
+
+echo "Loading Data for descriptors"
confd_load -l -m nfv.xml
echo "Loading data for the complex Vnfd example"
confd_load -l -m complex-vnfd.xml
+
# Don't do this in the actual test, just waste of cycles
# echo "Stopping ConfD"
# confd --stop
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 8c641a8a3772ac125113e413524b3e23510ce9ef..0a1c361eddba042598317e1bec71d6797a287d03 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -3,10 +3,13 @@ submodule etsi-nfv-common {
belongs-to etsi-nfv-descriptors {
prefix nfv;
}
+ organization
+ "European Telecommunications Standards Institute (ETSI)";
+
description
"Common data types for ETSI data models.";
- revision 2019-03-18 {
+ revision 2019-04-25 {
description
"Initial revision
@@ -239,7 +242,7 @@ submodule etsi-nfv-common {
description
"Ephemeral type of storage.";
}
-
+
/*
* Typedefs
*/
@@ -316,14 +319,10 @@ submodule etsi-nfv-common {
grouping connectivity-type {
container connectivity-type {
- list layer-protocol {
- key "protocol";
-
- leaf protocol {
- type identityref {
- base layer-protocol;
- }
- }
+ leaf-list layer-protocol {
+ type identityref {
+ base layer-protocol;
+ }
description
"Identifies the protocols that the VL uses (Ethernet,
MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer
@@ -634,17 +633,6 @@ submodule etsi-nfv-common {
reference
"GS NFV IFA011: Section 7.1.6.3 Cpd information element";
}
-
- leaf security-group-rule-id {
- type leafref {
- path "/nfv/vnfd/security-group-rule/id";
- }
- description
- "Reference of the security group rules bound to this
- CPD.";
- reference
- "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
- }
}
grouping security-group-rule {
diff --git a/src/yang/etsi-nfv-descriptors.yang b/src/yang/etsi-nfv-descriptors.yang
index d6421299979a409fc26e768e82e031d1ff957132..afedb3b7a4a8daf1178ce22f92df35c9b96188f9 100644
--- a/src/yang/etsi-nfv-descriptors.yang
+++ b/src/yang/etsi-nfv-descriptors.yang
@@ -14,7 +14,7 @@ module etsi-nfv-descriptors {
description
"Network Function Virtualization Descriptors";
- revision 2019-03-18 {
+ revision 2019-04-25 {
description
"Initial revision.
NSD and PNFD according to ETSI GS NFV-IFA 014 Ed261v252
@@ -22,8 +22,44 @@ module etsi-nfv-descriptors {
}
container nfv {
- uses vnfd;
- uses nsd;
- uses pnfd;
+ list vnfd {
+ key "id";
+ description
+ "A VNF Descriptor (VNFD) is a deployment template which
+ describes a VNF in terms of deployment and operational
+ behaviour requirements. It also contains connectivity,
+ interface and virtualised resource requirements";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+
+ uses vnfd;
+ }
+
+ list nsd {
+ key "id";
+
+ description
+ "The NSD information element is a deployment template whose
+ instances are used by the NFVO for the lifecycle
+ management of NSs.";
+ reference
+ "GS NFV-IFA014: Section 6.2.2, Network Service Descriptor
+ information element.";
+
+ uses nsd;
+ }
+
+ list pnfd {
+ key "id";
+
+ description
+ "The Pnfd information element is a deployment template
+ enabling on-boarding PNFs and referencing them from an
+ NSD. It focuses on connectivity aspects only.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element.";
+
+ uses pnfd;
+ }
}
}
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index 483b2460c7a5a89462187be61d197046dcd08e8b..1eb49ce02f133723d16093debe9c6aef98d1397a 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -11,7 +11,7 @@ submodule etsi-nfv-ns {
description
"Models for NS according to ETSI GS NFV-IFA 014.";
- revision 2019-03-18 {
+ revision 2019-04-25 {
description
"Initial revision
Common data structure to support NSD according to:
@@ -35,1542 +35,1551 @@ submodule etsi-nfv-ns {
grouping nsd {
- list nsd {
- key "id";
+ leaf id {
+ type string;
+ description
+ "Identifier of this NSD information element. It Globally
+ uniquely identifies an instance of the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
- leaf id {
- type string;
- description
- "Identifier of this NSD information element. It Globally
- uniquely identifies an instance of the NSD.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
- }
- leaf designer {
- type string;
- description
- "Identifies the designer of the NSD.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
- }
- leaf version {
- type string;
- description
- "Identifies the version of the NSD.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
- }
- leaf name {
- type string;
- description
- "Provides the human readable name of the NSD.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
- }
- leaf invariant-id {
- type string;
- description
- "Identifies an NSD in a version independent manner. This
- attribute is invariant across versions of the network
- service descriptor.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
+ leaf designer {
+ type string;
+ description
+ "Identifies the designer of the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
+
+ leaf version {
+ type string;
+ description
+ "Identifies the version of the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
+
+ leaf name {
+ type string;
+ description
+ "Provides the human readable name of the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
+
+ leaf invariant-id {
+ type string;
+ description
+ "Identifies an NSD in a version independent manner. This
+ attribute is invariant across versions of the network
+ service descriptor.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
+
+ leaf-list nested-nsd-id {
+ must ". != ../id";
+ type leafref {
+ path "../../nsd/id";
}
+ description
+ "References the NSD of a constituent nested NS.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
- leaf-list nested-nsd-id {
- must ". != ../id";
- type leafref {
- path "../../nsd/id";
- }
- description
- "References the NSD of a constituent nested NS.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
+ leaf-list vnfd-id {
+ type leafref {
+ path "../../vnfd/id";
}
+ description
+ "References the VNFD of a constituent VNF.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
- leaf-list vnfd-id {
- type leafref {
- path "../../vnfd/id";
- }
- description
- "References the VNFD of a constituent VNF.";
- reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
+ leaf-list pnfd-id {
+ type leafref {
+ path "../../pnfd/id";
}
+ description
+ "References the PNFD of a constituent PNF.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ }
+
+ list sapd {
+ key "id";
+ description
+ "Provides the descriptor of a service access point of the
+ network service.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
- leaf-list pnfd-id {
- type leafref {
- path "../../pnfd/id";
- }
+ leaf id {
+ type string;
description
- "References the PNFD of a constituent PNF.";
+ "Identifier of this Cpd information element.";
reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
+ "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
}
- list sapd {
- key "id";
+ leaf address-assignment {
+ type boolean;
description
- "Provides the descriptor of a service access point of the
- network service.";
+ "Specify whether the SAP address assignment is under the
+ responsibility of management and orchestration functions
+ or not. If it is set to True, management and
+ orchestration functions are responsible for assigning
+ addresses to the access points instantiated from this
+ SAPD.";
reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
-
- leaf id {
- type string;
- description
- "Identifier of this Cpd information element.";
- reference
- "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
- }
+ "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
+ }
- leaf address-assignment {
- type boolean;
+ choice cpd-or-virtual-link {
+ leaf virtual-link-desc {
+ type leafref {
+ path "../../virtual-link-desc/id";
+ }
description
- "Specify whether the SAP address assignment is under the
- responsibility of management and orchestration functions
- or not. If it is set to True, management and
- orchestration functions are responsible for assigning
- addresses to the access points instantiated from this
- SAPD.";
+ "References the descriptor of the NS VL instance to
+ which the SAP instantiated from this SAPD connects to.";
reference
"GS NFV IFA014: Section 6.2.3.2 Sapd information element";
}
- choice cpd-or-virtual-link {
- leaf virtual-link-desc {
- type leafref {
- path "../../virtual-link-desc/id";
- }
- description
- "References the descriptor of the NS VL instance to
- which the SAP instantiated from this SAPD connects to.";
- reference
- "GS NFV IFA014: Section 6.2.3.2 Sapd information element";
- }
-
- choice associated-cpd-id {
- container vnf {
- leaf vnfd-id {
- mandatory true;
- type leafref {
- path "../../../../nfv:vnfd/nfv:id";
- }
- must "boolean(../../../vnfd-id[.=current()])";
+ choice associated-cpd-id {
+ container vnf {
+ leaf vnfd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../vnfd/id";
}
+ must "boolean(../../../vnfd-id[.=current()])";
+ }
- leaf ext-cpd-id {
- mandatory true;
- type leafref {
- path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
- }
+ leaf ext-cpd-id {
+ mandatory true;
+ type leafref {
+ path "deref(../vnfd-id)/../ext-cpd/id";
}
}
+ }
- container pnf {
- leaf pnfd-id {
- mandatory true;
- type leafref {
- path "../../../../nfv:pnfd/nfv:id";
- }
- must "boolean(../pnfd-id[.=current()])";
+ container pnf {
+ leaf pnfd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../pnfd/id";
}
+ must "boolean(../pnfd-id[.=current()])";
+ }
- leaf ext-cpd-id {
- mandatory true;
- type leafref {
- path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
- }
+ leaf ext-cpd-id {
+ mandatory true;
+ type leafref {
+ path "deref(../pnfd-id)/../ext-cpd/id";
}
}
- container ns {
- leaf nsd-id {
- mandatory true;
- type leafref {
- path "../../../../nfv:nsd/nfv:id";
- }
- must "boolean(../nsd-id[.=current()])";
+ }
+ container ns {
+ leaf nsd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../nsd/id";
}
+ must "boolean(../nsd-id[.=current()])";
+ }
- leaf ext-cpd-id {
- mandatory true;
- type leafref {
- path "deref(../nsd-id)/../nfv:sapd/nfv:id";
- }
+ leaf ext-cpd-id {
+ mandatory true;
+ type leafref {
+ path "deref(../nsd-id)/../sapd/id";
}
}
}
}
}
+ }
+
+ list virtual-link-desc {
+ key "id";
+ description
+ "Provides the constituent VLDs.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+ leaf id {
+ type string;
+ description
+ "Identifier of the NsVirtualLinkDesc information element.
+ It uniquely identifies a VLD.";
+ reference
+ "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
+ information element";
+ }
- list virtual-link-desc {
+ uses connectivity-type;
+
+ list df {
key "id";
+
description
- "Provides the constituent VLDs.";
+ "The VirtualLinkDf information element specifies
+ properties for instantiating a VL according to a
+ specific flavour.";
reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
+
leaf id {
type string;
description
- "Identifier of the NsVirtualLinkDesc information element.
- It uniquely identifies a VLD.";
+ "Identifies this VirtualLinkDf information element
+ within a VLD.";
reference
- "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
+ "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
information element";
}
- uses connectivity-type;
-
- list df {
- key "id";
-
+ container qos {
+ presence "VL QoS parameters";
description
- "The VirtualLinkDf information element specifies
- properties for instantiating a VL according to a
- specific flavour.";
+ "The QoS information element specifies quality of
+ service parameters applicable to a VL.";
reference
- "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
+ "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
information element";
- leaf id {
- type string;
+ leaf latency {
+ mandatory true;
+ type uint32;
+ units "ms";
description
- "Identifies this VirtualLinkDf information element
- within a VLD.";
+ "Specifies the maximum latency in ms.";
reference
- "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
- information element";
+ "GS NFV IFA014: Section 6.5.6.2 QoS information
+ element";
}
- container qos {
- presence "VL QoS parameters";
+ leaf packet-delay-variation {
+ mandatory true;
+ type uint32;
+ units "ms";
description
- "The QoS information element specifies quality of
- service parameters applicable to a VL.";
+ "Specifies the maximum jitter in ms.";
reference
- "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
- information element";
-
- leaf latency {
- mandatory true;
- type uint32;
- units "ms";
- description
- "Specifies the maximum latency in ms.";
- reference
- "GS NFV IFA014: Section 6.5.6.2 QoS information
- element";
- }
-
- leaf packet-delay-variation {
- mandatory true;
- type uint32;
- units "ms";
- description
- "Specifies the maximum jitter in ms.";
- reference
- "GS NFV IFA014: Section 6.5.6.2 QoS information
- element";
- }
-
- leaf packet-loss-ratio {
- type decimal64 {
- fraction-digits "2";
- range "0..1.00";
- }
- description
- "Specifies the maximum packet loss ratio.";
- reference
- "GS NFV IFA014: Section 6.5.6.2 QoS information
- element";
- }
+ "GS NFV IFA014: Section 6.5.6.2 QoS information
+ element";
+ }
- leaf priority {
- type uint32;
- description
- "Specifies the priority level in case of
- congestion on the underlying physical links.";
- reference
- "GS NFV IFA014: Section 6.5.6.2 QoS information
- element";
+ leaf packet-loss-ratio {
+ type decimal64 {
+ fraction-digits "2";
+ range "0..1.00";
}
+ description
+ "Specifies the maximum packet loss ratio.";
+ reference
+ "GS NFV IFA014: Section 6.5.6.2 QoS information
+ element";
}
- leaf service-availability-level {
- type enumeration {
- enum "level-1";
- enum "level-2";
- enum "level-3";
- }
+ leaf priority {
+ type uint32;
description
- "Specifies one of the three levels defined in ETSI
- ETSI GS NFV-REL 001 [i.5]
- * Level 1.
- * Level 2.
- * Level 3.";
+ "Specifies the priority level in case of
+ congestion on the underlying physical links.";
reference
- "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
- information element";
+ "GS NFV IFA014: Section 6.5.6.2 QoS information
+ element";
}
}
- leaf test-access {
+ leaf service-availability-level {
type enumeration {
- enum none;
- enum passive-monitoring;
- enum active;
+ enum "level-1";
+ enum "level-2";
+ enum "level-3";
}
description
- "Specifies test access facilities expected on the VL.";
+ "Specifies one of the three levels defined in ETSI
+ ETSI GS NFV-REL 001 [i.5]
+ * Level 1.
+ * Level 2.
+ * Level 3.";
reference
- "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
+ "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf
information element";
}
+ }
- leaf description {
- type string;
- description
- "Provides human-readable information on the purpose of
- the virtual link (e.g. VL for control plane traffic).";
- reference
- "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
- information element";
+ leaf test-access {
+ type enumeration {
+ enum none;
+ enum passive-monitoring;
+ enum active;
}
- uses security-parameters;
+ description
+ "Specifies test access facilities expected on the VL.";
+ reference
+ "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
+ information element";
}
- list vnffgd {
- key "id";
-
+ leaf description {
+ type string;
description
- "Provides the descriptors of the applicable forwarding
- graphs.";
+ "Provides human-readable information on the purpose of
+ the virtual link (e.g. VL for control plane traffic).";
reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ "GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
+ }
+ uses security-parameters;
+ }
- leaf id {
- type string;
- description
- "Identifier of this Vnffgd information element. It
- uniquely identifies a VNFFGD.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
- }
+ list vnffgd {
+ key "id";
- leaf-list vnf-profile-id {
- type leafref {
- path "../../df/vnf-profile/id";
- }
- description
- "References the VnfProfile of a constituent VNF.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ description
+ "Provides the descriptors of the applicable forwarding
+ graphs.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+
+ leaf id {
+ type string;
+ description
+ "Identifier of this Vnffgd information element. It
+ uniquely identifies a VNFFGD.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
element";
+ }
+
+ leaf-list vnf-profile-id {
+ type leafref {
+ path "../../df/vnf-profile/id";
}
+ description
+ "References the VnfProfile of a constituent VNF.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
+ }
- leaf-list pnf-profile-id {
- type leafref {
- path "../../df/pnf-profile/id";
- }
- description
- "References the PnfProfile of a constituent PNF.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
+ leaf-list pnf-profile-id {
+ type leafref {
+ path "../../df/pnf-profile/id";
}
+ description
+ "References the PnfProfile of a constituent PNF.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
+ }
- leaf-list nested-ns-profile-id {
- type leafref {
- path "../../df/ns-profile/id";
- }
- description
- "References the NsProfile of a nestedNS.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
+ leaf-list nested-ns-profile-id {
+ type leafref {
+ path "../../df/ns-profile/id";
}
+ description
+ "References the NsProfile of a nestedNS.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
+ }
- leaf virtual-link-profile-id {
- type leafref {
- path "../../df/virtual-link-profile/id";
- }
- description
- "References the Virtual Link Profile of a constituent
- VL.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
+ leaf virtual-link-profile-id {
+ type leafref {
+ path "../../df/virtual-link-profile/id";
}
+ description
+ "References the Virtual Link Profile of a constituent
+ VL.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
+ }
- list cpd-pool {
- key "id";
+ list cpd-pool {
+ key "id";
- description
- "Describes a pool of descriptors of connection points
- attached to one of the constituent VNFs and PNFs and/or
- one of the SAPs of the parent NS or of a nested NS.";
- reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
- element";
+ description
+ "Describes a pool of descriptors of connection points
+ attached to one of the constituent VNFs and PNFs and/or
+ one of the SAPs of the parent NS or of a nested NS.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
- leaf id {
- type string;
- }
+ leaf id {
+ type string;
+ }
- choice constituent-base-element-id {
- mandatory "true";
- container vnf-profile {
- leaf vnf-profile-id {
- must ". = deref(../../vnfd-profile-id)" {
- }
- type leafref {
- path "/nfv/nsd/df/vnf-profile/id";
- }
+ choice constituent-base-element-id {
+ mandatory "true";
+ container vnf-profile {
+ leaf vnf-profile-id {
+ must ". = deref(../../vnfd-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../nsd/df/vnf-profile/id";
}
}
- container pnf-profile {
- leaf pnf-profile-id {
- must ". = deref(../../pnfd-profile-id)" {
- }
- type leafref {
- path "/nfv/nsd/df/pnf-profile/id";
- }
+ }
+ container pnf-profile {
+ leaf pnf-profile-id {
+ must ". = deref(../../pnfd-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../nsd/df/pnf-profile/id";
}
}
- container ns-profile {
- leaf ns-profile-id {
- must ". = deref(../../ns-profile-id)" {
- }
- type leafref {
- path "/nfv/nsd/df/ns-profile/id";
- }
+ }
+ container ns-profile {
+ leaf ns-profile-id {
+ must ". = deref(../../ns-profile-id)" {
+ }
+ type leafref {
+ path "../../../../../nsd/df/ns-profile/id";
}
}
- description
- "Reference to the profile of an NS constituent.";
- reference
- "GS NFV IFA014: Section 6.4.8 CpdInConstituentElement
- information element";
}
+ description
+ "Reference to the profile of an NS constituent.";
+ reference
+ "GS NFV IFA014: Section 6.4.8 CpdInConstituentElement
+ information element";
+ }
- choice constituent-cpd-id {
- container vnf {
- leaf vnfd-id {
- must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
- }
- type leafref {
- path "/nfv/vnfd/id";
- }
+ choice constituent-cpd-id {
+ container vnf {
+ leaf vnfd-id {
+ must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
}
- leaf cpd-id {
- type leafref {
- path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
- }
+ type leafref {
+ path "../../../../../vnfd/id";
}
}
- container pnf {
- leaf pnfd-id {
- must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
- }
- type leafref {
- path "/nfv/pnfd/id";
- }
- }
- leaf pnf-cpd-id {
- type leafref {
- path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
- }
+ leaf cpd-id {
+ type leafref {
+ path "deref(../vnfd-id)/../ext-cpd/id";
}
}
- container ns {
- leaf nsd-id {
- must ". = deref(../../nested-ns-profile-id)/" +
- "../nsd-id" {
- }
-
- type leafref {
- path "/nfv/nsd/id";
- }
+ }
+ container pnf {
+ leaf pnfd-id {
+ must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
+ }
+ type leafref {
+ path "../../../../../pnfd/id";
}
- leaf sap-cpd-id {
- type leafref {
- path "deref(../nsd-id)/../nfv:sapd/nfv:id";
- }
+ }
+ leaf pnf-cpd-id {
+ type leafref {
+ path "deref(../pnfd-id)/../ext-cpd/id";
}
}
- description
- "A reference to the descriptor of a connection point
- attached to one of the constituent VNFs and PNFs or to
- the descriptor of a NS SAP.";
- reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool information
- element";
}
- }
+ container ns {
+ leaf nsd-id {
+ must ". = deref(../../nested-ns-profile-id)/" +
+ "../nsd-id" {
+ }
- list nfpd {
+ type leafref {
+ path "../../../../../nsd/id";
+ }
+ }
+ leaf sap-cpd-id {
+ type leafref {
+ path "deref(../nsd-id)/../sapd/id";
+ }
+ }
+ }
+ description
+ "A reference to the descriptor of a connection point
+ attached to one of the constituent VNFs and PNFs or to
+ the descriptor of a NS SAP.";
+ reference
+ "GS NFV IFA014: Section 6.4.4.2 CpdPool information
+ element";
+ }
+ }
+
+ list nfpd {
+ key "id";
+
+ description
+ "The network forwarding path associated to the VNFFG.";
+ reference
+ "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ element";
+
+ leaf id {
+ type string;
+ description
+ "Identifies this nfpd information element within a
+ VNFFGD.";
+ reference
+ "GS NFV IFA014: Section 6.4.3.2 Nfpd information
+ element";
+ }
+
+ leaf rule {
+ type string;
+ description
+ "Provides an NFP classification and selection rule.
+ The rule may be expressed as a criteria constructed
+ out of atomic assertions linked by Boolean operators
+ AND, OR and NOT.";
+ reference
+ "GS NFV IFA014: Section 6.4.3.2 Nfpd information
+ element";
+ }
+
+ list position-desc-id {
key "id";
description
- "The network forwarding path associated to the VNFFG.";
+ "Describes a position in the NFP in terms of one or
+ more CP profiles and rules for distributing the
+ traffic among CP and SAP instances created from the
+ CPD or SAPD associated to these profiles. This shall
+ be connection point profile, which is either a CPD
+ associated with the VnfProfile of a constituent VNF,
+ or a CPD associated with the PnfProfile of a
+ constituent PNF, or a SAPD associated with the
+ NsProfile of a nested NS. The related VnfProfile,
+ PnfProfile and NsProfile shall be included in the
+ parent VNFFGD.";
reference
- "GS NFV IFA014: Section 6.4.2.2 Vnffgd information
+ "GS NFV IFA014: Section 6.4.3.2 Nfpd information
element";
leaf id {
type string;
description
- "Identifies this nfpd information element within a
- VNFFGD.";
- reference
- "GS NFV IFA014: Section 6.4.3.2 Nfpd information
- element";
- }
-
- leaf rule {
- type string;
- description
- "Provides an NFP classification and selection rule.
- The rule may be expressed as a criteria constructed
- out of atomic assertions linked by Boolean operators
- AND, OR and NOT.";
+ "Identifier of this NfpPositionDesc element.";
reference
- "GS NFV IFA014: Section 6.4.3.2 Nfpd information
- element";
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
}
- list position-desc-id {
+ list cp-profile-id {
key "id";
description
- "Describes a position in the NFP in terms of one or
- more CP profiles and rules for distributing the
- traffic among CP and SAP instances created from the
- CPD or SAPD associated to these profiles. This shall
- be connection point profile, which is either a CPD
- associated with the VnfProfile of a constituent VNF,
- or a CPD associated with the PnfProfile of a
- constituent PNF, or a SAPD associated with the
- NsProfile of a nested NS. The related VnfProfile,
- PnfProfile and NsProfile shall be included in the
- parent VNFFGD.";
+ "References the profile of a connection point to be
+ traversed by the traffic flows matching the criteria.
+ This shall be a connection point attached to one of
+ the constituent VNFs and PNFs of the parent VNFFG,
+ or a SAP of one of the constituent nested NSs of the
+ parent VNFFG.";
reference
- "GS NFV IFA014: Section 6.4.3.2 Nfpd information
- element";
+ "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ information element";
leaf id {
type string;
description
- "Identifier of this NfpPositionDesc element.";
+ "Identifier of this CpProfile information element.
+ It uniquely identifies a CpProfile.";
reference
- "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ "GS NFV IFA014: Section 6.4.6.2 CpProfile
information element";
}
- list cp-profile-id {
+ list constituent-profile-elements {
key "id";
description
- "References the profile of a connection point to be
- traversed by the traffic flows matching the criteria.
- This shall be a connection point attached to one of
- the constituent VNFs and PNFs of the parent VNFFG,
- or a SAP of one of the constituent nested NSs of the
- parent VNFFG.";
+ "Specifies the constituents of the CpProfile.";
reference
- "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
+ "GS NFV IFA014: Section 6.4.6.2 CpProfile
information element";
leaf id {
type string;
description
- "Identifier of this CpProfile information element.
- It uniquely identifies a CpProfile.";
+ "Specifies the constituents of the CpProfile.";
reference
- "GS NFV IFA014: Section 6.4.6.2 CpProfile
- information element";
+ "GS NFV IFA014: Section 6.4.7.2
+ ConstituentProfileElements information element";
}
- list constituent-profile-elements {
- key "id";
-
+ leaf cpd-id {
+ type string;
description
- "Specifies the constituents of the CpProfile.";
+ "References the VNF external CPD for a given
+ VnfProfile, or the PNF external CPD for a given
+ PnfProfile, or a NS SAPD for a give NsProfile
+ identified by the constituentBasedElementId.";
reference
- "GS NFV IFA014: Section 6.4.6.2 CpProfile
- information element";
-
- leaf id {
- type string;
- description
- "Specifies the constituents of the CpProfile.";
- reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
- }
-
- leaf cpd-id {
- type string;
- description
- "References the VNF external CPD for a given
- VnfProfile, or the PNF external CPD for a given
- PnfProfile, or a NS SAPD for a give NsProfile
- identified by the constituentBasedElementId.";
- reference
- "GS NFV IFA014: Section 6.4.7.2
- ConstituentProfileElements information element";
- }
+ "GS NFV IFA014: Section 6.4.7.2
+ ConstituentProfileElements information element";
}
}
}
}
}
+ }
- leaf-list autoscale-rule {
+ leaf-list autoscale-rule {
+ type string;
+ }
+ list lifecycle-management-script {
+ key "event";
+ leaf event {
type string;
}
- list lifecycle-management-script {
- key "event";
- leaf event {
- type string;
- }
- leaf script {
- type string;
- }
+ leaf script {
+ type string;
}
+ }
- list df {
- min-elements 1;
- must "default-instantiation-level or " +
- "count(ns-instantiation-level) = 1" {
- error-message
- "default-instantiation-level must be present if there " +
- "multiple instantion-level";
- reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ list df {
+ min-elements 1;
+ must "default-instantiation-level or " +
+ "count(ns-instantiation-level) = 1" {
+ error-message
+ "default-instantiation-level must be present if there " +
+ "multiple instantion-level";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ }
+
+ key "id";
+ description
+ "Identifies a DF within the scope of an NSD.";
+ reference
+ "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
+ information element";
+
+ leaf id {
+ type string;
+ description
+ "Identifies this NsDf information element. It identifies
+ a NS DF within the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ }
+
+ leaf flavour-key {
+ type leafref {
+ path "../monitored-info/id";
}
+ description
+ "Assurance parameter against which this flavour is being
+ described.
+ The key can be a combination of multiple assurance
+ parameters with a logical relationship between them.
+ The parameters should be present as a monitoredInfo
+ attribute in the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ }
+
+ list vnf-profile {
+ must "min-number-of-instances <= max-number-of-instances";
+ must "boolean(../../vnfd-id[.=current()/vnfd-id])" {
+ error-message "VNFDs in the profile has to be listed as a " +
+ "dependency of the network service " +
+ "descriptor.";
+ }
key "id";
description
- "Identifies a DF within the scope of an NSD.";
+ "VNF profile to be used for the NS flavour.";
reference
- "GS NFV IFA014: Section 6.2.2.2 Network Service Descriptor
- information element";
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
leaf id {
type string;
description
- "Identifies this NsDf information element. It identifies
- a NS DF within the NSD.";
+ "Identifier of this vnfProfile information element. It
+ uniquely identifies a VnfProfile.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
}
- leaf flavour-key {
+ leaf vnfd-id {
+ mandatory true;
type leafref {
- path "../monitored-info/id";
+ path "../../../../vnfd/id";
}
description
- "Assurance parameter against which this flavour is being
- described.
+ "References a VNFD.";
+ reference
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
+ }
- The key can be a combination of multiple assurance
- parameters with a logical relationship between them.
- The parameters should be present as a monitoredInfo
- attribute in the NSD.";
+ leaf flavour-id {
+ mandatory true;
+ type leafref {
+ path "deref(../vnfd-id)/../df/id";
+ }
+ description
+ "Identifies a flavour within the VNFD.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
}
- list vnf-profile {
- must "min-number-of-instances <= max-number-of-instances";
- must "boolean(../../vnfd-id[.=current()/vnfd-id])" {
- error-message "VNFDs in the profile has to be listed as a " +
- "dependency of the network service " +
- "descriptor.";
+ leaf instantiation-level {
+ mandatory true;
+ type leafref {
+ path "deref(../flavour-id)/../instantiation-level/id";
}
+ description
+ "Identifier of the instantiation level of the VNF DF
+ to be used for instantiation. If not present, the
+ default instantiation level as declared in the VNFD
+ shall be used.";
+ reference
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
+ }
+
+ leaf min-number-of-instances {
+ default 1;
+ type uint16;
+ description
+ "Minimum number of instances of the VNF based on this
+ VNFD that is permitted to exist for this VnfProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
+ }
+
+ leaf max-number-of-instances {
+ default 1;
+ type uint16;
+ description
+ "Maximum number of instances of the VNF based on this
+ VNFD that is permitted to exist for this VnfProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
+ }
+
+ uses local-affinity-or-anti-affinity-rule;
+
+ list affinity-or-anti-affinity-group {
key "id";
+
description
- "VNF profile to be used for the NS flavour.";
+ "Identifier(s) of the affinity or anti-affinity
+ group(s) the VnfProfile belongs to.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ element";
leaf id {
- type string;
- description
- "Identifier of this vnfProfile information element. It
- uniquely identifies a VnfProfile.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
- }
-
- leaf vnfd-id {
- mandatory true;
type leafref {
- path "/nfv/vnfd/id";
+ path "../../../affinity-or-anti-affinity-group/id";
}
- description
- "References a VNFD.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
}
+ }
- leaf flavour-id {
- mandatory true;
- type leafref {
- path "deref(../vnfd-id)/../df/id";
- }
- description
- "Identifies a flavour within the VNFD.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
+ list virtual-link-connectivity {
+ key "virtual-link-profile-id";
+
+ description
+ "Defines the connection information of the VNF, it
+ contains connection relationship between a VNF
+ connection point and a NS Virtual Link.";
+ reference
+ "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
element";
- }
- leaf instantiation-level {
- mandatory true;
+ leaf virtual-link-profile-id {
type leafref {
- path "deref(../flavour-id)/../instantiation-level/id";
+ path "../../../virtual-link-profile/id";
}
description
- "Identifier of the instantiation level of the VNF DF
- to be used for instantiation. If not present, the
- default instantiation level as declared in the VNFD
- shall be used.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
- }
-
- leaf min-number-of-instances {
- default 1;
- type uint16;
- description
- "Minimum number of instances of the VNF based on this
- VNFD that is permitted to exist for this VnfProfile.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
- }
-
- leaf max-number-of-instances {
- default 1;
- type uint16;
- description
- "Maximum number of instances of the VNF based on this
- VNFD that is permitted to exist for this VnfProfile.";
+ "Reference an NS VL profile.";
reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
+ information element.";
}
- uses local-affinity-or-anti-affinity-rule;
-
- list affinity-or-anti-affinity-group {
- key "id";
+ list constituent-cpd-id {
+ key "constituent-base-element-id";
description
- "Identifier(s) of the affinity or anti-affinity
- group(s) the VnfProfile belongs to.";
+ "Describes a connection point on a VNF/PNF or a SAP
+ which connects to virtual links instantiated from
+ the profile identified in the virtualLinkProfileId
+ attribute.";
reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7
+ NsVirtualLinkConnectivity information element";
- leaf id {
+ leaf constituent-base-element-id {
type leafref {
- path "../../../affinity-or-anti-affinity-group/id";
+ path "../../../id";
}
+ description
+ "Reference to the profile of an NS constituent.";
+ reference
+ "GS NFV IFA014: Section 6.4.8
+ CpdInConstituentElement information element";
}
- }
-
- list virtual-link-connectivity {
- key "virtual-link-profile-id";
-
- description
- "Defines the connection information of the VNF, it
- contains connection relationship between a VNF
- connection point and a NS Virtual Link.";
- reference
- "GS NFV IFA014: Section 6.3.3.2 VnfProfile information
- element";
- leaf virtual-link-profile-id {
+ leaf constituent-cpd-id {
type leafref {
- path "../../../virtual-link-profile/id";
+ path "deref(../../../vnfd-id)/../ext-cpd/id";
}
description
- "Reference an NS VL profile.";
+ "A reference to the descriptor of a connection point
+ attached to one of the constituent VNFs and PNFs or to
+ the descriptor of a NS SAP.";
reference
- "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
- information element.";
+ "GS NFV IFA014: Section 6.4.4.2 CpdPool information
+ element";
}
+ }
+ }
+ }
- list constituent-cpd-id {
- key "constituent-base-element-id";
-
- description
- "Describes a connection point on a VNF/PNF or a SAP
- which connects to virtual links instantiated from
- the profile identified in the virtualLinkProfileId
- attribute.";
- reference
- "GS NFV IFA014: Section 6.3.7
- NsVirtualLinkConnectivity information element";
+ list pnf-profile {
+ key "id";
+ must "boolean(../../pnfd-id[.=current()/pnfd-id])" {
+ error-message "PNFDs in the profile has to be listed as a " +
+ "dependency of the network service " +
+ "descriptor.";
+ }
- leaf constituent-base-element-id {
- type leafref {
- path "../../../id";
- }
- description
- "Reference to the profile of an NS constituent.";
- reference
- "GS NFV IFA014: Section 6.4.8
- CpdInConstituentElement information element";
- }
+ leaf id {
+ type string;
+ description
+ "Identifier of this PnfProfile information element.
+ It uniquely identifies a PnfProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
+ element";
+ }
- leaf constituent-cpd-id {
- type leafref {
- path "deref(../../../vnfd-id)/../nfv:ext-cpd/nfv:id";
- }
- description
- "A reference to the descriptor of a connection point
- attached to one of the constituent VNFs and PNFs or to
- the descriptor of a NS SAP.";
- reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool information
- element";
- }
- }
+ leaf pnfd-id {
+ type leafref {
+ path "../../../../pnfd/id";
}
+ description
+ "References a PNFD.";
+ reference
+ "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
+ element";
}
- list pnf-profile {
- key "id";
- must "boolean(../../pnfd-id[.=current()/pnfd-id])" {
- error-message "PNFDs in the profile has to be listed as a " +
- "dependency of the network service " +
- "descriptor.";
- }
+ list virtual-link-connectivity {
+ key "virtual-link-profile-id";
- leaf id {
- type string;
- description
- "Identifier of this PnfProfile information element.
- It uniquely identifies a PnfProfile.";
- reference
- "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
- element";
- }
+ description
+ "Defines the connection information of the PNF, it
+ contains connection relationship between a PNF
+ connection point and a NS Virtual Link.";
+ reference
+ "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
+ element";
- leaf pnfd-id {
+ leaf virtual-link-profile-id {
type leafref {
- path "/nfv/pnfd/id";
+ path "../../../virtual-link-profile/id";
}
description
- "References a PNFD.";
+ "Reference an NS VL profile.";
reference
- "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
+ information element.";
}
- list virtual-link-connectivity {
- key "virtual-link-profile-id";
+ list constituent-cpd-id {
+ key "constituent-base-element-id";
description
- "Defines the connection information of the PNF, it
- contains connection relationship between a PNF
- connection point and a NS Virtual Link.";
+ "Describes a connection point on a VNF/PNF or a SAP
+ which connects to virtual links instantiated from
+ the profile identified in the virtualLinkProfileId
+ attribute.";
reference
- "GS NFV IFA014: Section 6.3.6.2 PnfProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7
+ NsVirtualLinkConnectivity information element";
- leaf virtual-link-profile-id {
+ leaf constituent-base-element-id {
type leafref {
- path "../../../virtual-link-profile/id";
+ path "../../../id";
}
description
- "Reference an NS VL profile.";
+ "Reference to the profile of an NS constituent.";
reference
- "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
- information element.";
+ "GS NFV IFA014: Section 6.4.8
+ CpdInConstituentElement information element";
}
- list constituent-cpd-id {
- key "constituent-base-element-id";
-
+ leaf constituent-cpd-id {
+ type leafref {
+ path "deref(../../../pnfd-id)/../ext-cpd/id";
+ }
description
- "Describes a connection point on a VNF/PNF or a SAP
- which connects to virtual links instantiated from
- the profile identified in the virtualLinkProfileId
- attribute.";
+ "A reference to the descriptor of a connection point
+ attached to one of the constituent VNFs and PNFs or to
+ the descriptor of a NS SAP.";
reference
- "GS NFV IFA014: Section 6.3.7
- NsVirtualLinkConnectivity information element";
-
- leaf constituent-base-element-id {
- type leafref {
- path "../../../id";
- }
- description
- "Reference to the profile of an NS constituent.";
- reference
- "GS NFV IFA014: Section 6.4.8
- CpdInConstituentElement information element";
- }
-
- leaf constituent-cpd-id {
- type leafref {
- path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id";
- }
- description
- "A reference to the descriptor of a connection point
- attached to one of the constituent VNFs and PNFs or to
- the descriptor of a NS SAP.";
- reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool information
- element";
- }
+ "GS NFV IFA014: Section 6.4.4.2 CpdPool information
+ element";
}
}
}
+ }
- list virtual-link-profile {
- key "id";
+ list virtual-link-profile {
+ key "id";
+ description
+ "VL profile to be used for the NS flavour.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+
+ leaf id {
+ type string;
description
- "VL profile to be used for the NS flavour.";
+ "Uniquely identifies this VirtualLinkProfile
+ information element.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
+ information element";
+ }
- leaf id {
- type string;
- description
- "Uniquely identifies this VirtualLinkProfile
- information element.";
- reference
- "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
- information element";
+ leaf virtual-link-desc-id {
+ mandatory true;
+ type leafref {
+ path "../../../virtual-link-desc/id";
}
+ description
+ "Uniquely references a VLD.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
+ information element";
+ }
- leaf virtual-link-desc-id {
- mandatory true;
- type leafref {
- path "../../../virtual-link-desc/id";
- }
- description
- "Uniquely references a VLD.";
- reference
- "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
- information element";
+ leaf flavour-id {
+ mandatory true;
+ type leafref {
+ path "deref(../virtual-link-desc-id)/../df/id";
}
+ description
+ "Identifies a flavour within the VLD.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
+ information element";
+ }
- leaf flavour-id {
- mandatory true;
+ uses local-affinity-or-anti-affinity-rule;
+
+ list affinity-or-anti-affinity-group {
+ key "id";
+
+ description
+ "Identifies an affinity or anti-affinity group the
+ VLs instantiated according to the VlProfile belong
+ to.";
+ reference
+ "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
+ information element";
+
+ leaf id {
type leafref {
- path "deref(../virtual-link-desc-id)/../df/id";
+ path "../../../affinity-or-anti-affinity-group/id";
}
- description
- "Identifies a flavour within the VLD.";
- reference
- "GS NFV IFA014: Section 6.3.2.2 VirtualLinkProfile
- information element";
}
+ }
- uses local-affinity-or-anti-affinity-rule;
-
- list affinity-or-anti-affinity-group {
- key "id";
-
- description
- "Identifies an affinity or anti-affinity group the
- VLs instantiated according to the VlProfile belong
- to.";
- reference
- "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
- information element";
+ container max-bitrate-requirements {
+ description
+ "Specifies the maximum bitrate requirements for a VL
+ instantiated according to this profile.";
+ reference
+ "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
+ information element";
+ uses link-bitrate-requirements;
+ }
+ container min-bitrate-requirements {
+ description
+ "Specifies the minimum bitrate requirements for a VL
+ instantiated according to this profile.";
+ reference
+ "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
+ information element";
+ uses link-bitrate-requirements;
+ }
+ }
- leaf id {
- type leafref {
- path "../../../affinity-or-anti-affinity-group/id";
- }
- }
- }
+ list scaling-aspect {
+ key "id";
- container max-bitrate-requirements {
- description
- "Specifies the maximum bitrate requirements for a VL
- instantiated according to this profile.";
- reference
- "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
- information element";
- uses link-bitrate-requirements;
- }
- container min-bitrate-requirements {
- description
- "Specifies the minimum bitrate requirements for a VL
- instantiated according to this profile.";
- reference
- "GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
- information element";
- uses link-bitrate-requirements;
- }
+ description
+ "The scaling aspects supported by this DF of the NS.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+
+ leaf id {
+ type string;
+ description
+ "Identifier of this NsScalingAspect information element.
+ It uniquely identifies the NS scaling aspect in an
+ NSD.";
+ reference
+ "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
+ information element";
}
- list scaling-aspect {
- key "id";
+ leaf name {
+ type string;
+ description
+ "Provides a human readable name of the NS scaling
+ aspect.";
+ reference
+ "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
+ information element";
+ }
+ leaf description {
+ type string;
description
- "The scaling aspects supported by this DF of the NS.";
+ "Provides a human readable description of the NS
+ scaling aspect.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
+ information element";
+ }
- leaf id {
- type string;
- description
- "Identifier of this NsScalingAspect information element.
- It uniquely identifies the NS scaling aspect in an
- NSD.";
- reference
- "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
- information element";
+ leaf scaling-level {
+ type leafref {
+ path "../../ns-instantiation-level/id";
}
+ description
+ "Describes the details of an NS level.";
+ reference
+ "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
+ information element";
+ }
+ }
- leaf name {
- type string;
- description
- "Provides a human readable name of the NS scaling
- aspect.";
- reference
- "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
- information element";
- }
+ list affinity-or-anti-affinity-group {
+ key "id";
- leaf description {
- type string;
- description
- "Provides a human readable description of the NS
- scaling aspect.";
- reference
- "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
- information element";
- }
+ description
+ "Specifies affinity or anti-affinity relationship
+ applicable between the VNF instances created using
+ different VNFDs, the Virtual Link instances created
+ using different NsVirtualLinkDescs or the nested NS
+ instances created using different NSDs in the same
+ affinity or anti-affinity group.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
- leaf scaling-level {
- type leafref {
- path "../../ns-instantiation-level/id";
- }
- description
- "Describes the details of an NS level.";
- reference
- "GS NFV IFA014: Section 6.7.2.2 NsScalingAspect
- information element";
- }
+ leaf id {
+ type string;
+ description
+ "Identifier of Identifier of this
+ AffinityOrAntiAffinityGroup information element.";
+ reference
+ "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
+ information element";
}
- list affinity-or-anti-affinity-group {
- key "id";
+ leaf type {
+ mandatory true;
+ type affinity-type;
+ description
+ "Specifies the type of relationship that the members of
+ the group have: 'affinity' or 'anti-affinity.'";
+ reference
+ "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
+ information element";
+ }
+ leaf scope {
+ mandatory true;
+ type affinity-scope;
description
- "Specifies affinity or anti-affinity relationship
- applicable between the VNF instances created using
- different VNFDs, the Virtual Link instances created
- using different NsVirtualLinkDescs or the nested NS
- instances created using different NSDs in the same
- affinity or anti-affinity group.";
+ "Specifies the scope of the affinity or anti-affinity
+ relationship e.g. a NFVI node, an NFVI PoP, etc.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
+ information element";
+ }
+ }
- leaf id {
- type string;
- description
- "Identifier of Identifier of this
- AffinityOrAntiAffinityGroup information element.";
- reference
- "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
- information element";
- }
+ list ns-instantiation-level {
+ min-elements 1;
+ key "id";
- leaf affinity-type {
- mandatory true;
- type affinity-type;
+ description
+ "Describes the details of an NS level.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element
+ GS NFV IFA014: Section 6.7.2.2 NsScaling information
+ element";
+
+ leaf id {
+ type string;
+ description
+ "Identifier of this NsLevel information element. It
+ uniquely identifies an NS level within the DF.";
+ reference
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ element";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Human readable description of the NS level.";
+ reference
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ element";
+ }
+
+ list vnf-to-level-mapping {
+ key "vnf-profile-id";
+
+ description
+ "Specifies the profile of the VNFs involved in this NS
+ level and, for each of them, the required number of
+ instances.";
+ reference
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ element";
+
+ leaf vnf-profile-id {
+ type leafref {
+ path "../../../vnf-profile/id";
+ }
description
- "Specifies the type of relationship that the members of
- the group have: 'affinity' or 'anti-affinity.'";
+ "Identifies the profile to be used for a VNF
+ involved in an NS level.";
reference
- "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
+ "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
information element";
}
- leaf affinity-scope {
- mandatory true;
- type affinity-scope;
+ leaf number-of-instances {
+ default 1;
+ type uint32;
description
- "Specifies the scope of the affinity or anti-affinity
- relationship e.g. a NFVI node, an NFVI PoP, etc.";
+ "Specifies the number of VNF instances required for
+ an NS level.";
reference
- "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity
+ "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
information element";
}
}
- list ns-instantiation-level {
- min-elements 1;
- key "id";
+ list virtual-link-to-level-mapping {
+ key "virtual-link-profile-id";
description
- "Describes the details of an NS level.";
+ "Specifies the profile of the VLs involved in this NS
+ level and, for each of them, the needed bandwidth.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element
- GS NFV IFA014: Section 6.7.2.2 NsScaling information
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
element";
- leaf id {
- type string;
+ leaf virtual-link-profile-id {
+ type leafref {
+ path "../../../virtual-link-profile/id";
+ }
description
- "Identifier of this NsLevel information element. It
- uniquely identifies an NS level within the DF.";
+ "Identifies the profile to be used for a VL involved
+ in an NS level.";
reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
- element";
+ "GS NFV IFA014: Section 6.7.5.2
+ VirtualLinkToLevelMapping information element";
}
- leaf description {
- type string;
- description
- "Human readable description of the NS level.";
- reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
- element";
- }
+ uses link-bitrate-requirements;
+ }
+
+ list ns-to-level-mapping {
+ key "ns-profile-id";
- list vnf-to-level-mapping {
- key "vnf-profile-id";
+ description
+ "Specifies the profile of the nested NSs involved in
+ this NS level and, for each of them, the required
+ number of instances.";
+ reference
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ element";
+ leaf ns-profile-id {
+ type leafref {
+ path "../../../ns-profile/id";
+ }
description
- "Specifies the profile of the VNFs involved in this NS
- level and, for each of them, the required number of
- instances.";
+ "Identifies the profile to be used for a nested NS
+ involved in the NS level.";
reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
element";
-
- leaf vnf-profile-id {
- type leafref {
- path "../../../vnf-profile/id";
- }
- description
- "Identifies the profile to be used for a VNF
- involved in an NS level.";
- reference
- "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
- information element";
- }
-
- leaf number-of-instances {
- default 1;
- type uint32;
- description
- "Specifies the number of VNF instances required for
- an NS level.";
- reference
- "GS NFV IFA014: Section 6.7.4.2 VnfToLevelMapping
- information element";
- }
}
- list virtual-link-to-level-mapping {
- key "virtual-link-profile-id";
-
+ leaf number-of-instances {
+ default 1;
+ type uint32;
description
- "Specifies the profile of the VLs involved in this NS
- level and, for each of them, the needed bandwidth.";
+ "Specifies the number of nested NS instances required
+ for the NS scale level.";
reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
element";
+ }
+ }
- leaf virtual-link-profile-id {
- type leafref {
- path "../../../virtual-link-profile/id";
- }
- description
- "Identifies the profile to be used for a VL involved
- in an NS level.";
- reference
- "GS NFV IFA014: Section 6.7.5.2
- VirtualLinkToLevelMapping information element";
- }
+ must "(count(vnf-to-level-mapping) + " +
+ "count(virtual-link-to-level-mapping) + " +
+ "count(ns-to-level-mapping)) > 0" {
+ error-message
+ "At least one attribute between " +
+ "vnf-to-level-mapping, " +
+ "virtual-link-to-level-mapping and " +
+ "ns-to-level-mapping shall be present.";
+ description
+ "At least one attribute between vnfToLevelMapping,
+ vlirtualLinkToLevelMapping and nsToLevelMapping shall
+ be present.";
+ reference
+ "GS NFV IFA014: Section 6.3.9.2 NsLevel information
+ element";
+ }
+ }
- uses link-bitrate-requirements;
- }
+ leaf default-instantiation-level {
+ type leafref {
+ path "../ns-instantiation-level/id";
+ }
+ description
+ "Identifies the NS level which represents the default NS
+ instantiation level for this DF. It shall be present if
+ there are multiple 'nsIinstantiationLevel' entries.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ }
- list ns-to-level-mapping {
- key "ns-profile-id";
+ list ns-profile {
+ must "min-number-of-instances <= max-number-of-instances" {
+ error-message
+ "min-number-of-instances has to be less than or equal" +
+ "max-number-of-instances.";
+ }
+ must "boolean(../../nested-nsd-id[.=current()/nsd-id])" {
+ error-message
+ "PNFDs in the profile has to be listed as a " +
+ "dependency of the network service " +
+ "descriptor.";
+ }
+ key "id";
- description
- "Specifies the profile of the nested NSs involved in
- this NS level and, for each of them, the required
- number of instances.";
- reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
- element";
+ description
+ "Specifies a NS Profile supported by this NS DF.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
- leaf ns-profile-id {
- type leafref {
- path "../../../ns-profile/id";
- }
- description
- "Identifies the profile to be used for a nested NS
- involved in the NS level.";
- reference
- "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
- element";
- }
+ leaf id {
+ type string;
+ description
+ "Identifies an NS profile.";
+ reference
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
+ }
- leaf number-of-instances {
- default 1;
- type uint32;
- description
- "Specifies the number of nested NS instances required
- for the NS scale level.";
- reference
- "GS NFV IFA014: Section 6.7.6.2 NsToLevel information
- element";
- }
+ leaf nsd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../nsd/id";
}
+ description
+ "Identifies the NSD applicable to NS instantiated
+ according to this profile.";
+ reference
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
+ }
- must "(count(vnf-to-level-mapping) + " +
- "count(virtual-link-to-level-mapping) + " +
- "count(ns-to-level-mapping)) > 0" {
- error-message "At least one attribute between " +
- "vnf-to-level-mapping, " +
- "virtual-link-to-level-mapping and " +
- "ns-to-level-mapping shall be present.";
- description
- "At least one attribute between vnfToLevelMapping,
- vlirtualLinkToLevelMapping and nsToLevelMapping shall
- be present.";
- reference
- "GS NFV IFA014: Section 6.3.9.2 NsLevel information
- element";
+ leaf ns-df-id {
+ mandatory true;
+ type leafref {
+ path "deref(../nsd-id)/../df/id";
}
+ description
+ "Identifies the applicable network service DF within
+ the scope of the NSD.";
+ reference
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
}
- leaf default-instantiation-level {
+ leaf instantiation-level-id {
+ mandatory true;
type leafref {
- path "../ns-instantiation-level/id";
+ path "deref(../ns-df-id)/../ns-instantiation-level/id";
}
description
- "Identifies the NS level which represents the default NS
- instantiation level for this DF. It shall be present if
- there are multiple 'nsIinstantiationLevel' entries.";
+ "Identifies the NS level within the referenced NS DF to
+ be used in the context of the parent NS instantiation.
+ If not present, the default NS instantiation level as
+ declared in the referenced NSD shall be used.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
}
- list ns-profile {
- must "min-number-of-instances <= max-number-of-instances" {
- error-message
- "min-number-of-instances has to be less than or equal" +
- "max-number-of-instances.";
- }
- must "boolean(../../nested-nsd-id[.=current()/nsd-id])" {
- error-message "PNFDs in the profile has to be listed as a " +
- "dependency of the network service " +
- "descriptor.";
- }
+ leaf min-number-of-instances {
+ type uint16;
+ default 1;
+ description
+ "Minimum number of nested NS instances based on the
+ referenced NSD that is permitted to exist for this
+ NsProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
+ }
+
+ leaf max-number-of-instances {
+ type uint16;
+ default 1;
+ description
+ "Maximum number of nested NS instances based on the
+ referenced NSD that is permitted to exist for this
+ NsProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
+ }
+
+ list affinity-or-anti-affinity-group-id {
key "id";
description
- "Specifies a NS Profile supported by this NS DF.";
+ "Identifies an affinity or anti-affinity group the NSs
+ created according to this NsProfile belongs to.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.11.2 NsProfile information
+ element";
leaf id {
- type string;
- description
- "Identifies an NS profile.";
- reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
- }
- leaf nsd-id {
- mandatory true;
- type leafref {
- path "/nfv/nsd/id";
- }
- description
- "Identifies the NSD applicable to NS instantiated
- according to this profile.";
- reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
- }
- leaf ns-df-id {
- mandatory true;
type leafref {
- path "deref(../nsd-id)/../df/id";
+ path "../../../affinity-or-anti-affinity-group/id";
}
- description
- "Identifies the applicable network service DF within
- the scope of the NSD.";
- reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
}
- leaf instantiation-level-id {
- mandatory true;
+ }
+
+ list virtual-link-connectivity {
+ key "virtual-link-profile-id";
+
+ leaf virtual-link-profile-id {
type leafref {
- path "deref(../ns-df-id)/../ns-instantiation-level/id";
+ path "../../../virtual-link-profile/id";
}
description
- "Identifies the NS level within the referenced NS DF to
- be used in the context of the parent NS instantiation.
- If not present, the default NS instantiation level as
- declared in the referenced NSD shall be used.";
- reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
- }
-
- leaf min-number-of-instances {
- type uint16;
- default 1;
- description
- "Minimum number of nested NS instances based on the
- referenced NSD that is permitted to exist for this
- NsProfile.";
- reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
- }
- leaf max-number-of-instances {
- type uint16;
- default 1;
- description
- "Maximum number of nested NS instances based on the
- referenced NSD that is permitted to exist for this
- NsProfile.";
+ "Reference an NS VL profile.";
reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
+ information element.";
}
- list affinity-or-anti-affinity-group-id {
- key "id";
+ list constituent-cpd-id {
+ key "constituent-base-element-id";
description
- "Identifies an affinity or anti-affinity group the NSs
- created according to this NsProfile belongs to.";
+ "Describes a connection point on a VNF/PNF or a SAP
+ which connects to virtual links instantiated from
+ the profile identified in the virtualLinkProfileId
+ attribute.";
reference
- "GS NFV IFA014: Section 6.3.11.2 NsProfile information
- element";
+ "GS NFV IFA014: Section 6.3.7
+ NsVirtualLinkConnectivity information element";
- leaf id {
+ leaf constituent-base-element-id {
type leafref {
- path "../../../affinity-or-anti-affinity-group/id";
+ path "../../../id";
}
+ description
+ "Reference to the profile of an NS constituent.";
+ reference
+ "GS NFV IFA014: Section 6.4.8
+ CpdInConstituentElement information element";
}
- }
-
- list virtual-link-connectivity {
- key "virtual-link-profile-id";
- leaf virtual-link-profile-id {
+ leaf constituent-cpd-id {
type leafref {
- path "../../../virtual-link-profile/id";
+ path "deref(../../../nsd-id)/../sapd/id";
}
description
- "Reference an NS VL profile.";
+ "A reference to the descriptor of a connection point
+ attached to one of the constituent VNFs and PNFs or to
+ the descriptor of a NS SAP.";
reference
- "GS NFV IFA014: Section 6.3.7.2, NsVirutalLinkConnectivity
- information element.";
+ "GS NFV IFA014: Section 6.4.4.2 CpdPool information
+ element";
}
+ }
+ }
+ }
- list constituent-cpd-id {
- key "constituent-base-element-id";
+ list dependencies {
+ key "id";
- description
- "Describes a connection point on a VNF/PNF or a SAP
- which connects to virtual links instantiated from
- the profile identified in the virtualLinkProfileId
- attribute.";
- reference
- "GS NFV IFA014: Section 6.3.7
- NsVirtualLinkConnectivity information element";
+ description
+ "Specifies the order in which instances of the VNFs and/or
+ nested NSs have to be created.";
+ reference
+ "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
- leaf constituent-base-element-id {
- type leafref {
- path "../../../id";
- }
- description
- "Reference to the profile of an NS constituent.";
- reference
- "GS NFV IFA014: Section 6.4.8
- CpdInConstituentElement information element";
- }
+ leaf id {
+ type string;
+ }
- leaf constituent-cpd-id {
- type leafref {
- path "deref(../../../nsd-id)/../nfv:sapd/nfv:id";
- }
- description
- "A reference to the descriptor of a connection point
- attached to one of the constituent VNFs and PNFs or to
- the descriptor of a NS SAP.";
- reference
- "GS NFV IFA014: Section 6.4.4.2 CpdPool information
- element";
- }
+ choice primary-id {
+ leaf primary-vnf-profile {
+ type leafref {
+ path "../../vnf-profile/vnfd-id";
}
- }
- }
-
- list dependencies {
- key "id";
-
+ }
+ leaf primary-ns-profile {
+ type leafref {
+ path "../../ns-profile/nsd-id";
+ }
+ }
description
- "Specifies the order in which instances of the VNFs and/or
- nested NSs have to be created.";
+ "References a VnfProfile or NsProfile.";
reference
- "GS NFV IFA014: Section 6.3.2.2 NsDf information element";
+ "GS NFV IFA014: Section 6.3.12.2 Dependencies
+ information element";
+ }
- leaf id {
- type string;
+ choice secondary-id {
+ leaf secondary-vnf-profile {
+ type leafref {
+ path "../../vnf-profile/vnfd-id";
+ }
}
- choice primary-id {
- leaf primary-vnf-profile {
- type leafref {
- path "../../vnf-profile/vnfd-id";
- }
+ leaf secondary-ns-profile {
+ type leafref {
+ path "../../ns-profile/nsd-id";
}
- leaf primary-ns-profile {
- type leafref {
- path "../../ns-profile/nsd-id";
- }
+ }
+ description
+ "References a VnfProfile or NsProfile.";
+ reference
+ "GS NFV IFA014: Section 6.3.12.2 Dependencies
+ information element";
+ }
+ }
+
+ list monitored-info {
+ key "id";
+
+ leaf id {
+ type string;
+ }
+
+ container vnf-indicator-info {
+ leaf vnfd-id {
+ type leafref {
+ path "../../../../../vnfd/id";
}
description
- "References a VnfProfile or NsProfile.";
+ "Identifies a VNFD.";
reference
- "GS NFV IFA014: Section 6.3.12.2 Dependencies
+ "GS NFV IFA014: Section 6.2.7.2 VnfIndicatorData
information element";
}
- choice secondary-id {
- leaf secondary-vnf-profile {
- type leafref {
- path "../../vnf-profile/vnfd-id";
- }
- }
- leaf secondary-ns-profile {
- type leafref {
- path "../../ns-profile/nsd-id";
- }
+
+ leaf vnf-indicator {
+ mandatory true;
+ type leafref {
+ path "deref(../vnfd-id)/../indicator/id";
}
description
- "References a VnfProfile or NsProfile.";
+ "Identifies a VNF indicator within the VNFD.";
reference
- "GS NFV IFA014: Section 6.3.12.2 Dependencies
+ "GS NFV IFA014: Section 6.2.7.2 VnfIndicatorData
information element";
}
+ description
+ "Uniquely identifies this VNF Indicator information
+ element.";
+ reference
+ "GS NFV IFA014: Section 6.2.6.2 MonitoredData
+ information element";
}
- list monitored-info {
- key "id";
-
+ // monitoringParameter in IFA014 is defined by MonitoredData
+ // whereas monitoringParameter in IFA011 is defined by
+ // MonitoringParameter.
+ container monitoring-parameter {
leaf id {
type string;
+ description
+ "Unique identifier of this monitoring parameter
+ information element.";
+ reference
+ "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
+ information element";
}
- container vnf-indicator-info {
- leaf vnfd-id {
- type leafref {
- path "/nfv/vnfd/id";
- }
- description
- "Identifies a VNFD.";
- reference
- "GS NFV IFA014: Section 6.2.7.2 VnfIndicatorData
- information element";
- }
- leaf vnf-indicator {
- mandatory true;
- type leafref {
- path "deref(../vnfd-id)/../indicator/id";
- }
- description
- "Identifies a VNF indicator within the VNFD.";
- reference
- "GS NFV IFA014: Section 6.2.7.2 VnfIndicatorData
- information element";
- }
+ leaf name {
+ type string;
description
- "Uniquely identifies this VNF Indicator information
- element.";
+ "Human readable name of the monitoring parameter.";
reference
- "GS NFV IFA014: Section 6.2.6.2 MonitoredData
+ "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
information element";
}
- // monitoringParameter in IFA014 is defined by MonitoredData
- // whereas monitoringParameter in IFA011 is defined by
- // MonitoringParameter.
- container monitoring-parameter {
- leaf id {
- type string;
- description
- "Unique identifier of this monitoring parameter
- information element.";
- reference
- "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
- information element";
- }
-
- leaf name {
- type string;
- description
- "Human readable name of the monitoring parameter.";
- reference
- "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
- information element";
- }
-
- leaf performance-metric {
- mandatory true;
- type string;
- description
- "Defines the virtualised resource-related performance
- metric.";
- reference
- "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
- information element";
- }
+ leaf performance-metric {
+ mandatory true;
+ type string;
+ description
+ "Defines the virtualised resource-related performance
+ metric.";
+ reference
+ "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
+ information element";
+ }
- leaf collection-period {
- type string;
- description
- "An attribute that describes the periodicity at
- which to collect the performance information.";
- reference
- "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
- information element";
- }
+ leaf collection-period {
+ type string;
+ description
+ "An attribute that describes the periodicity at
+ which to collect the performance information.";
+ reference
+ "GS NFV IFA014: Section 6.2.8.2 MonitoringParameter
+ information element";
}
- }
+ }
}
- uses security-parameters;
}
+ uses security-parameters;
}
}
diff --git a/src/yang/etsi-nfv-nsd.yang b/src/yang/etsi-nfv-nsd.yang
new file mode 100644
index 0000000000000000000000000000000000000000..52cd50858104cbfdf6de45381c30bdd3f4dc4fd6
--- /dev/null
+++ b/src/yang/etsi-nfv-nsd.yang
@@ -0,0 +1,62 @@
+module etsi-nfv-nsd {
+ yang-version 1.1;
+ namespace "urn:etsi:nfv:yang:etsi-nfv-nsd";
+ prefix nsd;
+
+ import etsi-nfv-descriptors {
+ prefix vnf;
+ }
+
+ organization
+ "European Telecommunications Standards Institute (ETSI)";
+
+ description
+ "Network Services Descriptors";
+
+ revision 2019-04-25 {
+ description
+ "Initial revision.
+ NSD according to ETSI GS NFV-IFA 014 Ed261v252.";
+ }
+
+ container nsd {
+ list vnfd {
+ key "id";
+ description
+ "A VNF Descriptor (VNFD) is a deployment template which
+ describes a VNF in terms of deployment and operational
+ behaviour requirements. It also contains connectivity,
+ interface and virtualised resource requirements";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+
+ uses vnf:vnfd;
+ }
+
+ list nsd {
+ key "id";
+ max-elements 1;
+ uses vnf:nsd;
+ description
+ "The NSD information element is a deployment template whose
+ instances are used by the NFVO for the lifecycle management
+ of NSs.";
+ reference
+ "GS NFV-IFA014: Section 6.2.2, Network Service Descriptor
+ information element";
+ }
+
+ list pnfd {
+ key "id";
+
+ description
+ "The Pnfd information element is a deployment template
+ enabling on-boarding PNFs and referencing them from an
+ NSD. It focuses on connectivity aspects only.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element.";
+
+ uses vnf:pnfd;
+ }
+ }
+}
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index 48499039c3757431b4ed89d5a83bccc246d73d3e..ffe5d064004831f8c62fe68b97f6811f745dfd2a 100644
--- a/src/yang/etsi-nfv-pnf.yang
+++ b/src/yang/etsi-nfv-pnf.yang
@@ -12,7 +12,7 @@ submodule etsi-nfv-pnf {
description
"Models for PNFD according to GS NFV-IFA 014.";
- revision 2019-03-18 {
+ revision 2019-04-25 {
description
"Initial revision.
@@ -31,87 +31,91 @@ submodule etsi-nfv-pnf {
reference
"GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- list pnfd {
+ leaf id {
+ type string;
+ description
+ "Identifier of this Pnfd information element. It uniquely
+ identifies the PNFD.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ leaf function-description {
+ type string;
+ description
+ "Describes the PNF function.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ leaf provider {
+ type string;
+ description
+ "Identifies the provider of the PNFD.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ leaf version {
+ type string;
+ mandatory true;
+ description
+ "Identifies the version of the PNFD.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ leaf invariant-id {
+ type string;
+ description
+ "Identifies a PNFD in a version independent manner. This
+ attribute is invariant across versions of PNFD.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ leaf name {
+ type string;
+ description
+ "Provides the human readable name of the PNFD.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ list ext-cpd {
key "id";
+ uses cpd;
+ description
+ "Specifies the characteristics of one or more connection
+ points where to connect the PNF to a VL.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
+
+ list security {
+ key "signature";
+ uses security-parameters;
+ description
+ "Provides a signature to prevent tampering.
+ Editor's Note: While IFA014 does specify that the PNFD
+ includes a security parameter. SOL001 does not have one.
+ We need to harmonize SOL001 & SOL006 on this point.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
+ }
- leaf id {
- type string;
- description
- "Identifier of this Pnfd information element. It uniquely
- identifies the PNFD.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf function-description {
- type string;
- description
- "Describes the PNF function.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf provider {
- type string;
- description
- "Identifies the provider of the PNFD.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf version {
- type string;
- mandatory true;
- description
- "Identifies the version of the PNFD.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf invariant-id {
- type string;
- description
- "Identifies a PNFD in a version independent manner. This
- attribute is invariant across versions of PNFD.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf name {
- type string;
- description
- "Provides the human readable name of the PNFD.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- list ext-cpd {
- key "id";
- uses cpd;
- description
- "Specifies the characteristics of one or more connection
- points where to connect the PNF to a VL.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- list security {
- key "signature";
- uses security-parameters;
- description
- "Provides a signature to prevent tampering.
- Editor's Note: While IFA014 does specify that the PNFD
- includes a security parameter. SOL001 does not have one.
- We need to harmonize SOL001 & SOL006 on this point.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- leaf geographical-location-info {
- type string;
- description
- "It provides information about the geographical location
- (e.g. geographic coordinates or address of the building,
- etc.) of the PNF. The cardinality 0 is used when the
- location is unknown.
- Editor's Note: The type is TBD in SOL001. We need to make
- a common SOL001/SOL006 decision.";
- reference
- "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
- }
- uses security-group-rule;
+ leaf geographical-location-info {
+ type string;
+ description
+ "It provides information about the geographical location
+ (e.g. geographic coordinates or address of the building,
+ etc.) of the PNF. The cardinality 0 is used when the
+ location is unknown.
+ Editor's Note: The type is TBD in SOL001. We need to make
+ a common SOL001/SOL006 decision.";
+ reference
+ "GS NFV-IFA014: Section 6.6.2, Pnfd information element";
}
+ uses security-group-rule;
}
}
diff --git a/src/yang/etsi-nfv-pnfd.yang b/src/yang/etsi-nfv-pnfd.yang
new file mode 100644
index 0000000000000000000000000000000000000000..a365e0189d31d9342ab067369ec328691cd22563
--- /dev/null
+++ b/src/yang/etsi-nfv-pnfd.yang
@@ -0,0 +1,26 @@
+module etsi-nfv-pnfd {
+ yang-version 1.1;
+ namespace "urn:etsi:nfv:yang:etsi-nfv-pnfd";
+ prefix pnfd;
+
+ import etsi-nfv-descriptors {
+ prefix vnf;
+ }
+
+ organization
+ "European Telecommunications Standards Institute (ETSI)";
+
+ description
+ "Physcial Network Function Descriptor.";
+
+ revision 2019-04-25 {
+ description
+ "Initial revision.
+ NSD according to ETSI GS NFV-IFA 014 Ed261v252.";
+ }
+
+ container pnfd {
+ presence "PNFD container.";
+ uses vnf:pnfd;
+ }
+}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 38ab691f29d74a2a0743ce52fde76ae1c6f22f4b..43c11095fa644be600e48c843e9c5fca838e2be8 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -86,568 +86,646 @@ submodule etsi-nfv-vnf {
"GS NFV-IFA011: Section 7.1.6.6,
VirtualNetworkInterfaceRequirements information element";
}
-
- leaf nicio-requirements {
- type leafref {
- path "/nfv/vnfd/virtual-compute-desc/id";
- }
- description
- "This references (couples) the CPD with any logical node I/O
- requirements (for network devices) that may have been
- created. Linking these attributes is necessary so that so
- that I/O requirements that need to be articulated at the
- logical node level can be associated with the network
- interface requirements associated with the CPD.";
- reference
- "GS NFV-IFA011: Section 7.1.6.6,
- VirtualNetworkInterfaceRequirements information element";
- }
}
}
grouping vnfd {
- list vnfd {
- key "id";
+ leaf id {
+ type string;
+ description
+ "Identifier of this VNFD information element. This attribute
+ shall be globally unique. The format will be defined in the
+ data model specification phase.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf provider {
+ type string;
+ mandatory true;
+ description
+ "Provider of the VNF and of the VNFD";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf product-name {
+ type string;
+ mandatory true;
+ description
+ "Name to identify the VNF Product. Invariant for the VNF
+ Product lifetime.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf software-version {
+ type string;
+ mandatory true;
+ description
+ "Software version of the VNF. This is changed when there is
+ any change to the software that is included in the VNF
+ Package";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf version {
+ type string;
+ mandatory true;
+ description
+ "Identifies the version of the VNFD";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf product-info-name {
+ type string;
+ description
+ "Human readable name of the VNFD. Can change
+ during the VNF Product lifetime.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf product-info-description {
+ type string;
+ description
+ "Human readable description of the VNFD. Can change during
+ the VNF Product lifetime.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf-list vnfm-info {
+ type string;
+ min-elements 1;
+ description
+ "Identifies VNFM(s) compatible with the VNF described in
+ this version of the VNFD.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf localization-language {
+ type string;
description
- "A VNF Descriptor (VNFD) is a deployment template which
- describes a VNF in terms of deployment and operational
- behaviour requirements. It also contains connectivity,
- interface and virtualised resource requirements";
+ "Information about the language of the VNF.";
reference
"GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ leaf default-localization-language {
+ when "../localization-language";
+ type string;
+ description
+ "Default localization language that is instantiated if no
+ information about selected localization language is
+ available. Shall be present if 'localization-language'
+ is present and shall be absent otherwise.";
+ reference
+ "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ }
+
+ list vdu {
+ key "id";
+ min-elements 1;
+ description
+ "The Virtualisation Deployment Unit (VDU) is a construct supporting
+ the description of the deployment and operational behaviour of a
+ VNF component, or the entire VNF if it was not componentized in
+ components.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD information element";
+
leaf id {
type string;
description
- "Identifier of this VNFD information element. This attribute
- shall be globally unique. The format will be defined in the
- data model specification phase.";
- reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
- }
- leaf provider {
- type string;
- mandatory true;
- description
- "Provider of the VNF and of the VNFD";
+ "Unique identifier of this VDU in VNFD.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
}
- leaf product-name {
+
+ leaf name {
type string;
mandatory true;
description
- "Name to identify the VNF Product. Invariant for the VNF
- Product lifetime.";
+ "Human readable name of the VDU.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
}
- leaf software-version {
+
+ leaf description {
type string;
- mandatory true;
description
- "Software version of the VNF. This is changed when there is
- any change to the software that is included in the VNF
- Package";
+ "Human readable description of the VDU.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
}
- leaf version {
- type string;
- mandatory true;
+
+ list int-cpd {
+ key "id";
+ min-elements 1;
description
- "Identifies the version of the VNFD";
+ "A internal-connection-point element is a type of
+ connection point and describes network connectivity
+ between a VDU instance and an internal Virtual Link or
+ an external connection point.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
+
+ leaf int-virtual-link-desc {
+ type leafref {
+ path "../../../int-virtual-link-desc/id";
+ }
+ description
+ "Reference of the internal VLD which this internal CPD
+ connects to.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.4, VduCpd information
+ element";
+ }
+
+ leaf bitrate-requirement {
+ type uint64;
+ units "Mbps";
+ description
+ "Bitrate requirement on this CP.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.4, VduCpd information
+ element.";
+ }
+ uses virtual-network-interface-requirements;
+
+ leaf nicio-requirements {
+ type leafref {
+ path "../../../virtual-compute-desc/id";
+ }
+ description
+ "This references (couples) the CPD with any logical node I/O
+ requirements (for network devices) that may have been
+ created. Linking these attributes is necessary so that so
+ that I/O requirements that need to be articulated at the
+ logical node level can be associated with the network
+ interface requirements associated with the CPD.";
+ reference
+ "GS NFV-IFA011: Section 7.1.6.6,
+ VirtualNetworkInterfaceRequirements information element";
+ }
+
+ leaf-list order {
+ type uint32;
+ description
+ "The order of the NIC to be assigned on the compute
+ instance (e.g. 2 for eth2).
+
+ Note: when binding more than one port to a single
+ compute (aka multi vNICs) and ordering is desired, it
+ is mandatory that all ports will be set with an order
+ value. The order values shall represent a positive,
+ arithmetic progression that starts with 0 (i.e. 0, 1,
+ 2,..., n).
+
+ If the property is not present, it shall be left to the
+ VIM to assign a value when creating the instance.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.4, VduCpd information
+ element.";
+ }
+ uses cpd;
+
+ leaf security-group-rule-id {
+ type leafref {
+ path "../../../security-group-rule/id";
+ }
+ description
+ "Reference of the security group rules bound to this
+ CPD.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ }
}
- leaf product-info-name {
- type string;
+
+ leaf virtual-compute-desc {
+ type leafref {
+ path "../../virtual-compute-desc/id";
+ }
+ must "../../virtual-compute-desc[id=current()]/" +
+ "virtual-memory/size >=" +
+ "../../sw-image-desc[id=current()/" +
+ "../sw-image-desc]/min-ram" {
+ }
description
- "Human readable name of the VNFD. Can change
- during the VNF Product lifetime.";
+ "Describes CPU, Memory and acceleration requirements of
+ the Virtualisation Container realizing this VDU.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, VDU information
+ element, and Section 7.1.9.2.2, VirtualComputeDesc
+ information element.";
}
- leaf product-info-description {
- type string;
+
+ leaf-list virtual-storage-desc {
+ type leafref {
+ path "../../virtual-storage-desc/id";
+ }
description
- "Human readable description of the VNFD. Can change during
- the VNF Product lifetime.";
+ "Describes storage requirements for a VirtualStorage
+ instance attached to the virtualisation container
+ created from virtualComputeDesc defined for this VDU.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, VDU information
+ element, and Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
}
- leaf-list vnfm-info {
- type string;
- min-elements 1;
+
+ list boot-order {
+ ordered-by user;
+ key "key";
+
+ leaf key {
+ type uint32;
+ }
+
+ leaf value {
+ type leafref {
+ path "../../virtual-storage-desc";
+ }
+ }
description
- "Identifies VNFM(s) compatible with the VNF described in
- this version of the VNFD.";
+ "The key indicates the boot index (lowest index defines
+ highest boot priority). The Value references a descriptor
+ from which a valid boot device is created e.g.
+ VirtualStorageDesc from which a VirtualStorage instance
+ is created.
+
+ Editor's note: The boot-order node requires further
+ study.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information
+ element.";
}
- leaf localization-language {
- type string;
+
+ leaf sw-image-desc {
+ type leafref {
+ path "../../sw-image-desc/id";
+ }
description
- "Information about the language of the VNF.";
+ "Describes the software image which is directly loaded on
+ the virtualisation container realising this Vdu.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, Vdu information
+ element.";
}
- leaf default-localization-language {
- when "../localization-language";
+
+ leaf-list nfvi-constraint {
type string;
description
- "Default localization language that is instantiated if no
- information about selected localization language is
- available. Shall be present if 'localization-language'
- is present and shall be absent otherwise.";
+ "Describes constraints on the NFVI for the VNFC
+ instance(s) created from this Vdu. For example, aspects
+ of a secure hosting environment for the VNFC instance
+ that involve additional entities or processes.";
reference
- "GS NFV-IFA011: Section 7.1.2, VNFD information element";
+ "GS NFV IFA011: Section 7.1.6.2, VDU Information
+ element.";
}
- list vdu {
+ list monitoring-parameter {
key "id";
- min-elements 1;
- description
- "The Virtualisation Deployment Unit (VDU) is a construct supporting
- the description of the deployment and operational behaviour of a
- VNF component, or the entire VNF if it was not componentized in
- components.";
- reference
- "GS NFV IFA011: Section 7.1.2, VNFD information element";
leaf id {
type string;
description
- "Unique identifier of this VDU in VNFD.";
+ "Unique identifier of the monitoring parameter.";
reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
+ "GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
+ information element.";
}
- leaf name {
+ uses monitoring-parameter;
+ }
+
+ list configurable-properties {
+ key "key";
+ leaf key {
type string;
- mandatory true;
- description
- "Human readable name of the VDU.";
- reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
}
- leaf description {
+ leaf value {
type string;
- description
- "Human readable description of the VDU.";
- reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
}
- list int-cpd {
- key "id";
- min-elements 1;
+ description
+ "It provides VNFC configurable properties that can be
+ modified using the ModifyVnfInfo operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.7,
+ VnfcConfigurableProperties Information element.";
+ }
+
+ leaf boot-data {
+ type string;
+ description
+ "Contains a string or a URL to a file contained in the
+ VNF package used to customize a virtualised compute
+ resource at boot time. The bootData may contain variable
+ parts that are replaced by deployment specific values
+ before being sent to the VIM.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.7,
+ VnfcConfigurableProperties Information element.";
+ }
+ }
+
+ list virtual-compute-desc {
+ key "id";
+ description
+ "Defines descriptors of virtual compute resources to be
+ used by the VNF.";
+ leaf id {
+ type string;
+ description
+ "Unique identifier of this VirtualComputeDesc in the
+ VNFD.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2, Information elements
+ related to Virtual CPU.";
+ }
+
+ list logical-node {
+ key "id";
+
+ leaf id {
+ type string;
description
- "A internal-connection-point element is a type of
- connection point and describes network connectivity
- between a VDU instance and an internal Virtual Link or
- an external connection point.";
+ "Identifies this set of logical node requirements.";
reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information element";
+ "GS NFV IFA011: Section 7.1.9.6, LogicalNodeRequirements
+ Information elements.";
+ }
- leaf int-virtual-link-desc {
- type leafref {
- path "../../../nfv:int-virtual-link-desc/nfv:id";
- }
- description
- "Reference of the internal VLD which this internal CPD
- connects to.";
- reference
- "GS NFV IFA011: Section 7.1.6.4, VduCpd information
- element";
- }
+ list requirement-detail {
+ key "key";
- leaf bitrate-requirement {
- type uint64;
- units "Mbps";
- description
- "Bitrate requirement on this CP.";
- reference
- "GS NFV IFA011: Section 7.1.6.4, VduCpd information
- element.";
- }
- uses virtual-network-interface-requirements;
- leaf-list order {
- type uint32;
- description
- "The order of the NIC to be assigned on the compute
- instance (e.g. 2 for eth2).
-
- Note: when binding more than one port to a single
- compute (aka multi vNICs) and ordering is desired, it
- is mandatory that all ports will be set with an order
- value. The order values shall represent a positive,
- arithmetic progression that starts with 0 (i.e. 0, 1,
- 2,..., n).
-
- If the property is not present, it shall be left to the
- VIM to assign a value when creating the instance.";
- reference
- "GS NFV IFA011: Section 7.1.6.4, VduCpd information
- element.";
- }
- uses cpd;
- }
- leaf virtual-compute-desc {
- type leafref {
- path "../../nfv:virtual-compute-desc/nfv:id";
+ leaf key {
+ type string;
}
- must "../../nfv:virtual-compute-desc[id=current()]/" +
- "nfv:virtual-memory/size >=" +
- "../../nfv:sw-image-desc[id=current()/" +
- "../sw-image-desc]/min-ram" {
+
+ leaf value {
+ type string;
}
description
- "Describes CPU, Memory and acceleration requirements of
- the Virtualisation Container realizing this VDU.";
+ "The logical node-level compute, memory and I/O
+ requirements. An array of key-value pairs that
+ articulate the deployment requirements.
+
+ This could include the number of CPU cores on this
+ logical node, a memory configuration specific to a
+ logical node (e.g. such as available in the Linux
+ kernel via the libnuma library) or a requirement
+ related to the association of an I/O device with the
+ logical node.";
reference
- "GS NFV IFA011: Section 7.1.6.2, VDU information
- element, and Section 7.1.9.2.2, VirtualComputeDesc
+ "GS NFV IFA011: Section 7.1.9.6, LogicalNodeRequirements
information element.";
}
+ description
+ "The logical node requirements.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2, VirtualComputeDesc
+ information element.";
+ }
- leaf-list virtual-storage-desc {
- type leafref {
- path "../../nfv:virtual-storage-descriptor/" +
- "nfv:id";
- }
+ list request-additional-capability {
+ key "name";
+
+ leaf name {
+ type string;
description
- "Describes storage requirements for a VirtualStorage
- instance attached to the virtualisation container
- created from virtualComputeDesc defined for this VDU.";
+ "Identifies a requested additional capability for the
+ VDU. ETSI GS NFV-IFA 002 [i.1] describes acceleration
+ capabilities.";
reference
- "GS NFV IFA011: Section 7.1.6.2, VDU information
- element, and Section 7.1.9.4, Information elements
- related to Virtual Storage.";
+ "GS NFV IFA011: Section 7.1.9.5,
+ RequestedAdditionalCapabilityData Information element.";
}
- list boot-order {
- ordered-by user;
- key "key";
- leaf key {
- type uint32;
- }
- leaf value {
- type leafref {
- path "../../nfv:virtual-storage-desc";
- }
- }
- description
- "The key indicates the boot index (lowest index defines
- highest boot priority). The Value references a descriptor
- from which a valid boot device is created e.g.
- VirtualStorageDesc from which a VirtualStorage instance
- is created.
- Editor's note: The boot-order node requires further
- study.";
+ leaf support-mandatory {
+ type boolean;
+ description
+ "Indicates whether the requested additional capability
+ is mandatory for successful operation.";
reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information
+ "GS NFV IFA011: Section 7.1.9.5,
+ RequestedAdditionalCapabilityData Information
element.";
}
- leaf sw-image-desc {
- type leafref {
- path "../../sw-image-desc/id";
- }
+
+ leaf min-version {
+ type string;
description
- "Describes the software image which is directly loaded on
- the virtualisation container realising this Vdu.";
+ "Identifies the minimum version of the requested
+ additional capability.";
reference
- "GS NFV IFA011: Section 7.1.6.2, Vdu information
- element.";
+ "GS NFV IFA011: Section 7.1.9.5,
+ RequestedAdditionalCapabilityData Information element.";
}
- leaf-list nfvi-constraint {
+
+ leaf preferred-version {
type string;
description
- "Describes constraints on the NFVI for the VNFC
- instance(s) created from this Vdu. For example, aspects
- of a secure hosting environment for the VNFC instance
- that involve additional entities or processes.";
+ "Identifies the preferred version of the requested
+ additional capability.";
reference
- "GS NFV IFA011: Section 7.1.6.2, VDU Information
- element.";
- }
- list monitoring-parameter {
- key "id";
- leaf id {
- type string;
- description
- "Unique identifier of the monitoring parameter.";
- reference
- "GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
- information element.";
- }
- uses monitoring-parameter;
+ "GS NFV IFA011: Section 7.1.9.5,
+ RequestedAdditionalCapabilityData Information element.";
}
- list configurable-properties {
+
+ list target-performance-parameters {
key "key";
+
leaf key {
type string;
}
+
leaf value {
type string;
}
description
- "It provides VNFC configurable properties that can be
- modified using the ModifyVnfInfo operation.";
- reference
- "GS NFV IFA011: Section 7.1.6.7,
- VnfcConfigurableProperties Information element.";
- }
- leaf boot-data {
- type string;
- description
- "Contains a string or a URL to a file contained in the
- VNF package used to customize a virtualised compute
- resource at boot time. The bootData may contain variable
- parts that are replaced by deployment specific values
- before being sent to the VIM.";
+ "Identifies specific attributes, dependent on the
+ requested additional capability type.";
reference
- "GS NFV IFA011: Section 7.1.6.7,
- VnfcConfigurableProperties Information element.";
+ "GS NFV IFA011: Section 7.1.9.5,
+ RequestedAdditionalCapabilityData Information element.";
}
}
- list virtual-compute-desc {
- key "id";
+ leaf compute-requirements {
+ type string;
description
- "Defines descriptors of virtual compute resources to be
- used by the VNF.";
- leaf id {
- type string;
- description
- "Unique identifier of this VirtualComputeDesc in the
- VNFD.";
- reference
- "GS NFV IFA011: Section 7.1.9.2, Information elements
- related to Virtual CPU.";
- }
-
- list logical-node {
- key "id";
+ "Specifies compute requirements.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
+ Information element.";
+ }
- leaf id {
- type string;
- description
- "Identifies this set of logical node requirements.";
- reference
- "GS NFV IFA011: Section 7.1.9.6, LogicalNodeRequirements
- Information elements.";
+ container virtual-memory {
+ leaf size {
+ type decimal64 {
+ fraction-digits 1;
+ range "0..max";
}
+ units "GB";
+ default 1;
+ description
+ "Amount of virtual memory in GB.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.3, Information elements
+ related to Virtual Memory.";
+ }
- list requirement-detail {
- key "key";
-
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "The logical node-level compute, memory and I/O
- requirements. An array of key-value pairs that
- articulate the deployment requirements.
-
- This could include the number of CPU cores on this
- logical node, a memory configuration specific to a
- logical node (e.g. such as available in the Linux
- kernel via the libnuma library) or a requirement
- related to the association of an I/O device with the
- logical node.";
- reference
- "GS NFV IFA011: Section 7.1.9.6, LogicalNodeRequirements
- information element.";
- }
+ leaf over-subscription-policy {
+ type string;
description
- "The logical node requirements.";
+ "The memory core oversubscription policy in terms of
+ virtual memory to physical memory on the platform.
+ The cardinality can be 0 during the allocation
+ request, if no particular value is requested.";
reference
- "GS NFV IFA011: Section 7.1.9.2, VirtualComputeDesc
- information element.";
+ "GS NFV IFA011: Section 7.1.9.3, Information elements
+ related to Virtual Memory.";
}
- list request-additional-capability {
- key "name";
- leaf name {
- type string;
- description
- "Identifies a requested additional capability for the
- VDU. ETSI GS NFV-IFA 002 [i.1] describes acceleration
- capabilities.";
- reference
- "GS NFV IFA011: Section 7.1.9.5,
- RequestedAdditionalCapabilityData Information
- element.";
- }
- leaf support-mandatory {
- type boolean;
- description
- "Indicates whether the requested additional capability
- is mandatory for successful operation.";
- reference
- "GS NFV IFA011: Section 7.1.9.5,
- RequestedAdditionalCapabilityData Information
- element.";
- }
+ list vdu-mem-requirements {
+ key "key";
- leaf min-version {
+ leaf key {
type string;
- description
- "Identifies the minimum version of the requested
- additional capability.";
- reference
- "GS NFV IFA011: Section 7.1.9.5,
- RequestedAdditionalCapabilityData Information
- element.";
}
- leaf preferred-version {
+ leaf value {
type string;
- description
- "Identifies the preferred version of the requested
- additional capability.";
- reference
- "GS NFV IFA011: Section 7.1.9.5,
- RequestedAdditionalCapabilityData Information
- element.";
- }
- list target-performance-parameters {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Identifies specific attributes, dependent on the
- requested additional capability type.";
- reference
- "GS NFV IFA011: Section 7.1.9.5,
- RequestedAdditionalCapabilityData Information
- element.";
}
+ description
+ "Array of key-value pair requirements on the memory for
+ the VDU.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.3.2, VirtualMemoryData
+ information element.";
}
- leaf compute-requirements {
+ leaf numa-enabled {
+ type boolean;
+ description
+ "It specifies the memory allocation to be cognisant of
+ the relevant process/core allocation. The cardinality
+ can be 0 during the allocation request, if no
+ particular value is requested.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.3, Information elements
+ related to Virtual Memory.";
+ }
+ description
+ "The virtual memory of the virtualised compute.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
+ Information element.";
+ }
+
+ container virtual-cpu {
+ description
+ "The virtual CPU(s)of the virtualised compute.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
+ Information element.";
+
+ leaf cpu-architecture {
type string;
description
- "Specifies compute requirements.";
+ "CPU architecture type. Examples are x86, ARM. The
+ cardinality can be 0 during the allocation request,
+ if no particular CPU architecture type is requested.";
reference
- "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
- Information element.";
+ "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
+ information elements.";
}
- container virtual-memory {
- leaf size {
- type decimal64 {
- fraction-digits 1;
- range "0..max";
- }
- units "GB";
- mandatory true;
- description
- "Amount of virtual memory in GB.";
- reference
- "GS NFV IFA011: Section 7.1.9.3, Information elements
- related to Virtual Memory.";
- }
- leaf over-subscription-policy {
- type string;
- description
- "The memory core oversubscription policy in terms of
- virtual memory to physical memory on the platform.
- The cardinality can be 0 during the allocation
- request, if no particular value is requested.";
- reference
- "GS NFV IFA011: Section 7.1.9.3, Information elements
- related to Virtual Memory.";
- }
- list vdu-mem-requirements {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of key-value pair requirements on the memory for
- the VDU.";
- reference
- "GS NFV IFA011: Section 7.1.9.3.2, VirtualMemoryData
- information element.";
+ leaf num-virtual-cpu {
+ type uint16 {
+ range "1..max";
}
+ default 1;
+ description
+ "Number of virtual CPUs.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
+ information elements.";
+ }
- leaf numa-enabled {
- type boolean;
- description
- "It specifies the memory allocation to be cognisant of
- the relevant process/core allocation. The cardinality
- can be 0 during the allocation request, if no
- particular value is requested.";
- reference
- "GS NFV IFA011: Section 7.1.9.3, Information elements
- related to Virtual Memory.";
- }
+ leaf clock {
+ type uint32;
+ units "MHz";
description
- "The virtual memory of the virtualised compute.";
+ "Minimum virtual CPU clock rate (e.g. in MHz). The
+ cardinality can be 0 during the allocation request,
+ if no particular value is requested.";
reference
- "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
- Information element.";
+ "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
+ information elements.";
}
- container virtual-cpu {
+
+ leaf oversubscription-policy {
+ type string;
description
- "The virtual CPU(s)of the virtualised compute.";
+ "The CPU core oversubscription policy e.g. the relation
+ of virtual CPU cores to physical CPU cores/threads.
+ The cardinality can be 0 during the allocation request,
+ if no particular value is requested.";
reference
- "GS NFV IFA011: Section 7.1.9.2.2, VirtualComputeDesc
- Information element.";
+ "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
+ information elements.";
+ }
+
+ list vdu-cpu-requirements {
+ key "key";
- leaf cpu-architecture {
+ leaf key {
type string;
- description
- "CPU architecture type. Examples are x86, ARM. The
- cardinality can be 0 during the allocation request,
- if no particular CPU architecture type is requested.";
- reference
- "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
- information elements.";
- }
- leaf num-virtual-cpu {
- type uint16 {
- range "1..max";
- }
- default 1;
- description
- "Number of virtual CPUs.";
- reference
- "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
- information elements.";
- }
- leaf clock {
- type uint32;
- units "MHz";
- description
- "Minimum virtual CPU clock rate (e.g. in MHz). The
- cardinality can be 0 during the allocation request,
- if no particular value is requested.";
- reference
- "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
- information elements.";
}
- leaf oversubscription-policy {
+
+ leaf value {
type string;
+ }
+ description
+ "Array of key-value pair requirements on the compute
+ (CPU) for the VDU.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.3.2, VirtualCpuData
+ information element.";
+ }
+
+ container pinning {
+ presence "Set to specify CPU pinning.";
+
+ leaf policy {
+ default "dynamic";
+ type enumeration {
+ enum "static";
+ enum "dynamic";
+ }
description
- "The CPU core oversubscription policy e.g. the relation
- of virtual CPU cores to physical CPU cores/threads.
- The cardinality can be 0 during the allocation request,
- if no particular value is requested.";
+ "The policy can take values of 'static' or 'dynamic'.
+ In case of 'static' the virtual CPU cores are
+ requested to be allocated to logical CPU cores
+ according to the rules defined in
+ virtualCpuPinningRules. In case of 'dynamic' the
+ allocation of virtual CPU cores to logical CPU cores
+ is decided by the VIM. (e.g. SMT (Simultaneous
+ MultiThreading) requirements).";
reference
- "GS NFV IFA011: Section 7.1.9.2.3, VirtualCpuData
- information elements.";
+ "GS NFV IFA011: Section 7.1.9.2.4,
+ VirtualCpuPinningData information element.";
}
- list vdu-cpu-requirements {
+
+ list rule {
+ when "../policy = 'static'";
key "key";
+
leaf key {
type string;
}
@@ -655,306 +733,276 @@ submodule etsi-nfv-vnf {
type string;
}
description
- "Array of key-value pair requirements on the compute
- (CPU) for the VDU.";
+ "A list of rules that should be considered during the
+ allocation of the virtual CPUs to logical CPUs in case
+ of 'static' virtualCpuPinningPolicy.";
reference
- "GS NFV IFA011: Section 7.1.9.3.2, VirtualCpuData
- information element.";
+ "GS NFV IFA011: Section 7.1.9.2.4,
+ VirtualCpuPinningData information element.";
}
- container pinning {
- presence "Set to specify CPU pinning.";
- leaf policy {
- default "dynamic";
- type enumeration {
- enum "static";
- enum "dynamic";
- }
- description
- "The policy can take values of 'static' or 'dynamic'.
- In case of 'static' the virtual CPU cores are
- requested to be allocated to logical CPU cores
- according to the rules defined in
- virtualCpuPinningRules. In case of 'dynamic' the
- allocation of virtual CPU cores to logical CPU cores
- is decided by the VIM. (e.g. SMT (Simultaneous
- MultiThreading) requirements).";
- reference
- "GS NFV IFA011: Section 7.1.9.2.4,
- VirtualCpuPinningData information element.";
- }
+ description
+ "The virtual CPU pinning configuration for the
+ virtualised compute resource.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.2.3,
+ VirtualCpuData information element.";
+ }
+ }
+ }
- list rule {
- when "../nfv:policy = 'static'";
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "A list of rules that should be considered during the
- allocation of the virtual CPUs to logical CPUs in case
- of 'static' virtualCpuPinningPolicy.";
- reference
- "GS NFV IFA011: Section 7.1.9.2.4,
- VirtualCpuPinningData information element.";
- }
- description
- "The virtual CPU pinning configuration for the
- virtualised compute resource.";
- reference
- "GS NFV IFA011: Section 7.1.9.2.3,
- VirtualCpuData information element.";
- }
+ list virtual-storage-desc {
+ key "id";
+ description
+ "Storage requirements for a Virtual Storage instance
+ attached to the VNFC created from this VDU";
+ leaf id {
+ type string;
+ description
+ "Unique identifier of this VirtualStorageDesc in the
+ VNFD.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
+ }
+
+ leaf type-of-storage {
+ // Needed to be able to onboard images
+ default root-storage;
+ type identityref {
+ base storage-type;
}
+ description
+ "Type of virtualised storage resource (e.g. volume,
+ object).";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
}
- list virtual-storage-descriptor {
- key "id";
+ leaf size-of-storage {
+ type uint64;
+ units "GB";
+ default 0;
description
- "Storage requirements for a Virtual Storage instance
- attached to the VNFC created from this VDU";
- leaf id {
+ "Size of virtualised storage resource (e.g. size of
+ volume, in GB)";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
+ }
+
+ list vdu-storage-requirements {
+ key "key";
+
+ leaf key {
type string;
- description
- "Unique identifier of this VirtualStorageDesc in the
- VNFD.";
- reference
- "GS NFV IFA011: Section 7.1.9.4, Information elements
- related to Virtual Storage.";
}
- leaf type-of-storage {
- // Needed to be able to onboard images
- default "root-storage";
- type identityref {
- base storage-type;
- }
- description
- "Type of virtualised storage resource (e.g. volume,
- object).";
- reference
- "GS NFV IFA011: Section 7.1.9.4, Information elements
- related to Virtual Storage.";
- }
- leaf size-of-storage {
- type uint64;
- units "GB";
- mandatory true;
- description
- "Size of virtualised storage resource (e.g. size of
- volume, in GB)";
- reference
- "GS NFV IFA011: Section 7.1.9.4, Information elements
- related to Virtual Storage.";
- }
- list vdu-storage-requirements {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of key-value pairs that articulate the storage
- deployment requirements.";
- reference
- "GS NFV IFA011: Section 7.1.9.4.2, VirtualStorageDesc
- information element.";
+ leaf value {
+ type string;
}
- leaf rdma-enabled {
- type boolean;
- description
- "Indicate if the storage support RDMA.";
- reference
- "GS NFV IFA011: Section 7.1.9.4, Information elements
- related to Virtual Storage.";
+ description
+ "Array of key-value pairs that articulate the storage
+ deployment requirements.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4.2, VirtualStorageDesc
+ information element.";
+ }
+
+ leaf rdma-enabled {
+ type boolean;
+ description
+ "Indicate if the storage support RDMA.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
+ }
+
+ leaf sw-image-desc {
+ type leafref {
+ path "../../sw-image-desc/id";
}
- leaf sw-image-desc {
- type leafref {
- path "../../sw-image-desc/id";
- }
- must "../nfv:size-of-storage >=" +
- "../../nfv:sw-image-desc[id=current()]/min-disk" {
- }
- description
- "Software image to be loaded on the VirtualStorage
- resource created based on this VirtualStorageDesc.";
- reference
- "GS NFV IFA011: Section 7.1.9.4, Information elements
- related to Virtual Storage.";
+ must "../size-of-storage >=" +
+ "../../sw-image-desc[id=current()]/min-disk" {
}
+ description
+ "Software image to be loaded on the VirtualStorage
+ resource created based on this VirtualStorageDesc.";
+ reference
+ "GS NFV IFA011: Section 7.1.9.4, Information elements
+ related to Virtual Storage.";
}
+ }
- list sw-image-desc {
- key "id";
+ list sw-image-desc {
+ key "id";
+ description
+ "Defines descriptors of software images to be used by the
+ VNF.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD Information element.";
+
+ leaf id {
+ type string;
description
- "Defines descriptors of software images to be used by the
- VNF.";
+ "The identifier of this software image.";
reference
- "GS NFV IFA011: Section 7.1.2, VNFD Information element.";
- leaf id {
- type string;
- description
- "The identifier of this software image.";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element";
- }
- leaf name {
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc information
+ element";
+ }
+
+ leaf name {
+ mandatory true;
+ type string;
+ description
+ "The name of this software image.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ information element.";
+ }
+
+ leaf version {
+ mandatory true;
+ type string;
+ description
+ "The version of this software image.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ information element.";
+ }
+
+ container checksum {
+
+ leaf algorithm {
mandatory true;
- type string;
+ type identityref {
+ base checksum-algorithm;
+ }
description
- "The name of this software image.";
+ "Species the algorithm used to obtain the checksum
+ value.";
reference
- "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ "GS NFV IFA011: Section 7.1.6.10 ChecksumData
information element.";
}
- leaf version {
- mandatory true;
+ leaf hash {
+ mandatory true;
type string;
description
- "The version of this software image.";
+ "Contains the result of applying the algorithm
+ indicated by the algorithm attribute to the data to
+ which this ChecksumData refers.";
reference
- "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ "GS NFV IFA011: Section 7.1.6.10 ChecksumData
information element.";
}
+ description
+ "The checksum of the software image file.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ information element.";
+ }
- container checksum {
-
- leaf algorithm {
- mandatory true;
- type identityref {
- base checksum-algorithm;
- }
+ leaf container-format {
+ default "bare";
+ type enumeration {
+ enum "aki" {
description
- "Species the algorithm used to obtain the checksum
- value.";
- reference
- "GS NFV IFA011: Section 7.1.6.10 ChecksumData
- information element.";
- }
-
- leaf hash {
- mandatory true;
- type string;
- description
- "Contains the result of applying the algorithm
- indicated by the algorithm attribute to the data to
- which this ChecksumData refers.";
- reference
- "GS NFV IFA011: Section 7.1.6.10 ChecksumData
- information element.";
- }
- description
- "The checksum of the software image file.";
- reference
- "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
- information element.";
- }
-
- leaf container-format {
- default "bare";
- type enumeration {
- enum "aki" {
- description
- "An Amazon kernel image.";
- }
- enum "ami" {
- description
- "An Amazon machine image.";
- }
- enum "ari" {
- description
- "An Amazon ramdisk image.";
- }
- enum "bare" {
- description
- "The image does not have a container or metadata
- envelope.";
- }
- enum "docker" {
- description
- "A docker container format.";
- }
- enum "ova" {
- description
- "An OVF package in a tarfile.";
- }
- enum "ovf" {
- description
- "The OVF container format.";
- }
+ "An Amazon kernel image.";
+ }
+ enum "ami" {
+ description
+ "An Amazon machine image.";
+ }
+ enum "ari" {
+ description
+ "An Amazon ramdisk image.";
+ }
+ enum "bare" {
+ description
+ "The image does not have a container or metadata
+ envelope.";
+ }
+ enum "docker" {
+ description
+ "A docker container format.";
+ }
+ enum "ova" {
+ description
+ "An OVF package in a tarfile.";
+ }
+ enum "ovf" {
+ description
+ "The OVF container format.";
}
- description
- "The container format describes the container file
- format in which software image is provided.";
- reference
- "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
- information element.";
}
+ description
+ "The container format describes the container file
+ format in which software image is provided.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5 SwImageDesc
+ information element.";
+ }
- leaf disk-format {
- default "qcow2";
- type enumeration {
- enum "aki" {
- description
- "An Amazon kernel image.";
- }
- enum "ami" {
- description
- "An Amazon machine image.";
- }
- enum "ari" {
- description
- "An Amazon ramdisk image.";
- }
- enum "iso" {
- description
- "An archive format for the data contents of an
- disk, such as CD-ROM.";
- }
- enum "qcow2" {
- description
- "Supported by the QEMU emulator that can expand
- dynamically and supports Copy on Write.";
- }
- enum "raw" {
- description
- "An unstructured disk image format; if you have a
- file without an extension it is possibly a raw
- format.";
- }
- enum "vdi" {
- description
- "Supported by VirtualBox virtual machine monitor
- and the QEMU emulator.";
- }
- enum "vhd" {
- description
- "The VHD disk format, a common disk format used by
- virtual machine monitors from VMware, Xen,
- Microsoft, VirtualBox, and others.";
- }
- enum "vhdx" {
- description
- "The VHDX disk format, an enhanced version of the
- VHD format, which supports larger disk sizes among
- other features.";
- }
- enum "vmdk" {
- description
- "Common disk format supported by many common virtual
- machine monitors.";
- }
+ leaf disk-format {
+ default "qcow2";
+ type enumeration {
+ enum "aki" {
+ description
+ "An Amazon kernel image.";
+ }
+ enum "ami" {
+ description
+ "An Amazon machine image.";
+ }
+ enum "ari" {
+ description
+ "An Amazon ramdisk image.";
+ }
+ enum "iso" {
+ description
+ "An archive format for the data contents of an
+ disk, such as CD-ROM.";
+ }
+ enum "qcow2" {
+ description
+ "Supported by the QEMU emulator that can expand
+ dynamically and supports Copy on Write.";
+ }
+ enum "raw" {
+ description
+ "An unstructured disk image format; if you have a
+ file without an extension it is possibly a raw
+ format.";
+ }
+ enum "vdi" {
+ description
+ "Supported by VirtualBox virtual machine monitor
+ and the QEMU emulator.";
+ }
+ enum "vhd" {
+ description
+ "The VHD disk format, a common disk format used by
+ virtual machine monitors from VMware, Xen,
+ Microsoft, VirtualBox, and others.";
+ }
+ enum "vhdx" {
+ description
+ "The VHDX disk format, an enhanced version of the
+ VHD format, which supports larger disk sizes among
+ other features.";
+ }
+ enum "vmdk" {
+ description
+ "Common disk format supported by many common virtual
+ machine monitors.";
}
- description
- "The disk format of a software image is the format of
- the underlying disk image.";
}
+ description
+ "The disk format of a software image is the format of
+ the underlying disk image.";
+ }
leaf min-disk {
type uint64;
@@ -971,1548 +1019,1634 @@ submodule etsi-nfv-vnf {
information element.";
}
- leaf min-ram {
- type decimal64 {
- fraction-digits 1;
- range "0..max";
- }
- units "GB";
- default 0;
- description
- "The minimal RAM requirement for this software image.
- The value of the 'size' attribute of
- VirtualMemoryData of the Vdu referencing this
- SwImageDesc shall not be smaller than the value of
- minRam.";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element.";
+ leaf min-ram {
+ type decimal64 {
+ fraction-digits 1;
+ range "0..max";
}
+ units "GB";
+ default 0;
+ description
+ "The minimal RAM requirement for this software image.
+ The value of the 'size' attribute of
+ VirtualMemoryData of the Vdu referencing this
+ SwImageDesc shall not be smaller than the value of
+ minRam.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
+ information element.";
+ }
- leaf size {
- mandatory true;
- type uint64;
- units "GB";
- description
- "The size of this software image.";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element.";
- }
+ leaf size {
+ mandatory true;
+ type uint64;
+ units "GB";
+ description
+ "The size of this software image.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
+ information element.";
+ }
- leaf image {
- default ".";
- type inet:uri;
- description
- "This is a reference to the actual software image.
- The reference can be relative to the root of the VNF
- Package or can be a URL";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element.";
- }
+ leaf image {
+ default ".";
+ type inet:uri;
+ description
+ "This is a reference to the actual software image.
+ The reference can be relative to the root of the VNF
+ Package or can be a URL";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
+ information element.";
+ }
- leaf operating-system {
- type string;
- description
- "Identifies the operating system used in the software
- image. This attribute may also identify if a 32 bit
- or 64 bit software image is used.";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element.";
- }
+ leaf operating-system {
+ type string;
+ description
+ "Identifies the operating system used in the software
+ image. This attribute may also identify if a 32 bit
+ or 64 bit software image is used.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
+ information element.";
+ }
- leaf-list supported-virtualization-environment {
- type string;
- description
- "Identifies the virtualisation environments
- (e.g. hypervisor) compatible with this software
- image.";
- reference
- "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
- information element.";
- }
+ leaf-list supported-virtualization-environment {
+ type string;
+ description
+ "Identifies the virtualisation environments
+ (e.g. hypervisor) compatible with this software
+ image.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.5, SwImageDesc
+ information element.";
+ }
+ }
+
+ list int-virtual-link-desc {
+ key "id";
+ description
+ "Represents the type of network connectivity mandated by the
+ VNF provider between two or more CPs which includes at
+ least one internal CP.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, Vnfd information element.";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier of this internal VLD in VNFD.";
+ reference
+ "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
+ Information elements.";
}
- list int-virtual-link-desc {
+ list flavour {
key "id";
description
- "Represents the type of network connectivity mandated by the
- VNF provider between two or more CPs which includes at
- least one internal CP.";
+ "Describes a specific flavour of the VL with specific
+ bitrate requirements.";
reference
- "GS NFV IFA011: Section 7.1.2, Vnfd information element.";
+ "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
+ Information elements.";
+
leaf id {
type string;
description
- "Unique identifier of this internal VLD in VNFD.";
+ "Identifies a flavour within a VnfVirtualLinkDesc.";
reference
- "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
- Information elements.";
+ "GS NFV IFA011: Section 7.1.8.5, VirtualLinkDescFlavour
+ information element.";
}
- list flavour {
- key "id";
+ container qos {
+ presence "VL QoS parameters";
description
- "Describes a specific flavour of the VL with specific
- bitrate requirements.";
+ "QoS of the VL.";
reference
- "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
- Information elements.";
+ "GS NFV IFA011: Section 7.1.8.5, VirtualLinkDescFlavour
+ information element.";
- leaf id {
- type string;
+ leaf latency {
+ type uint32;
+ units "ms";
+ mandatory true;
description
- "Identifies a flavour within a VnfVirtualLinkDesc.";
+ "Specifies the maximum latency in ms.";
reference
- "GS NFV IFA011: Section 7.1.8.5, VirtualLinkDescFlavour
- information element.";
+ "GS NFV IFA011: Section 7.1.8.10, QoS information
+ element.";
}
- container qos {
- presence "VL QoS parameters";
+
+ leaf packet-delay-variation {
+ type uint32;
+ units "ms";
+ mandatory true;
description
- "QoS of the VL.";
+ "Specifies the maximum jitter in ms.";
reference
- "GS NFV IFA011: Section 7.1.8.5, VirtualLinkDescFlavour
- information element.";
-
- leaf latency {
- type uint32;
- units "ms";
- mandatory true;
- description
- "Specifies the maximum latency in ms.";
- reference
- "GS NFV IFA011: Section 7.1.8.10, QoS information
- element.";
- }
-
- leaf packet-delay-variation {
- type uint32;
- units "ms";
- mandatory true;
- description
- "Specifies the maximum jitter in ms.";
- reference
- "GS NFV IFA011: Section 7.1.8.10, QoS information
- element.";
- }
-
- leaf packet-loss-ratio {
- type decimal64 {
- fraction-digits "2";
- range "0..1.00";
- }
- description
- "Specifies the maximum packet loss ratio.";
- reference
- "GS NFV IFA011: Section 7.1.8.10, QoS information
- element.";
- }
+ "GS NFV IFA011: Section 7.1.8.10, QoS information
+ element.";
}
- }
-
- uses connectivity-type;
- leaf-list test-access {
- type string;
- description
- "Specifies test access facilities expected on the VL
- (e.g. none, passive monitoring, or active (intrusive)
- loopbacks at endpoints.";
- reference
- "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
- information element.";
- }
- leaf description {
- type string;
- description
- "Provides human-readable information on the purpose of
- the VL (e.g. control plane traffic).";
- reference
- "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
- information element.";
- }
- list monitoring-parameters {
- key "id";
- leaf id {
- type string;
+ leaf packet-loss-ratio {
+ type decimal64 {
+ fraction-digits "2";
+ range "0..1.00";
+ }
description
- "Unique identifier of the monitoring parameter.";
- reference
- "GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
- information element.";
+ "Specifies the maximum packet loss ratio.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.10, QoS information
+ element.";
}
- uses monitoring-parameter;
}
}
- uses security-group-rule;
-
- list ext-cpd {
- key "id";
- min-elements 1;
+ uses connectivity-type;
+ leaf-list test-access {
+ type string;
description
- "Describes an external interface exposed by this VNF enabling
- connection with a Virual Link";
+ "Specifies test access facilities expected on the VL
+ (e.g. none, passive monitoring, or active (intrusive)
+ loopbacks at endpoints.";
reference
- "GS NFV IFA011: Section 7.1.2, VNFD information element.";
-
- choice cp-connection {
- leaf int-virtual-link-desc {
- description
- "Reference to the internal Virtual Link Descriptor (VLD)
- to which CPs instantiated from this external CP
- Descriptor (CPD) connect. Either intVirtualLinkDesc or
- intCpd shall be present.";
- type leafref {
- path "../../nfv:int-virtual-link-desc/nfv:id";
- }
- }
- container int-cpd {
- leaf vdu-id {
- type leafref {
- path "../../../vdu/id";
- }
- }
- leaf cpd {
- type leafref {
- path "deref(../vdu-id)/../int-cpd/id";
- }
- }
- }
- }
- uses virtual-network-interface-requirements;
- uses cpd;
+ "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
+ information element.";
}
- list df {
- must "nfv:default-instantiation-level or " +
- "count(nfv:instantiation-level) = 1";
- key "id";
- min-elements 1;
+ leaf description {
+ type string;
description
- "Describes a specific Deployment Flavour (DF) of a VNF with
- specific requirements for capacity and performance.";
+ "Provides human-readable information on the purpose of
+ the VL (e.g. control plane traffic).";
reference
- "GS NFV IFA011: Section 7.1.2, VNFD information element.";
+ "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
+ information element.";
+ }
+
+ list monitoring-parameters {
+ key "id";
+
leaf id {
type string;
description
- "Identifier of this DF within the VNFD.";
+ "Unique identifier of the monitoring parameter.";
reference
- "GS NFV IFA011: Section 7.1.8, Information elements
- to the DeploymentFlavour.";
- }
- leaf description {
- type string;
- description
- "Human readable description of the deployment flavour";
- reference
- "GS NFV IFA011: Section 7.1.8, Information elements
- to the DeploymentFlavour.";
+ "GS NFV IFA011: Section 7.1.11.3, MonitoringParameter
+ information element.";
}
- list vdu-profile {
- key "id";
- min-elements 1;
- description
- "The Vduprofile describes additional instantiation data for
- a given VDU used in a deployment flavour.";
- reference
- "GS NFV IFA011: Section 7.1.8, Information elements
- to the DeploymentFlavour.";
- leaf id {
- type leafref {
- path "../../../nfv:vdu/nfv:id";
- }
- reference
- "GS NFV IFA011: Section 7.1.8.3, VduProfile information
- element.";
- }
- leaf min-number-of-instances {
- type uint16;
- default 1;
- description
- "Minimum number of instances of the VNFC based on this
- VDU that is permitted to exist for this flavour.";
- reference
- "GS NFV IFA011: Section 7.1.8.3, VduProfile information
- element.";
- }
- leaf max-number-of-instances {
- type uint16;
- default 1;
- must ". >= ../nfv:min-number-of-instances";
- reference
- "GS NFV IFA011: Section 7.1.8.3, VduProfile information
- element.";
- }
- uses local-affinity-or-anti-affinity-rule;
+ uses monitoring-parameter;
+ }
+ }
- list affinity-or-anti-affinity-group {
- key "id";
+ uses security-group-rule;
- description
- "Identifier(s) of the affinity or anti-affinity
- group(s) the VDU belongs to.";
- reference
- "GS NFV IFA011: Section 7.1.8.3, VduProfile information
- element.";
- leaf id {
- type leafref {
- path "../../../" +
- "nfv:affinity-or-anti-affinity-group/" +
- "nfv:id";
- }
- description
- "Identifies an affinity or anti-affinity group to
- which the affinity or anti-affinity rule applies.";
- reference
- "GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
- information element.";
- }
- }
- }
+ list ext-cpd {
+ key "id";
+ min-elements 1;
- list virtual-link-profile {
- key "id flavour";
- description
- "Defines the internal VLD along with additional data which
- is used in this DF.";
- reference
- "GS NFV IFA011: Section 7.1.8.2, VnfDf information
- element.";
+ description
+ "Describes an external interface exposed by this VNF enabling
+ connection with a Virual Link";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD information element.";
- leaf id {
- type leafref {
- path "../../../nfv:int-virtual-link-desc/nfv:id";
- }
- description
- "Uniquely identifies a Vnf VLD.";
- reference
- "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
- information element.";
+ choice cp-connection {
+ leaf int-virtual-link-desc {
+ description
+ "Reference to the internal Virtual Link Descriptor (VLD)
+ to which CPs instantiated from this external CP
+ Descriptor (CPD) connect. Either intVirtualLinkDesc or
+ intCpd shall be present.";
+ type leafref {
+ path "../../int-virtual-link-desc/id";
}
+ }
- leaf flavour {
+ container int-cpd {
+ leaf vdu-id {
type leafref {
- path "deref(../../../ext-cpd/int-virtual-link-desc)" +
- "/../flavour/id";
+ path "../../../vdu/id";
}
- description
- "Identifies a flavour within the VnfVirtualLinkDesc.";
- reference
- "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
- information element.";
}
- uses local-affinity-or-anti-affinity-rule;
- list affinity-or-anti-affinity-group {
- key "id";
- leaf id {
- type leafref {
- path "../../../" +
- "nfv:affinity-or-anti-affinity-group/" +
- "nfv:id";
- }
- }
- description
- "Identifier(s) of the affinity or anti-affinity
- group(s) the VnfVirtualLinkDesc belongs to.";
- reference
- "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
- information element.";
- }
-
- container max-bit-rate-requirements {
- leaf root {
- mandatory "true";
- type uint32;
- description
- "Throughput requirement of the link (e.g. bitrate of
- E-Line, root bitrate of E-Tree, aggregate capacity
- of E-LAN).";
- reference
- "GS NFV IFA011: Section 7.1.8.6,
- LinkBitrateRequirements information element.";
- }
-
- leaf leaf {
- type uint32;
- description
- "Throughput requirement of leaf connections to the
- link when applicable to the connectivity type
- (e.g. for E-Tree and E-LAN branches).";
- reference
- "GS NFV IFA011: Section 7.1.8.6,
- LinkBitrateRequirements information element.";
- }
- description
- "Specifies the maximum bitrate requirements for a VL
- instantiated according to this profile.";
- reference
- "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
- information element.";
- }
-
- container min-bit-rate-requirements {
- leaf root {
- mandatory "true";
- type uint32;
- description
- "Throughput requirement of the link (e.g. bitrate of
- E-Line, root bitrate of E-Tree, aggregate capacity
- of E-LAN).";
- reference
- "GS NFV IFA011: Section 7.1.8.6,
- LinkBitrateRequirements information element.";
- }
-
- leaf leaf {
- type uint32;
- description
- "Throughput requirement of leaf connections to the
- link when applicable to the connectivity type
- (e.g. for E-Tree and E-LAN branches).";
- reference
- "GS NFV IFA011: Section 7.1.8.6,
- LinkBitrateRequirements information element.";
+ leaf cpd {
+ type leafref {
+ path "deref(../vdu-id)/../int-cpd/id";
}
- description
- "Specifies the minimum bitrate requirements for a VL
- instantiated according to this profile.";
- reference
- "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
- information element.";
}
+ }
+ }
+ uses virtual-network-interface-requirements;
- container virtual-link-protocol-data {
- leaf associated-layer-protocol {
- type identityref {
- base 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.";
- }
+ leaf nicio-requirements {
+ type leafref {
+ path "../../virtual-compute-desc/id";
+ }
+ description
+ "This references (couples) the CPD with any logical node I/O
+ requirements (for network devices) that may have been
+ created. Linking these attributes is necessary so that so
+ that I/O requirements that need to be articulated at the
+ logical node level can be associated with the network
+ interface requirements associated with the CPD.";
+ reference
+ "GS NFV-IFA011: Section 7.1.6.6,
+ VirtualNetworkInterfaceRequirements information element";
+ }
+ uses cpd;
- container l3-protocol-data {
- when "(../associated-layer-protocol = 'IPv4') or " +
- "(../associated-layer-protocol = 'IPv6')";
+ leaf security-group-rule-id {
+ type leafref {
+ path "../../security-group-rule/id";
+ }
+ description
+ "Reference of the security group rules bound to this
+ CPD.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ }
+ }
- leaf name {
- type string;
- description
- "Network name associated with this L3 protocol.";
- reference
- "GS NFV IFA011: Section 7.1.8.15,
- L3ProtocolData information element.";
- }
+ list df {
+ must "default-instantiation-level or " +
+ "count(instantiation-level) = 1";
+ key "id";
+ min-elements 1;
+ description
+ "Describes a specific Deployment Flavour (DF) of a VNF with
+ specific requirements for capacity and performance.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD information element.";
- leaf ip-version {
- type enumeration {
- enum ipv4;
- enum ipv6;
- }
- mandatory true;
- description
- "Specifies IP version of this L3 protocol.
- Value:
- • IPV4.
- • IPV6.";
- reference
- "GS NFV IFA011: Section 7.1.8.15,
- L3ProtocolData information element.";
- }
+ leaf id {
+ type string;
+ description
+ "Identifier of this DF within the VNFD.";
+ reference
+ "GS NFV IFA011: Section 7.1.8, Information elements
+ to the DeploymentFlavour.";
+ }
- 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 description {
+ type string;
+ description
+ "Human readable description of the deployment flavour";
+ reference
+ "GS NFV IFA011: Section 7.1.8, Information elements
+ to the DeploymentFlavour.";
+ }
- 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.";
- }
+ list vdu-profile {
+ key "id";
+ min-elements 1;
+ description
+ "The Vduprofile describes additional instantiation data for
+ a given VDU used in a deployment flavour.";
+ reference
+ "GS NFV IFA011: Section 7.1.8, Information elements
+ to the DeploymentFlavour.";
- 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 id {
+ type leafref {
+ path "../../../vdu/id";
+ }
+ reference
+ "GS NFV IFA011: Section 7.1.8.3, VduProfile 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 min-number-of-instances {
+ type uint16;
+ default 1;
+ description
+ "Minimum number of instances of the VNFC based on this
+ VDU that is permitted to exist for this flavour.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.3, VduProfile 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.";
- }
+ leaf max-number-of-instances {
+ type uint16;
+ default 1;
+ must ". >= ../min-number-of-instances";
+ reference
+ "GS NFV IFA011: Section 7.1.8.3, VduProfile information
+ element.";
}
+ uses local-affinity-or-anti-affinity-rule;
- list instantiation-level {
+ list affinity-or-anti-affinity-group {
key "id";
- min-elements 1;
- description
- "Describes the various levels of resources that can be
- used to instantiate the VNF using this flavour.
- Examples: Small, Medium, Large. If there is only one
- 'instantiationLevel' entry, it shall be treated as the
- default instantiation level for this DF.
- The InstantiationLevel information element describes a
- given level of resources to be instantiated within a
- deployment flavour in term of the number of VNFC instances
- to be created from each VDU.
- All the VDUs referenced in the level shall be part of the
- corresponding deployment flavour and their number shall
- be within the range (min/max) for this deployment flavour.";
+ description
+ "Identifier(s) of the affinity or anti-affinity
+ group(s) the VDU belongs to.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information element";
+ "GS NFV IFA011: Section 7.1.8.3, VduProfile information
+ element.";
leaf id {
- type string;
- description
- "Uniquely identifies a level with the DF.";
- reference
- "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
- information element";
- }
- leaf description {
- type string;
+ type leafref {
+ path "../../../" +
+ "affinity-or-anti-affinity-group/id";
+ }
description
- "Human readable description of the instantiation level";
+ "Identifies an affinity or anti-affinity group to
+ which the affinity or anti-affinity rule applies.";
reference
- "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
- information element";
+ "GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
+ information element.";
}
- list vdu-level {
- key "vdu-id";
- min-elements 1;
- description
- "Sets the number of instances for the VDU in this
- instantiation level.";
- reference
- "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
- information element";
+ }
+ }
- leaf vdu-id {
- type leafref {
- path "../../../../nfv:vdu/nfv:id";
- }
- description
- "Uniquely identifies a VDU.";
- reference
- "GS NFV IFA011: Section 7.1.8.9 VduLevel information
- element";
- }
- leaf number-of-instances {
- type uint16;
- must ". <= ../../../../nfv:df/" +
- "nfv:vdu-profile[id=current()/../nfv:vdu-id]/" +
- "nfv:max-number-of-instances";
- must ". >= ../../../../nfv:df/" +
- "nfv:vdu-profile[id=current()/../nfv:vdu-id]/" +
- "nfv:min-number-of-instances";
- default 1;
- description
- "Number of instances of VNFC based on this VDU to
- deploy for this level.";
- reference
- "GS NFV IFA011: Section 7.1.8.9 VduLevel information
- element";
- }
- }
- list scaling-info {
- key "scaling-aspect-id";
- description
- "The InstantiationLevel information element describes a
- given level of resources to be instantiated within a
- DF in term of the number of VNFC instances to be
- created from each VDU.";
- reference
- "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
- information element";
+ list virtual-link-profile {
+ key "id flavour";
+ description
+ "Defines the internal VLD along with additional data which
+ is used in this DF.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2, VnfDf information
+ element.";
- leaf scaling-aspect-id {
- type leafref {
- path "../../../nfv:scaling-aspect/nfv:id";
- }
- description
- "Identifier of the scaling aspect.";
- reference
- "GS NFV IFA011: Section 7.1.8.8 ScaleInfo information
- element";
- }
- leaf scale-level {
- type uint32;
- description
- "The scale level, greater than or equal to 0.";
- reference
- "GS NFV IFA011: Section 7.1.8.8 ScaleInfo information
- element";
- }
+ leaf id {
+ type leafref {
+ path "../../../int-virtual-link-desc/id";
}
+ description
+ "Uniquely identifies a Vnf VLD.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+ information element.";
}
- leaf default-instantiation-level {
+
+ leaf flavour {
type leafref {
- path "../nfv:instantiation-level/nfv:id";
+ path "deref(../../../ext-cpd/int-virtual-link-desc)" +
+ "/../flavour/id";
}
description
- "This attribute references the 'instantiationLevel'
- entry which defines the default instantiation level for
- this DF. It shall be present if there are multiple
- 'instantiationLevel' entries.";
+ "Identifies a flavour within the VnfVirtualLinkDesc.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+ information element.";
}
- leaf-list supported-operation {
- type identityref {
- base supported-operation;
+ uses local-affinity-or-anti-affinity-rule;
+
+ list affinity-or-anti-affinity-group {
+ key "id";
+ leaf id {
+ type leafref {
+ path "../../../affinity-or-anti-affinity-group/id";
+ }
}
description
- "Indicates which operations are available for this DF via
- the VNF LCM interface. Instantiate VNF, Query VNF and
- Terminate VNF are supported in all DF and therefore
- need not be included in this list.";
+ "Identifier(s) of the affinity or anti-affinity
+ group(s) the VnfVirtualLinkDesc belongs to.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+ information element.";
}
- container lcm-operations-configuration {
+
+ container max-bit-rate-requirements {
+ leaf root {
+ mandatory "true";
+ type uint32;
+ description
+ "Throughput requirement of the link (e.g. bitrate of
+ E-Line, root bitrate of E-Tree, aggregate capacity
+ of E-LAN).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.6,
+ LinkBitrateRequirements information element.";
+ }
+
+ leaf leaf {
+ type uint32;
+ description
+ "Throughput requirement of leaf connections to the
+ link when applicable to the connectivity type
+ (e.g. for E-Tree and E-LAN branches).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.6,
+ LinkBitrateRequirements information element.";
+ }
description
- "This information element is a container for all
- attributes that affect the invocation of the VNF
- Lifecycle Management operations, structured by
- operation.";
+ "Specifies the maximum bitrate requirements for a VL
+ instantiated according to this profile.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+ information element.";
+ }
- container instantiate-vnf-op-config {
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the InstantiateVnf
- operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.3
- InstantiateVnfOpConfig information element";
- }
+ container min-bit-rate-requirements {
+ leaf root {
+ mandatory "true";
+ type uint32;
description
- "Configuration parameters for the InstantiateVnf
- operation.";
+ "Throughput requirement of the link (e.g. bitrate of
+ E-Line, root bitrate of E-Tree, aggregate capacity
+ of E-LAN).";
reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.8.6,
+ LinkBitrateRequirements information element.";
}
- container scale-vnf-op-config {
+ leaf leaf {
+ type uint32;
description
- "Configuration parameters for the ScaleVnf operation.";
+ "Throughput requirement of leaf connections to the
+ link when applicable to the connectivity type
+ (e.g. for E-Tree and E-LAN branches).";
reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.8.6,
+ LinkBitrateRequirements information element.";
+ }
+ description
+ "Specifies the minimum bitrate requirements for a VL
+ instantiated according to this profile.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile
+ information element.";
+ }
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements for VNFspecific parameters
- to be passed when invoking the ScaleVnf operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.4 ScaleVnfOpConfig
- information element";
+ container virtual-link-protocol-data {
+ leaf associated-layer-protocol {
+ type identityref {
+ base 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.";
+ }
- leaf scaling-by-more-than-one-step-supported {
- type boolean;
- default false;
+ 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
- "Signals whether passing a value larger than one in
- the numScalingSteps parameter of the ScaleVnf
- operation is supported by this VNF.
- Default is FALSE, i.e. 'not supported'.";
+ "Network name associated with this L2 protocol.";
reference
- "GS NFV IFA011: Section 7.1.5.4
- ScaleVnfOpConfig information element";
+ "GS NFV IFA011: Section 7.1.8.14,
+ L2ProtocolData information element.";
}
- }
-
- container scale-vnf-to-level-op-config {
- description
- "This information element defines attributes that
- affect the invocation of the ScaleVnfToLevel
- operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
+ leaf network-type {
+ type enumeration {
+ enum flat;
+ enum vlan;
+ enum vxlan;
+ enum gre;
}
description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the ScaleVnfToLevel
- operation.";
+ "Specifies the network type for this L2 protocol.
+ Possible values: FLAT, VLAN, VXLAN, GRE.";
reference
- "GS NFV IFA011: Section 7.1.5.5
- ScaleVnfToLevelOpConfig information element";
+ "GS NFV IFA011: Section 7.1.8.14,
+ L2ProtocolData information element.";
}
- leaf arbitrary-target-levels-supported {
+ leaf vlan-transparent {
type boolean;
- mandatory true;
description
- "Signals whether scaling according to the parameter
- 'scaleInfo' is supported by this VNF.";
+ "Specifies whether to support VLAN transparency for
+ this L2 protocol or not.";
reference
- "GS NFV IFA011: Section 7.1.5.5
- ScaleVnfToLevelOpConfig information element";
+ "GS NFV IFA011: Section 7.1.8.14,
+ L2ProtocolData information element.";
}
- }
- container heal-vnf-op-config {
+ 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
- "This information element defines attributes that
- affect the invocation of the HealVnf operation.";
+ "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.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.8.13,
+ VirtualLinkProtocolData information element.";
+ }
- list parameter {
- key "key";
+ container l3-protocol-data {
+ when "(../associated-layer-protocol = 'IPv4') or " +
+ "(../associated-layer-protocol = 'IPv6')";
- leaf key {
- type string;
- }
- leaf value {
- type string;
+ 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
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the HealVnf operation.";
+ "Specifies IP version of this L3 protocol.
+ Value:
+ • IPV4.
+ • IPV6.";
reference
- "GS NFV IFA011: Section 7.1.5.6 HealVnfOpConfig
- information element";
+ "GS NFV IFA011: Section 7.1.8.15,
+ L3ProtocolData information element.";
}
- leaf-list cause {
+ leaf cidr {
type string;
description
- "Supported 'cause' parameter values.";
+ "Specifies the CIDR (Classless InterDomain Routing)
+ of this L3 protocol.";
reference
- "GS NFV IFA011: Section 7.1.5.6 HealVnfOpConfig
- information element";
+ "GS NFV IFA011: Section 7.1.8.15,
+ L3ProtocolData information element.";
}
- }
- container terminate-vnf-op-config {
- description
- "This information element defines attributes that
- affect the invocation of the TerminateVnf operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration 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 min-graceful-termination {
- type yang:timeticks;
- mandatory true;
+ leaf gateway-ip {
+ type inet:ip-address;
description
- "Minimum timeout value for graceful termination of
- a VNF instance.";
+ "Specifies the gateway IP address for this L3
+ protocol.";
reference
- "GS NFV IFA011: Section 7.1.5.7
- TerminateVnfOpConfig information element";
+ "GS NFV IFA011: Section 7.1.8.15,
+ L3ProtocolData information element.";
}
- leaf max-recommended-graceful-termination {
- type yang:timeticks;
+ leaf dhcp-enabled {
+ type boolean;
+ default "true";
description
- "Maximum recommended timeout value that can be needed
- to gracefully terminate a VNF instance of a
- particular type under certain conditions, such as
- maximum load condition. This is provided by VNF
- provider as information for the operator
- facilitating the selection of optimal timeout value.
- This value is not used as constraint.";
+ "Indicates whether DHCP (Dynamic Host Configuration
+ Protocol) is enabled or disabled for this L3
+ protocol.";
reference
- "GS NFV IFA011: Section 7.1.5.7
- TerminateVnfOpConfig information element";
+ "GS NFV IFA011: Section 7.1.8.15,
+ L3ProtocolData information element.";
}
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
+ leaf ipv6-address-mode {
+ when "../ip-version = 'ipv6'";
+ type enumeration {
+ enum slaac;
+ enum dhcpv6-stateful;
+ enum dhcpv6-stateless;
}
description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the TerminateVnf
- operation.";
+ "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.5.7
- TerminateVnfOpConfig information element";
+ "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.";
+ }
+ }
+
+ list instantiation-level {
+ key "id";
+ min-elements 1;
+ description
+ "Describes the various levels of resources that can be
+ used to instantiate the VNF using this flavour.
+ Examples: Small, Medium, Large. If there is only one
+ 'instantiationLevel' entry, it shall be treated as the
+ default instantiation level for this DF.
+
+ The InstantiationLevel information element describes a
+ given level of resources to be instantiated within a
+ deployment flavour in term of the number of VNFC instances
+ to be created from each VDU.
+ All the VDUs referenced in the level shall be part of the
+ corresponding deployment flavour and their number shall
+ be within the range (min/max) for this deployment flavour.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information element";
+
+ leaf id {
+ type string;
+ description
+ "Uniquely identifies a level with the DF.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
+ information element";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Human readable description of the instantiation level";
+ reference
+ "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
+ information element";
+ }
+
+ list vdu-level {
+ key "vdu-id";
+ min-elements 1;
+ description
+ "Sets the number of instances for the VDU in this
+ instantiation level.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
+ information element";
+
+ leaf vdu-id {
+ type leafref {
+ path "../../../../vdu/id";
}
+ description
+ "Uniquely identifies a VDU.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.9 VduLevel information
+ element";
}
- container operate-vnf-op-config {
+ leaf number-of-instances {
+ type uint16;
+ must ". <= ../../../../df/" +
+ "vdu-profile[id=current()/../vdu-id]/" +
+ "max-number-of-instances";
+ must ". >= ../../../../df/" +
+ "vdu-profile[id=current()/../vdu-id]/" +
+ "min-number-of-instances";
+ default 1;
description
- "This information element defines attributes that
- affect the invocation of the OperateVnf operation.";
+ "Number of instances of VNFC based on this VDU to
+ deploy for this level.";
reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.8.9 VduLevel information
+ element";
+ }
+ }
- leaf min-graceful-stop-timeout {
- type yang:timeticks;
- mandatory true;
- description
- "Minimum timeout value for graceful stop of a VNF
- instance.";
- reference
- "GS NFV IFA011: Section 7.1.5.8
- OperateVnfOpConfig information element";
+ list scaling-info {
+ key "scaling-aspect-id";
+ description
+ "The InstantiationLevel information element describes a
+ given level of resources to be instantiated within a
+ DF in term of the number of VNFC instances to be
+ created from each VDU.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
+ information element";
+
+ leaf scaling-aspect-id {
+ type leafref {
+ path "../../../scaling-aspect/id";
}
+ description
+ "Identifier of the scaling aspect.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.8 ScaleInfo information
+ element";
+ }
- leaf max-recommended-graceful-stop-timeout {
- type yang:timeticks;
- description
- "Maximum recommended timeout value that can be
- needed to gracefully stop a VNF instance of a
- particular type under certain conditions, such as
- maximum load condition. This is provided by VNF
- provider as information for the operator facilitating
- the selection of optimal timeout value. This value
- is not used as constraint.";
- reference
- "GS NFV IFA011: Section 7.1.5.8
- OperateVnfOpConfig information element";
+ leaf scale-level {
+ type uint32;
+ description
+ "The scale level, greater than or equal to 0.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.8 ScaleInfo information
+ element";
+ }
+ }
+ }
+
+ leaf default-instantiation-level {
+ type leafref {
+ path "../instantiation-level/id";
+ }
+ description
+ "This attribute references the 'instantiationLevel'
+ entry which defines the default instantiation level for
+ this DF. It shall be present if there are multiple
+ 'instantiationLevel' entries.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ }
+
+ leaf-list supported-operation {
+ type identityref {
+ base supported-operation;
+ }
+ description
+ "Indicates which operations are available for this DF via
+ the VNF LCM interface. Instantiate VNF, Query VNF and
+ Terminate VNF are supported in all DF and therefore
+ need not be included in this list.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ }
+
+ container lcm-operations-configuration {
+ description
+ "This information element is a container for all
+ attributes that affect the invocation of the VNF
+ Lifecycle Management operations, structured by
+ operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+
+ container instantiate-vnf-op-config {
+ list parameter {
+ key "key";
+
+ leaf key {
+ type string;
}
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the OperateVnf
- operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.8
- OperateVnfOpConfig information element";
+ leaf value {
+ type string;
}
+ description
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the InstantiateVnf
+ operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.3
+ InstantiateVnfOpConfig information element";
}
+ description
+ "Configuration parameters for the InstantiateVnf
+ operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+ }
- container change-vnf-flavour-op-config {
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the OperateVnf
- operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.9
- ChangeVnfFlavour information element";
+ container scale-vnf-op-config {
+ description
+ "Configuration parameters for the ScaleVnf operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+
+ list parameter {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
}
description
- "Configuration parameters for the ChangeVnfFlavour
- operation.";
+ "Array of KVP requirements for VNFspecific parameters
+ to be passed when invoking the ScaleVnf operation.";
reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.5.4 ScaleVnfOpConfig
+ information element";
}
- container change-ext-vnf-connectivity-op-config {
- list parameter {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements for VNF-specific parameters
- to be passed when invoking the
- ChangeExtVnfConnectivity operation.";
- reference
- "GS NFV IFA011: Section 7.1.5.10
- ChangeExtVnfConnectivityOpConfig information
- element";
- }
+ leaf scaling-by-more-than-one-step-supported {
+ type boolean;
+ default false;
description
- "Configuration parameters for the
- ChangeExtVnfConnectivity operation.";
+ "Signals whether passing a value larger than one in
+ the numScalingSteps parameter of the ScaleVnf
+ operation is supported by this VNF.
+ Default is FALSE, i.e. 'not supported'.";
reference
- "GS NFV IFA011: Section 7.1.5.2
- VnfLcmOperationsConfiguration information element";
+ "GS NFV IFA011: Section 7.1.5.4
+ ScaleVnfOpConfig information element";
}
}
- list affinity-or-anti-affinity-group {
- key "id";
+ container scale-vnf-to-level-op-config {
description
- "The AffinityOrAntiAffinityGroup describes the affinity
- or anti-affinity relationship applicable between the
- virtualization containers to be created based on
- different VDUs, or between internal VLs to be created
- based on different VnfVirtualLinkDesc(s).
-
- Per VNF, the affinity/anti-affinity rules defined using
- this information element, using the
- LocalAffinityOrAntiAffinityRule information element, and
- using the placement constraints in the
- GrantLifecycleOperation as defined in ETSI GS NFV-IFA
- 007 [i.3] should be conflict-free. In case of conflicts,
- the placement constraints in the
- GrantLifecycleOperation shall take precedence.";
-
+ "This information element defines attributes that
+ affect the invocation of the ScaleVnfToLevel
+ operation.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
- leaf id {
- type string;
+ list parameter {
+ key "key";
+ leaf key {
+ type string;
+ }
+ leaf value {
+ type string;
+ }
description
- "Identifies an affinity or anti-affinity group to which
- the affinity or anti-affinity rule applies.";
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the ScaleVnfToLevel
+ operation.";
reference
- "GS NFV IFA011: Section 7.1.8.12
- AffinityOrAntiAffinityGroup information element";
+ "GS NFV IFA011: Section 7.1.5.5
+ ScaleVnfToLevelOpConfig information element";
}
- leaf type {
- mandatory true;
- type affinity-type;
+ leaf arbitrary-target-levels-supported {
+ type boolean;
+ default "false";
description
- "Specifies whether the rule is an affinity rule or an
- anti-affinity rule.";
+ "Signals whether scaling according to the parameter
+ 'scaleInfo' is supported by this VNF.";
reference
- "GS NFV IFA011: Section 7.1.8.12
- AffinityOrAntiAffinityGroup information element";
+ "GS NFV IFA011: Section 7.1.5.5
+ ScaleVnfToLevelOpConfig information element";
}
+ }
- leaf scope {
- mandatory true;
- type affinity-scope;
+ container heal-vnf-op-config {
+ description
+ "This information element defines attributes that
+ affect the invocation of the HealVnf operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+
+ list parameter {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
+ }
description
- "Specifies the scope of the rule, possible values are
- 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'.";
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the HealVnf operation.";
reference
- "GS NFV IFA011: Section 7.1.8.12
- AffinityOrAntiAffinityGroup information element";
+ "GS NFV IFA011: Section 7.1.5.6 HealVnfOpConfig
+ information element";
}
- }
- list indicator {
- key "id";
-
- leaf id {
+ leaf-list cause {
type string;
description
- "Unique identifier.";
+ "Supported 'cause' parameter values.";
reference
- "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ "GS NFV IFA011: Section 7.1.5.6 HealVnfOpConfig
information element";
}
+ }
- leaf name {
- type string;
+ container terminate-vnf-op-config {
+ description
+ "This information element defines attributes that
+ affect the invocation of the TerminateVnf operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+
+ leaf min-graceful-termination {
+ type yang:timeticks;
+ default "1";
description
- "The human readable name of the VnfIndicator.";
+ "Minimum timeout value for graceful termination of
+ a VNF instance.";
reference
- "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
- information element";
+ "GS NFV IFA011: Section 7.1.5.7
+ TerminateVnfOpConfig information element";
}
- leaf indicator-value {
- type string;
+ leaf max-recommended-graceful-termination {
+ type yang:timeticks;
description
- "Defines the allowed values or value ranges of this
- indicator.";
+ "Maximum recommended timeout value that can be needed
+ to gracefully terminate a VNF instance of a
+ particular type under certain conditions, such as
+ maximum load condition. This is provided by VNF
+ provider as information for the operator
+ facilitating the selection of optimal timeout value.
+ This value is not used as constraint.";
reference
- "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
- information element";
+ "GS NFV IFA011: Section 7.1.5.7
+ TerminateVnfOpConfig information element";
}
- leaf source {
- type enumeration {
- enum vnf;
- enum em;
- enum both;
+ list parameter {
+ key "key";
+ leaf key {
+ type string;
+ }
+ leaf value {
+ type string;
}
description
- "Describe the source of the indicator. The possible
- values are:
- • VNF.
- • EM.
- • Both.
-
- This tells the consumer where to send the subscription
- request.";
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the TerminateVnf
+ operation.";
reference
- "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
- information element";
+ "GS NFV IFA011: Section 7.1.5.7
+ TerminateVnfOpConfig information element";
}
+ }
+ container operate-vnf-op-config {
description
- "Declares the VNF indicators that are supported by this
- VNF (specific to this DF).";
+ "This information element defines attributes that
+ affect the invocation of the OperateVnf operation.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
- }
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
- list supported-vnf-interfaces {
- key "name";
+ leaf min-graceful-stop-timeout {
+ type yang:timeticks;
+ default "1";
+ description
+ "Minimum timeout value for graceful stop of a VNF
+ instance.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.8
+ OperateVnfOpConfig information element";
+ }
- leaf name {
- type enumeration {
- enum vnf-configuration;
- enum vnf-indicator;
- }
+ leaf max-recommended-graceful-stop-timeout {
+ type yang:timeticks;
description
- "Identifies an interface produced by the VNF. Valid
- values:
- - VNF_CONFIGURATION
- - VNF_INDICATOR";
+ "Maximum recommended timeout value that can be
+ needed to gracefully stop a VNF instance of a
+ particular type under certain conditions, such as
+ maximum load condition. This is provided by VNF
+ provider as information for the operator facilitating
+ the selection of optimal timeout value. This value
+ is not used as constraint.";
reference
- "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
- information element";
+ "GS NFV IFA011: Section 7.1.5.8
+ OperateVnfOpConfig information element";
}
- leaf-list cpd-id {
- type leafref {
- path "../../../ext-cpd/id";
+ list parameter {
+ key "key";
+ leaf key {
+ type string;
+ }
+ leaf value {
+ type string;
}
description
- "References one or more CPDs from which to instantiate
- external CPs through which interface endpoints on the
- VNF side can be reached by the VNFM.";
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the OperateVnf
+ operation.";
reference
- "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
- information element";
+ "GS NFV IFA011: Section 7.1.5.8
+ OperateVnfOpConfig information element";
}
+ }
- list interface-details {
+ container change-vnf-flavour-op-config {
+ list parameter {
key "key";
-
leaf key {
type string;
}
+ leaf value {
+ type string;
+ }
+ description
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the OperateVnf
+ operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.9
+ ChangeVnfFlavour information element";
+ }
+ description
+ "Configuration parameters for the ChangeVnfFlavour
+ operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+ }
+ container change-ext-vnf-connectivity-op-config {
+ list parameter {
+ key "key";
+ leaf key {
+ type string;
+ }
leaf value {
type string;
}
+ description
+ "Array of KVP requirements for VNF-specific parameters
+ to be passed when invoking the
+ ChangeExtVnfConnectivity operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.10
+ ChangeExtVnfConnectivityOpConfig information
+ element";
}
+ description
+ "Configuration parameters for the
+ ChangeExtVnfConnectivity operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.5.2
+ VnfLcmOperationsConfiguration information element";
+ }
+ }
+
+ list affinity-or-anti-affinity-group {
+ key "id";
+ description
+ "The AffinityOrAntiAffinityGroup describes the affinity
+ or anti-affinity relationship applicable between the
+ virtualization containers to be created based on
+ different VDUs, or between internal VLs to be created
+ based on different VnfVirtualLinkDesc(s).
+
+ Per VNF, the affinity/anti-affinity rules defined using
+ this information element, using the
+ LocalAffinityOrAntiAffinityRule information element, and
+ using the placement constraints in the
+ GrantLifecycleOperation as defined in ETSI GS NFV-IFA
+ 007 [i.3] should be conflict-free. In case of conflicts,
+ the placement constraints in the
+ GrantLifecycleOperation shall take precedence.";
+
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ leaf id {
+ type string;
description
- "Indicates which interfaces the VNF produces and provides
- additional details on how to access the interface
- endpoints.";
+ "Identifies an affinity or anti-affinity group to which
+ the affinity or anti-affinity rule applies.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.8.12
+ AffinityOrAntiAffinityGroup information element";
}
- list monitoring-parameter {
- key "id";
+ leaf type {
+ mandatory true;
+ type affinity-type;
+ description
+ "Specifies whether the rule is an affinity rule or an
+ anti-affinity rule.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.12
+ AffinityOrAntiAffinityGroup information element";
+ }
+ leaf scope {
+ mandatory true;
+ type affinity-scope;
description
- "Defines the virtualised resources monitoring parameters
- on VNF level.";
+ "Specifies the scope of the rule, possible values are
+ 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
- element";
+ "GS NFV IFA011: Section 7.1.8.12
+ AffinityOrAntiAffinityGroup information element";
+ }
+ }
- leaf id {
- type string;
- description
- "Unique identifier of the monitoring parameter.";
- reference
- "GS NFV IFA011: Section 7.1.11.3 MonitoringParameter
- information element";
- }
- uses monitoring-parameter;
+ list indicator {
+ key "id";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
}
- list scaling-aspect {
- key "id";
+ leaf name {
+ type string;
+ description
+ "The human readable name of the VnfIndicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ leaf indicator-value {
+ type string;
+ description
+ "Defines the allowed values or value ranges of this
+ indicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+ leaf source {
+ type enumeration {
+ enum vnf;
+ enum em;
+ enum both;
+ }
description
- "The scaling aspects supported by this DF of the VNF.
- scalingAspect shall be present if the VNF supports
- scaling.";
+ "Describe the source of the indicator. The possible
+ values are:
+ • VNF.
+ • EM.
+ • Both.
+
+ This tells the consumer where to send the subscription
+ request.";
reference
- "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ description
+ "Declares the VNF indicators that are supported by this
+ VNF (specific to this DF).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
element";
+ }
- leaf id {
- type string;
- description
- "Unique identifier of this aspect in the VNFD.";
- reference
- "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
- information element";
+ list supported-vnf-interfaces {
+ key "name";
+
+ leaf name {
+ type enumeration {
+ enum vnf-configuration;
+ enum vnf-indicator;
+ }
+ description
+ "Identifies an interface produced by the VNF. Valid
+ values:
+ - VNF_CONFIGURATION
+ - VNF_INDICATOR";
+ reference
+ "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
+ information element";
+ }
+
+ leaf-list cpd-id {
+ type leafref {
+ path "../../../ext-cpd/id";
}
- leaf name {
+ description
+ "References one or more CPDs from which to instantiate
+ external CPs through which interface endpoints on the
+ VNF side can be reached by the VNFM.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
+ information element";
+ }
+
+ list interface-details {
+ key "key";
+
+ leaf key {
type string;
- description
- "Human readable name of the aspect.";
- reference
- "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
- information element";
}
- leaf description {
+
+ leaf value {
type string;
- description
- "Human readable description of the aspect.";
- reference
- "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ }
+ }
+
+ description
+ "Indicates which interfaces the VNF produces and provides
+ additional details on how to access the interface
+ endpoints.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ }
+
+ list monitoring-parameter {
+ key "id";
+
+ description
+ "Defines the virtualised resources monitoring parameters
+ on VNF level.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier of the monitoring parameter.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.3 MonitoringParameter
+ information element";
+ }
+ uses monitoring-parameter;
+ }
+
+ list scaling-aspect {
+ key "id";
+
+ description
+ "The scaling aspects supported by this DF of the VNF.
+ scalingAspect shall be present if the VNF supports
+ scaling.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier of this aspect in the VNFD.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
information element";
+ }
+
+ leaf name {
+ type string;
+ description
+ "Human readable name of the aspect.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ information element";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Human readable description of the aspect.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ information element";
+ }
+
+ leaf max-scale-level {
+ type uint32 {
+ range "1..max";
}
- leaf max-scale-level {
- type uint32 {
- range "1..max";
+ description
+ "The maximum scaleLevel for total number of scaling
+ steps that can be applied w.r.t. this aspect. The
+ value of this attribute corresponds to the number of
+ scaling steps can be applied to this aspect when
+ scaling it from the minimum scale level (i.e. 0) to the
+ maximum scale level defined by this attribute.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ information element";
+ }
+
+ container aspect-delta-details {
+ list deltas {
+ key "id";
+ min-elements 1;
+
+ leaf id {
+ type string;
+ description
+ "Identifier of this scaling delta.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
+ information element";
}
- description
- "The maximum scaleLevel for total number of scaling
- steps that can be applied w.r.t. this aspect. The
- value of this attribute corresponds to the number of
- scaling steps can be applied to this aspect when
- scaling it from the minimum scale level (i.e. 0) to the
- maximum scale level defined by this attribute.";
- reference
- "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
- information element";
- }
- container aspect-delta-details {
- list deltas {
+ list vdu-delta {
key "id";
- min-elements 1;
leaf id {
- type string;
+ type leafref {
+ path "../../../../../../vdu/id";
+ }
description
- "Identifier of this scaling delta.";
+ "Uniquely identifies a VDU.";
reference
- "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
+ "GS NFV IFA011: Section 7.1.8.9 VduLevel
information element";
}
- list vdu-delta {
- key "id";
-
- leaf id {
- type leafref {
- path "/nfv/vnfd/vdu/id";
- }
- description
- "Uniquely identifies a VDU.";
- reference
- "GS NFV IFA011: Section 7.1.8.9 VduLevel
- information element";
- }
-
- leaf number-of-instances {
- type uint32 {
- range "0..max";
- }
- description
- "Number of instances of VNFC based on this VDU to
- deploy for an instantiation level or for a
- scaling delta. Shall be zero or greater.";
- reference
- "GS NFV IFA011: Section 7.1.8.9 VduLevel
- information element";
+ leaf number-of-instances {
+ type uint32 {
+ range "0..max";
}
description
- "The number of VNFC instances based on particular
- VDUs to be created or removed.";
+ "Number of instances of VNFC based on this VDU to
+ deploy for an instantiation level or for a
+ scaling delta. Shall be zero or greater.";
reference
- "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
+ "GS NFV IFA011: Section 7.1.8.9 VduLevel
information element";
}
+ description
+ "The number of VNFC instances based on particular
+ VDUs to be created or removed.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
+ information element";
+ }
- list virtual-link-bit-rate-delta {
- key "id";
+ list virtual-link-bit-rate-delta {
+ key "id";
+
+ leaf id {
+ type string;
+ description
+ "Uniquely identifies a VnfVirtualLinkDesc.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.5
+ VirtualLinkBitRateLevel information element";
+ }
- leaf id {
- type string;
+ container bit-rate-requirements {
+ leaf root {
+ type uint32;
+ units bits/sec;
+ mandatory true;
description
- "Uniquely identifies a VnfVirtualLinkDesc.";
+ "Throughput requirement of the link (e.g.
+ bitrate of E-Line, root bitrate of E-Tree,
+ aggregate capacity of E-LAN).";
reference
- "GS NFV IFA011: Section 7.1.10.5
- VirtualLinkBitRateLevel information element";
+ "GS NFV IFA011: Section 7.1.8.6
+ LinkBitrateRequirements information element";
}
- container bit-rate-requirements {
- leaf root {
- type uint32;
- units bits/sec;
- mandatory true;
- description
- "Throughput requirement of the link (e.g.
- bitrate of E-Line, root bitrate of E-Tree,
- aggregate capacity of E-LAN).";
- reference
- "GS NFV IFA011: Section 7.1.8.6
- LinkBitrateRequirements information element";
- }
-
- leaf leaf {
- type uint32;
- units bits/sec;
- description
- "Throughput requirement of leaf connections to
- the link when applicable to the connectivity
- type (e.g. for E-Tree and E-LAN branches).";
- reference
- "GS NFV IFA011: Section 7.1.8.6
- LinkBitrateRequirements information element";
- }
+ leaf leaf {
+ type uint32;
+ units bits/sec;
description
- "Bitrate requirements for an instantiation level
- or bitrate delta for a scaling step.";
+ "Throughput requirement of leaf connections to
+ the link when applicable to the connectivity
+ type (e.g. for E-Tree and E-LAN branches).";
reference
- "GS NFV IFA011: Section 7.1.10.5
- VirtualLinkBitRateLevel information element";
+ "GS NFV IFA011: Section 7.1.8.6
+ LinkBitrateRequirements information element";
}
description
- "The bitrate to be added or removed to virtual links
- created from particular virtual link descriptors.";
+ "Bitrate requirements for an instantiation level
+ or bitrate delta for a scaling step.";
reference
- "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
- information element";
+ "GS NFV IFA011: Section 7.1.10.5
+ VirtualLinkBitRateLevel information element";
}
description
- "Declares different scaling deltas, each of which is
- applied for one or more scaling steps of this
- aspect.";
+ "The bitrate to be added or removed to virtual links
+ created from particular virtual link descriptors.";
reference
- "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
+ "GS NFV IFA011: Section 7.1.10.4 ScalingDelta
information element";
}
+ description
+ "Declares different scaling deltas, each of which is
+ applied for one or more scaling steps of this
+ aspect.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
+ information element";
+ }
- leaf step-deltas {
- type leafref {
- path "../deltas/id";
- }
- description
- "Identifiers of the individual scaling deltas to be
- applied for the subsequent scaling steps of this
- aspect. The first entry in the array shall correspond
- to the first scaling step (between scale levels 0 to
- 1) and the last entry in the array shall correspond
- to the last scaling step (between maxScaleLevel-1
- and maxScaleLevel).
-
- Each referenced scaling delta shall be declared in
- the 'deltas' attribute.";
- reference
- "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
- information element";
+ leaf step-deltas {
+ type leafref {
+ path "../deltas/id";
}
description
- "A specification of the deltas in terms of number of
- instances of VNFCs and virtual link bit rates that
- correspond to the scaling steps of this aspect. A
- cardinality of zero indicates that this mapping has to
- be specified in a lifecycle management script or be
- otherwise known to the VNFM. The information in this
- attribute, if provided, shall be consistent with the
- information provided in the 'InstantiationLevel'
- information element. If this attribute is provided, it
- shall be provided for all scaling aspects.";
+ "Identifiers of the individual scaling deltas to be
+ applied for the subsequent scaling steps of this
+ aspect. The first entry in the array shall correspond
+ to the first scaling step (between scale levels 0 to
+ 1) and the last entry in the array shall correspond
+ to the last scaling step (between maxScaleLevel-1
+ and maxScaleLevel).
+
+ Each referenced scaling delta shall be declared in
+ the 'deltas' attribute.";
reference
- "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails
information element";
}
+ description
+ "A specification of the deltas in terms of number of
+ instances of VNFCs and virtual link bit rates that
+ correspond to the scaling steps of this aspect. A
+ cardinality of zero indicates that this mapping has to
+ be specified in a lifecycle management script or be
+ otherwise known to the VNFM. The information in this
+ attribute, if provided, shall be consistent with the
+ information provided in the 'InstantiationLevel'
+ information element. If this attribute is provided, it
+ shall be provided for all scaling aspects.";
+ reference
+ "GS NFV IFA011: Section 7.1.10.2 ScalingAspect
+ information element";
}
}
+ }
+
+ container configurable-properties {
+ description
+ "Describes the configurable properties of the VNF
+ (e.g. related to auto scaling and auto healing).";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
- container configurable-properties {
+ leaf is-auto-scalable-enabled {
+ type boolean;
description
- "Describes the configurable properties of the VNF
- (e.g. related to auto scaling and auto healing).";
+ "It permits to enable (TRUE) / disable (FALSE) the
+ auto-scaling functionality.";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
+ }
- leaf is-auto-scalable-enabled {
- type boolean;
- description
- "It permits to enable (TRUE) / disable (FALSE) the
- auto-scaling functionality.";
- reference
- "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
- information element";
- }
+ leaf is-auto-heal-enabled {
+ type boolean;
+ description
+ "It permits to enable (TRUE) / disable (FALSE) the
+ auto-healing functionality.";
+ reference
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
+ }
- leaf is-auto-heal-enabled {
- type boolean;
- description
- "It permits to enable (TRUE) / disable (FALSE) the
- auto-healing functionality.";
- reference
- "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
- information element";
+ list additional-configurable-property {
+ key "key";
+
+ leaf key {
+ type string;
}
- list additional-configurable-property {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "It provides VNF specific configurable properties that can
- be modified using the ModifyVnfConfiguration operation.";
- reference
- "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
- information element";
+ leaf value {
+ type string;
}
+ description
+ "It provides VNF specific configurable properties that can
+ be modified using the ModifyVnfConfiguration operation.";
+ reference
+ "GS NFV IFA011: Section 7.1.12 VnfConfigurableProperties
+ information element";
}
+ }
+
+ container modifiable-attributes {
+ description
+ "Describes the modifiable attributes of the VNF.";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
- container modifiable-attributes {
+ leaf-list extension {
+ type string;
description
- "Describes the modifiable attributes of the VNF.";
+ "Additional VNF-specific attributes of VnfInfo that
+ affect the lifecycle management of a VNF instance and
+ that are writeable.
+
+ For each VNF instance, these attributes are stored
+ persistently by the VNFM and can be queried and
+ modified through the VNFM.
+
+ These attributes are intended to be consumed by the
+ VNFM or by the lifecycle management scripts during the
+ execution of VNF lifecycle management operations.
+
+ Modifying these values has no direct effect on the VNF
+ instance; however, modified values can be considered
+ during subsequent VNF lifecycle management operations,
+ which means that the modified values can indirectly
+ affect the configuration of the VNF instance.";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
-
- leaf-list extension {
- type string;
- description
- "Additional VNF-specific attributes of VnfInfo that
- affect the lifecycle management of a VNF instance and
- that are writeable.
+ "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
+ information element";
+ }
- For each VNF instance, these attributes are stored
- persistently by the VNFM and can be queried and
- modified through the VNFM.
+ leaf-list metadata {
+ type string;
+ description
+ "Additional VNF-specific attributes of VnfInfo that are
+ writeable and that provide metadata describing the VNF
+ instance.
+
+ For each VNF instance, these attributes are stored
+ persistently by the VNFM and can be queried and modified
+ through the VNFM.
+
+ These attributes are intended to provide information to
+ functional blocks external to the VNFM and will not be
+ used by the VNFM or the VNF lifecycle management
+ scripts when executing lifecycle management operations.
+
+ Modifying these attributes has no effect on the VNF
+ instance. It only affects the attribute values stored by
+ the VNFM.";
+ reference
+ "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
+ information element";
+ }
+ }
- These attributes are intended to be consumed by the
- VNFM or by the lifecycle management scripts during the
- execution of VNF lifecycle management operations.
+ list lifecycle-management-script {
+ key "id";
+ description
+ "Includes a list of events and corresponding management
+ scripts performed for the VNF.";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
- Modifying these values has no direct effect on the VNF
- instance; however, modified values can be considered
- during subsequent VNF lifecycle management operations,
- which means that the modified values can indirectly
- affect the configuration of the VNF instance.";
- reference
- "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
- information element";
- }
- leaf-list metadata {
- type string;
- description
- "Additional VNF-specific attributes of VnfInfo that are
- writeable and that provide metadata describing the VNF
- instance.
+ leaf id {
+ type string;
+ description
+ "A unique string that identfies the script in question.";
+ }
- For each VNF instance, these attributes are stored
- persistently by the VNFM and can be queried and modified
- through the VNFM.
+ leaf-list event {
+ type internal-lifecycle-management-script-event;
+ description
+ "Describes VNF lifecycle event(s) or an external stimulus
+ detected on a VNFM reference point.";
+ reference
+ "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
+ information element";
+ }
- These attributes are intended to provide information to
- functional blocks external to the VNFM and will not be
- used by the VNFM or the VNF lifecycle management
- scripts when executing lifecycle management operations.
+ leaf-list lcm-transition-event {
+ type string;
+ description
+ "Describes the transition VNF lifecycle event(s) that
+ cannot be mapped to any of the enumerated values
+ defined for the event attribute.";
+ reference
+ "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
+ information element";
+ }
- Modifying these attributes has no effect on the VNF
- instance. It only affects the attribute values stored by
- the VNFM.";
- reference
- "GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
- information element";
- }
+ leaf script {
+ type string;
+ description
+ "Includes a VNF LCM script (e.g. written in a DSL as
+ specified in requirement VNF_PACK.LCM.001) triggered to
+ react to one of the events listed in the event
+ attribute.";
+ reference
+ "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
+ information element";
}
- list lifecycle-management-script {
- key "id";
+ leaf script-dsl {
+ type string;
description
- "Includes a list of events and corresponding management
- scripts performed for the VNF.";
+ "Defines the domain specific language (i.e. the type) of
+ script that is provided. Types of scripts could include
+ bash, python, etc.";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
+ information element";
+ }
- leaf id {
- type string;
- description
- "A unique string that identfies the script in question.";
- }
+ list script-input {
+ key "key";
- leaf-list event {
- type internal-lifecycle-management-script-event;
- description
- "Describes VNF lifecycle event(s) or an external stimulus
- detected on a VNFM reference point.";
- reference
- "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
- information element";
- }
- leaf-list lcm-transition-event {
- type string;
- description
- "Describes the transition VNF lifecycle event(s) that
- cannot be mapped to any of the enumerated values
- defined for the event attribute.";
- reference
- "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
- information element";
- }
- leaf script {
+ leaf key {
type string;
description
"Includes a VNF LCM script (e.g. written in a DSL as
@@ -2526,145 +2660,136 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
information element";
}
- leaf script-dsl {
+
+ leaf value {
type string;
- description
- "Defines the domain specific language (i.e. the type) of
- script that is provided. Types of scripts could include
- bash, python, etc.";
- reference
- "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
- information element";
- }
- list script-input {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
- description
- "Array of KVP requirements with the key as the parameter
- name and the value as the parameter that need to be
- passed as an input to the script.";
- reference
- "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
- information element";
}
+ description
+ "Array of KVP requirements with the key as the parameter
+ name and the value as the parameter that need to be
+ passed as an input to the script.";
+ reference
+ "GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
+ information element";
}
+ }
- list element-group {
- key "id";
+ list element-group {
+ key "id";
+ description
+ "Describes the associated elements of a VNFD for a certain
+ purpose during VNF lifecycle management.";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
+
+ leaf id {
+ type string;
description
- "Describes the associated elements of a VNFD for a certain
- purpose during VNF lifecycle management.";
+ "Unique identifier of this group in the VNFD.";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
+ information element";
+ }
- leaf id {
- type string;
- description
- "Unique identifier of this group in the VNFD.";
- reference
- "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
- information element";
- }
- leaf description {
- type string;
- description
- "Human readable description of the group.";
- reference
- "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
- information element";
- }
- leaf-list vdu {
- type leafref {
- path "../../nfv:vdu/nfv:id";
- }
- description
- "References to Vdus that are part of this group.";
- reference
- "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
- information element";
+ leaf description {
+ type string;
+ description
+ "Human readable description of the group.";
+ reference
+ "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
+ information element";
+ }
+
+ leaf-list vdu {
+ type leafref {
+ path "../../vdu/id";
}
- leaf-list virtual-link-desc {
- type leafref {
- path "../../nfv:int-virtual-link-desc/nfv:id";
- }
- description
- "References to VnfVirtualLinkDesc that are part of this
- group.";
- reference
- "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
- information element";
+ description
+ "References to Vdus that are part of this group.";
+ reference
+ "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
+ information element";
+ }
+
+ leaf-list virtual-link-desc {
+ type leafref {
+ path "../../int-virtual-link-desc/id";
}
+ description
+ "References to VnfVirtualLinkDesc that are part of this
+ group.";
+ reference
+ "GS NFV IFA011: Section 7.1.4 VnfdElementGroup
+ information element";
}
+ }
- list indicator {
- key "id";
+ list indicator {
+ key "id";
+ description
+ "Declares the VNF indicators that are supported by this
+ VNF.";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
+
+ leaf id {
+ type string;
description
- "Declares the VNF indicators that are supported by this
- VNF.";
+ "Unique identifier";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
+ information element";
+ }
- leaf id {
- type string;
- description
- "Unique identifier";
- reference
- "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
- information element";
- }
- leaf name {
- type string;
- description
- "The human readable name of the VnfIndicator.";
- reference
- "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
- information element";
- }
- leaf-list indicator-value {
- type string;
- description
- "Defines the allowed values or value ranges of this
- indicator.";
- reference
- "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
- information element";
- }
- leaf source {
- type enumeration {
- enum "vnf";
- enum "em";
- enum "both";
- }
- description
- "Describe the source of the indicator. The possible values
- are:
- • VNF.
- • EM.
- • Both.
- This tells the consumer where to send the subscription
- request.";
- reference
- "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
- information element";
- }
+ leaf name {
+ type string;
+ description
+ "The human readable name of the VnfIndicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
+ information element";
}
- leaf-list auto-scale {
+ leaf-list indicator-value {
type string;
description
- "Rule that determines when a scaling action needs to be
- triggered on a VNF instance e.g. based on certain VNF
- indicator values or VNF indicator value changes or a
- combination of VNF indicator value(s) and monitoring
- parameter(s).";
+ "Defines the allowed values or value ranges of this
+ indicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
+ information element";
+ }
+
+ leaf source {
+ type enumeration {
+ enum "vnf";
+ enum "em";
+ enum "both";
+ }
+ description
+ "Describe the source of the indicator. The possible values
+ are:
+ • VNF.
+ • EM.
+ • Both.
+ This tells the consumer where to send the subscription
+ request.";
reference
- "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ "GS NFV IFA011: Section 7.1.11.2 VnfdIndicator
+ information element";
}
}
+
+ leaf-list auto-scale {
+ type string;
+ description
+ "Rule that determines when a scaling action needs to be
+ triggered on a VNF instance e.g. based on certain VNF
+ indicator values or VNF indicator value changes or a
+ combination of VNF indicator value(s) and monitoring
+ parameter(s).";
+ reference
+ "GS NFV IFA011: Section 7.1.2 VNFD information element";
+ }
}
}
diff --git a/src/yang/etsi-nfv-vnfd.yang b/src/yang/etsi-nfv-vnfd.yang
new file mode 100644
index 0000000000000000000000000000000000000000..5ded801b6d367dece55ad824c3fbef16c1c53f0a
--- /dev/null
+++ b/src/yang/etsi-nfv-vnfd.yang
@@ -0,0 +1,26 @@
+module etsi-nfv-vnfd {
+ yang-version 1.1;
+ namespace "urn:etsi:nfv:yang:etsi-nfv-vnfd";
+ prefix vnfd;
+
+ import etsi-nfv-descriptors {
+ prefix vnf;
+ }
+
+ organization
+ "European Telecommunications Standards Institute (ETSI)";
+
+ description
+ "Virtual Network Function Descriptor.";
+
+ revision 2019-03-18 {
+ description
+ "Initial revision.
+ VNFD according to ETSI GS NFV-IFA 011 Ed261v254.";
+ }
+
+ container vnfd {
+ presence "VNFD container.";
+ uses vnf:vnfd;
+ }
+}