diff --git a/.jenkins.sh b/.jenkins.sh
index 3193dce78a4f8e22765fb624a5f507078b631f1d..2292aca1aee0aae15922015646a649b6e8bf94f9 100644
--- a/.jenkins.sh
+++ b/.jenkins.sh
@@ -6,7 +6,7 @@
# https://forge.etsi.org/etsi-software-license
YANG_MODULES="yang/yang/*"
-OUTPUT="etsi-nfv.html"
+OUTPUT="etsi-nfv-descriptors.html"
IMG_NAME="sol006"
VERSION=latest
IMG="$IMG_NAME:$VERSION"
diff --git a/example-data/complex-vnfd.xml b/example-data/complex-vnfd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..53a50d091fe67c66880362719016299c6c6232cf
--- /dev/null
+++ b/example-data/complex-vnfd.xml
@@ -0,0 +1,272 @@
+
+
+ complex-vnf
+ My Company
+ complex-vnf
+ 1.0
+ 1.0
+ netconf
+
+ control-plane-active
+ control-plane-active
+
+ internal
+ internal-vl
+ ipv4
+
+
+ mgmt
+ mgmt
+ ipv4
+
+ CP
+ root
+ CP
+
+
+ control-plane-standby
+ control-plane-standby
+
+ internal
+ internal-vl
+ ipv4
+
+
+ mgmt
+ mgmt
+ ipv4
+
+ CP
+ root
+ CP
+
+
+ data-plane
+ data-plane
+
+ in
+ ipv4
+
+
+ internal
+ internal-vl
+ ipv4
+
+
+ out
+ ipv4
+
+ DP
+ root
+ DP
+
+
+ CP
+
+ 16.0
+
+
+ 8
+
+
+
+ DP
+
+ 32.0
+
+
+ 16
+
+
+
+ root
+ root-storage
+ 10
+
+
+ CP
+ CP
+ 1.1
+
+ sha-224
+ deadbeef
+
+ bare
+ qcow2
+ 2.0
+ 1
+ http://mycompany.images.com/control-plane.qcow2
+
+
+ DP
+ DP
+ 1.1
+
+ sha-224
+ deadbeef
+
+ bare
+ qcow2
+ 2.0
+ 1
+ http://mycompany.images.com/data-plane.qcow2
+
+
+ internal-vl
+
+
+ ipv4
+
+
+
+
+ mgmt
+
+
+ ipv4
+
+
+
+
+ in
+
+ data-plane
+ in
+
+ ipv4
+
+
+ mgmt
+ mgmt
+ ipv4
+
+
+ out
+
+ data-plane
+ out
+
+ ipv4
+
+
+ gold
+
+ control-plane-active
+ 1
+ 1
+
+ control-plane
+
+
+
+ control-plane-standby
+ 1
+ 1
+
+ control-plane
+
+
+
+ data-plane
+ 2
+ 8
+
+
+ il-1
+
+ control-plane-active
+ 1
+
+
+ control-plane-standby
+ 1
+
+
+ data-plane
+ 2
+
+
+
+ il-2
+
+ control-plane-active
+ 1
+
+
+ control-plane-standby
+ 1
+
+
+ data-plane
+ 4
+
+
+ il-1
+
+ control-plane
+ anti-affinity
+ nfvi-node
+
+
+
+ silver
+
+ control-plane-active
+ 1
+ 1
+
+ control-plane
+
+
+
+ control-plane-standby
+ 1
+ 1
+
+ control-plane
+
+
+
+ data-plane
+ 1
+ 4
+
+
+ il-1
+
+ control-plane-active
+ 1
+
+
+ control-plane-standby
+ 1
+
+
+ data-plane
+ 1
+
+
+
+ il-2
+
+ control-plane-active
+ 1
+
+
+ control-plane-standby
+ 1
+
+
+ data-plane
+ 2
+
+
+ il-1
+
+ control-plane
+ anti-affinity
+ nfvi-node
+
+
+
+
diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 3368af1e0b1ca2d7fa77022a5368e6ffa720dfe0..1ee310fab7325b42f6337b3de3ad7e50e3e27700 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -1,4 +1,4 @@
-
+
ASA
My Company
@@ -11,21 +11,21 @@
Firewall VDU
inside
- Ethernet
+ ethernet
management
- Ethernet
+ ethernet
outside
- Ethernet
+ ethernet
asa-vcd
asa-vsd
asa-image
-
+
asa-vcd
4.0
@@ -33,19 +33,26 @@
2
-
+
asa-vsd
- root
+ root-storage
0
asa-image
+ ASA image
+ 1.1
+
+ sha-224
+ deadbeef
+
bare
qcow2
1
2.0
- http://www.cisco.com/asa.qcow2
+ 1
+ http://mycompany.images.com/asa.qcow2
inside
@@ -53,7 +60,7 @@
firewall
inside
- Ethernet
+ ethernet
management
@@ -61,7 +68,7 @@
firewall
management
- Ethernet
+ ethernet
outside
@@ -69,7 +76,7 @@
firewall
outside
- Ethernet
+ ethernet
normal
@@ -81,14 +88,14 @@
double
- firewall
+ firewall
2
single
- firewall
+ firewall
1
@@ -118,21 +125,21 @@
Router VDU
left
- Ethernet
+ ethernet
management
- Ethernet
+ ethernet
right
- Ethernet
+ ethernet
csr-vcd
csr-vsd
csr-image
-
+
csr-vcd
4.0
@@ -140,19 +147,26 @@
2
-
+
csr-vsd
- root
+ root-storage
0
csr-image
+ CSR image
+ 1.1
+
+ sha-224
+ deadbeef
+
bare
qcow2
1
2.0
- http://www.cisco.com/csr.qcow2
+ 1
+ http://mycompany.images.com/csr.qcow2
left
@@ -160,7 +174,7 @@
router
left
- Ethernet
+ ethernet
management
@@ -168,7 +182,7 @@
router
management
- Ethernet
+ ethernet
right
@@ -176,7 +190,7 @@
router
right
- Ethernet
+ ethernet
normal
@@ -188,14 +202,14 @@
double
- router
+ router
2
single
- router
+ router
1
@@ -267,7 +281,7 @@
fw2dpi
- Ethernet
+ ethernet
@@ -282,7 +296,7 @@
mgmt
- IPv4
+ ipv4
@@ -297,7 +311,7 @@
r2fw
- Ethernet
+ ethernet
@@ -522,7 +536,7 @@
r2fw
- Ethernet
+ ipv4
@@ -594,7 +608,7 @@
1.0
outside
- Ethernet
+ ethernet
diff --git a/run-test.sh b/run-test.sh
index 36bc6ec0a2dcc6e991c125f4ff3fd8cfc96a66ae..471b13aec126d886f0f2d6f3b1fb8eba09b89090 100755
--- a/run-test.sh
+++ b/run-test.sh
@@ -10,13 +10,15 @@ cd src
echo "Testing compilation"
CONFD_OPTS="--fail-on-warnings"
CONFD_OPTS=""
-confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv.fxs etsi-nfv.yang
+confdc -c $CONFD_OPTS -o /opt/confd/etc/confd/etsi-nfv-descriptors.fxs etsi-nfv-descriptors.yang
echo "Starting ConfD"
confd
-echo "Loading Data"
+echo "Loading data for the simple example"
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"
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 8dabf7b33f172fba386349e97e31bc50faa3ee11..8c641a8a3772ac125113e413524b3e23510ce9ef 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -1,6 +1,6 @@
submodule etsi-nfv-common {
yang-version 1.1;
- belongs-to etsi-nfv {
+ belongs-to etsi-nfv-descriptors {
prefix nfv;
}
description
@@ -20,22 +20,22 @@ submodule etsi-nfv-common {
*/
identity layer-protocol {
}
- identity Ethernet {
+ identity ethernet {
base layer-protocol;
}
- identity MPLS {
+ identity mpls {
base layer-protocol;
}
- identity ODU2 {
+ identity odu2 {
base layer-protocol;
}
- identity IPv4 {
+ identity ipv4 {
base layer-protocol;
}
- identity IPv6 {
+ identity ipv6 {
base layer-protocol;
}
- identity Pseudo-Wire {
+ identity pseudo-wire {
base layer-protocol;
}
@@ -177,6 +177,69 @@ submodule etsi-nfv-common {
base cp-role;
}
+ identity checksum-algorithm {
+ description
+ "Identifies the algorithms supported for the purpose of
+ calculating the checksum.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
+ }
+
+ identity sha-224 {
+ base checksum-algorithm;
+ description
+ "SHA-224.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
+ }
+
+ identity sha-256 {
+ base checksum-algorithm;
+ description
+ "SHA-256.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
+ }
+
+ identity sha-384 {
+ base checksum-algorithm;
+ description
+ "SHA-384.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
+ }
+
+ identity sha-512 {
+ base checksum-algorithm;
+ description
+ "SHA-512.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 Checksum information element.";
+ }
+
+ identity storage-type {
+ description
+ "Base type of storage that identities can derive from.";
+ }
+
+ identity root-storage {
+ base storage-type;
+ description
+ "Root type of storage.";
+ }
+
+ identity swap-storage {
+ base storage-type;
+ description
+ "Swap type of storage.";
+ }
+
+ identity ephemeral-storage {
+ base storage-type;
+ description
+ "Ephemeral type of storage.";
+ }
+
/*
* Typedefs
*/
@@ -257,13 +320,13 @@ submodule etsi-nfv-common {
key "protocol";
leaf protocol {
- type identityref {
- base layer-protocol;
- }
+ type identityref {
+ base layer-protocol;
+ }
}
description
- "Identifies the protocol this VL gives access to (Ethernet,
- MPLS, ODU2, IPV4, IPV6, Pseudo-Wire).The top layer
+ "Identifies the protocols that the VL uses (Ethernet,
+ MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer
protocol of the VL protocol stack shall always be provided.
The lower layer protocols may be included when there are
specific requirements on these layers.";
@@ -392,7 +455,7 @@ submodule etsi-nfv-common {
}
leaf-list layer-protocol {
- default Ethernet;
+ default ethernet;
type identityref {
base layer-protocol;
}
diff --git a/src/yang/etsi-nfv.yang b/src/yang/etsi-nfv-descriptors.yang
similarity index 86%
rename from src/yang/etsi-nfv.yang
rename to src/yang/etsi-nfv-descriptors.yang
index 96d0db1afe03b81d01fd56e05d7021246ca3dcea..d6421299979a409fc26e768e82e031d1ff957132 100644
--- a/src/yang/etsi-nfv.yang
+++ b/src/yang/etsi-nfv-descriptors.yang
@@ -1,6 +1,6 @@
-module etsi-nfv {
+module etsi-nfv-descriptors {
yang-version 1.1;
- namespace "urn:etsi:params:xml:ns:yang:etsi-nfv";
+ namespace "urn:etsi:nfv:yang:etsi-nfv-descriptors";
prefix nfv;
include etsi-nfv-common;
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index de25c3808cc750e8be662cf5f38f42da79918753..483b2460c7a5a89462187be61d197046dcd08e8b 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -1,6 +1,6 @@
submodule etsi-nfv-ns {
yang-version 1.1;
- belongs-to etsi-nfv {
+ belongs-to etsi-nfv-descriptors {
prefix nfv;
}
@@ -15,10 +15,10 @@ submodule etsi-nfv-ns {
description
"Initial revision
Common data structure to support NSD according to:
- ETSI GS NFV-IFA 011 Ed261v252";
+ ETSI GS NFV-IFA 014 Ed261v252";
reference
- "ETSI GS NFV-IFA 011 Ed261v252";
+ "ETSI GS NFV-IFA 014 Ed261v252";
}
grouping resource-handle {
@@ -146,63 +146,66 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.2.3.2 Sapd information element";
}
- leaf virtual-link-desc {
- type leafref {
- path "../../virtual-link-desc/id";
+ 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";
}
- 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";
+ choice associated-cpd-id {
+ container vnf {
+ leaf vnfd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../nfv:vnfd/nfv:id";
+ }
+ must "boolean(../../../vnfd-id[.=current()])";
}
- 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)/../nfv:ext-cpd/nfv:id";
+ }
}
}
- }
- container pnf {
- leaf pnfd-id {
- mandatory true;
+
+ container pnf {
+ leaf pnfd-id {
+ mandatory true;
type leafref {
- path "../../../../nfv:pnfd/nfv:id";
+ path "../../../../nfv:pnfd/nfv:id";
+ }
+ must "boolean(../pnfd-id[.=current()])";
}
- 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)/../nfv:ext-cpd/nfv:id";
+ }
}
}
- }
- container ns {
- leaf nsd-id {
- mandatory true;
- type leafref {
- path "../../../../nfv:nsd/nfv:id";
+ container ns {
+ leaf nsd-id {
+ mandatory true;
+ type leafref {
+ path "../../../../nfv:nsd/nfv:id";
+ }
+ must "boolean(../nsd-id[.=current()])";
}
- 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)/../nfv:sapd/nfv:id";
+ }
}
}
}
@@ -494,7 +497,7 @@ submodule etsi-nfv-ns {
container ns {
leaf nsd-id {
must ". = deref(../../nested-ns-profile-id)/" +
- "../nsd-id" {
+ "../nsd-id" {
}
type leafref {
@@ -754,7 +757,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
- mandatory true;
+ default 1;
type uint16;
description
"Minimum number of instances of the VNF based on this
@@ -765,7 +768,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
- mandatory true;
+ default 1;
type uint16;
description
"Maximum number of instances of the VNF based on this
@@ -1178,7 +1181,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of VNF instances required for
@@ -1238,7 +1241,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of nested NS instances required
@@ -1345,7 +1348,7 @@ submodule etsi-nfv-ns {
leaf min-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Minimum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
@@ -1356,7 +1359,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Maximum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index ae7ef81fd3c4659ed7555fcc33202a7355113396..48499039c3757431b4ed89d5a83bccc246d73d3e 100644
--- a/src/yang/etsi-nfv-pnf.yang
+++ b/src/yang/etsi-nfv-pnf.yang
@@ -1,6 +1,6 @@
submodule etsi-nfv-pnf {
yang-version 1.1;
- belongs-to etsi-nfv {
+ belongs-to etsi-nfv-descriptors {
prefix nfv;
}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 7f653da38363f5ba4e1aee5cdd12e8019f88790d..38ab691f29d74a2a0743ce52fde76ae1c6f22f4b 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -1,6 +1,6 @@
submodule etsi-nfv-vnf {
yang-version 1.1;
- belongs-to etsi-nfv {
+ belongs-to etsi-nfv-descriptors {
prefix nfv;
}
@@ -16,15 +16,15 @@ submodule etsi-nfv-vnf {
description
"Models for VNFD according to GS NFV-IFA 011.";
- revision 2018-06-19 {
+ revision 2019-03-18 {
description
"Initial revision.
Common data structure to support VNFD according to:
- VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
+ VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
reference
- "ETSI GS NFV-IFA 011 Ed251v243";
+ "ETSI GS NFV-IFA 011 Ed261v254";
}
grouping virtual-network-interface-requirements {
@@ -56,7 +56,7 @@ submodule etsi-nfv-vnf {
}
leaf support-mandatory {
- mandatory true;
+ default "false";
type boolean;
description
"Indicates whether fulfilling the constraint is
@@ -70,6 +70,7 @@ submodule etsi-nfv-vnf {
list network-interface-requirements {
key "key";
min-elements "1";
+ max-elements "1";
leaf key {
type string;
@@ -88,7 +89,7 @@ submodule etsi-nfv-vnf {
leaf nicio-requirements {
type leafref {
- path "/nfv/vnfd/virtual-compute-descriptor/id";
+ path "/nfv/vnfd/virtual-compute-desc/id";
}
description
"This references (couples) the CPD with any logical node I/O
@@ -290,10 +291,9 @@ submodule etsi-nfv-vnf {
}
leaf virtual-compute-desc {
type leafref {
- path "../../nfv:virtual-compute-descriptor/" +
- "nfv:id";
+ path "../../nfv:virtual-compute-desc/nfv:id";
}
- must "../../nfv:virtual-compute-descriptor[id=current()]/" +
+ must "../../nfv:virtual-compute-desc[id=current()]/" +
"nfv:virtual-memory/size >=" +
"../../nfv:sw-image-desc[id=current()/" +
"../sw-image-desc]/min-ram" {
@@ -394,14 +394,8 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.7,
VnfcConfigurableProperties Information element.";
}
- list boot-data {
- key "key";
- leaf key {
- type string;
- }
- leaf value {
- type string;
- }
+ 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
@@ -414,7 +408,7 @@ submodule etsi-nfv-vnf {
}
}
- list virtual-compute-descriptor {
+ list virtual-compute-desc {
key "id";
description
"Defines descriptors of virtual compute resources to be
@@ -623,7 +617,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
- mandatory true;
+ default 1;
description
"Number of virtual CPUs.";
reference
@@ -733,12 +727,10 @@ submodule etsi-nfv-vnf {
leaf type-of-storage {
// Needed to be able to onboard images
- type enumeration {
- enum "root";
- enum "swap";
- enum "ephemeral";
- }
- mandatory true;
+ default "root-storage";
+ type identityref {
+ base storage-type;
+ }
description
"Type of virtualised storage resource (e.g. volume,
object).";
@@ -812,6 +804,7 @@ submodule etsi-nfv-vnf {
information element";
}
leaf name {
+ mandatory true;
type string;
description
"The name of this software image.";
@@ -819,7 +812,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
+
leaf version {
+ mandatory true;
type string;
description
"The version of this software image.";
@@ -827,16 +822,42 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
- leaf checksum {
- type string;
+
+ container checksum {
+
+ leaf algorithm {
+ mandatory true;
+ type identityref {
+ base checksum-algorithm;
+ }
+ 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 {
- mandatory true;
+ default "bare";
type enumeration {
enum "aki" {
description
@@ -875,8 +896,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
+
leaf disk-format {
- mandatory true;
+ default "qcow2";
type enumeration {
enum "aki" {
description
@@ -933,6 +955,7 @@ submodule etsi-nfv-vnf {
"The disk format of a software image is the format of
the underlying disk image.";
}
+
leaf min-disk {
type uint64;
units "GB";
@@ -947,6 +970,7 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5, SwImageDesc
information element.";
}
+
leaf min-ram {
type decimal64 {
fraction-digits 1;
@@ -964,7 +988,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5, SwImageDesc
information element.";
}
+
leaf size {
+ mandatory true;
type uint64;
units "GB";
description
@@ -973,8 +999,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5, SwImageDesc
information element.";
}
+
leaf image {
- mandatory true;
+ default ".";
type inet:uri;
description
"This is a reference to the actual software image.
@@ -984,6 +1011,7 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5, SwImageDesc
information element.";
}
+
leaf operating-system {
type string;
description
@@ -994,6 +1022,7 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5, SwImageDesc
information element.";
}
+
leaf-list supported-virtualization-environment {
type string;
description
@@ -1149,9 +1178,9 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
- type leafref {
- path "deref(../vdu-id)/../int-cpd/id";
- }
+ type leafref {
+ path "deref(../vdu-id)/../int-cpd/id";
+ }
}
}
}
@@ -1204,7 +1233,7 @@ submodule etsi-nfv-vnf {
}
leaf min-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Minimum number of instances of the VNFC based on this
VDU that is permitted to exist for this flavour.";
@@ -1214,15 +1243,17 @@ submodule etsi-nfv-vnf {
}
leaf max-number-of-instances {
type uint16;
- mandatory true;
+ 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;
+
list affinity-or-anti-affinity-group {
key "id";
+
description
"Identifier(s) of the affinity or anti-affinity
group(s) the VDU belongs to.";
@@ -1242,29 +1273,9 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
information element.";
}
- leaf type {
- type enumeration {
- enum affinity;
- enum anti-affinity;
- }
- description
- "Specifies whether the rule is an affinity rule or an
- anti-affinity rule.";
- reference
- "GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
- information element.";
- }
- leaf scope {
- type affinity-scope;
- description
- "Specifies the scope of the rule, possible values are
- 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'";
- reference
- "GS NFV IFA011: Section 7.1.8.12, AffinityOrAntiAffinity
- information element.";
- }
}
}
+
list virtual-link-profile {
key "id flavour";
description
@@ -1592,7 +1603,7 @@ submodule etsi-nfv-vnf {
information element";
}
list vdu-level {
- key "id";
+ key "vdu-id";
min-elements 1;
description
"Sets the number of instances for the VDU in this
@@ -1600,7 +1611,8 @@ submodule etsi-nfv-vnf {
reference
"GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
information element";
- leaf id {
+
+ leaf vdu-id {
type leafref {
path "../../../../nfv:vdu/nfv:id";
}
@@ -1613,12 +1625,12 @@ submodule etsi-nfv-vnf {
leaf number-of-instances {
type uint16;
must ". <= ../../../../nfv:df/" +
- "nfv:vdu-profile[id=current()/../nfv:id]/" +
+ "nfv:vdu-profile[id=current()/../nfv:vdu-id]/" +
"nfv:max-number-of-instances";
must ". >= ../../../../nfv:df/" +
- "nfv:vdu-profile[id=current()/../nfv:id]/" +
+ "nfv:vdu-profile[id=current()/../nfv:vdu-id]/" +
"nfv:min-number-of-instances";
- mandatory true;
+ default 1;
description
"Number of instances of VNFC based on this VDU to
deploy for this level.";
@@ -1628,7 +1640,7 @@ submodule etsi-nfv-vnf {
}
}
list scaling-info {
- key "id";
+ key "scaling-aspect-id";
description
"The InstantiationLevel information element describes a
given level of resources to be instantiated within a
@@ -1637,7 +1649,8 @@ submodule etsi-nfv-vnf {
reference
"GS NFV IFA011: Section 7.1.8.7 InstantiationLevel
information element";
- leaf id {
+
+ leaf scaling-aspect-id {
type leafref {
path "../../../nfv:scaling-aspect/nfv:id";
}
@@ -1803,6 +1816,7 @@ submodule etsi-nfv-vnf {
list parameter {
key "key";
+
leaf key {
type string;
}
@@ -2037,6 +2051,118 @@ submodule etsi-nfv-vnf {
AffinityOrAntiAffinityGroup information element";
}
}
+
+ list indicator {
+ key "id";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ 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
+ "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 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";
+ }
+
+ 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";
+ }
+ 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;
+ }
+
+ leaf value {
+ type string;
+ }
+ }
+
+ 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";
@@ -2307,7 +2433,23 @@ submodule etsi-nfv-vnf {
leaf-list extension {
type string;
description
- "'Extension' attributes of VnfInfo that are writeable.";
+ "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.14 VnfInfoModifiableAttributes
information element";
@@ -2315,7 +2457,22 @@ submodule etsi-nfv-vnf {
leaf-list metadata {
type string;
description
- "'Metadata' attributes of VnfInfo that are writeable.";
+ "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";
@@ -2323,14 +2480,20 @@ submodule etsi-nfv-vnf {
}
list lifecycle-management-script {
- key "event";
+ 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";
- leaf event {
+ leaf id {
+ type string;
+ description
+ "A unique string that identfies the script in question.";
+ }
+
+ leaf-list event {
type internal-lifecycle-management-script-event;
description
"Describes VNF lifecycle event(s) or an external stimulus
@@ -2355,7 +2518,10 @@ submodule etsi-nfv-vnf {
"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.";
+ attribute.
+
+ The string value specified here is a path to a file in
+ the VNF package.";
reference
"GS NFV IFA011: Section 7.1.13 LifeCycleManagementScript
information element";