diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 42ddfedf1554cdf4edb324dc2b29098af49eaa5f..24ed9984cd8cf209a27a0d888a0079bd90f034e0 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -11,17 +11,14 @@
Firewall VDU
inside
- inside
Ethernet
management
- management
Ethernet
outside
- outside
Ethernet
asa-vcd
@@ -51,14 +48,26 @@
inside
+
+ firewall
+ inside
+
Ethernet
management
+
+ firewall
+ management
+
Ethernet
outside
+
+ firewall
+ outside
+
Ethernet
@@ -97,17 +106,14 @@
Router VDU
left
- left
Ethernet
management
- management
Ethernet
right
- right
Ethernet
csr-vcd
@@ -137,14 +143,26 @@
left
+
+ router
+ left
+
Ethernet
management
+
+ router
+ management
+
Ethernet
right
+
+ router
+ right
+
Ethernet
@@ -225,7 +243,9 @@
fw2dpi
1.0
- Ethernet
+
+ Ethernet
+
normal
@@ -239,7 +259,9 @@
mgmt
1.0
- IPv4
+
+ IPv4
+
normal
@@ -253,7 +275,9 @@
r2fw
1.0
- Ethernet
+
+ Ethernet
+
normal
@@ -447,7 +471,9 @@
r2fw
1.0
- IPv4
+
+ IPv4
+
r2fw
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 07b26dd7f586133b934ea8ab24c9dbcfc2bdb010..6989f03755e8892837822a1d9107d00bd8aedeba 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -6,13 +6,13 @@ submodule etsi-nfv-common {
description
"Common data types for ETSI data models.";
- revision 2018-06-19 {
+ revision 2019-03-18 {
description
"Initial revision
Common data structures to support VNFD and NSD according to:
- ETSI GS NFV-IFA 014 Ed251v244
- ETSI GS NFV-IFA 011 Ed251v243";
+ ETSI GS NFV-IFA 014 Ed261v252
+ ETSI GS NFV-IFA 011 Ed261v254";
}
/*
@@ -253,14 +253,20 @@ submodule etsi-nfv-common {
grouping connectivity-type {
container connectivity-type {
- leaf layer-protocol {
- mandatory true;
- type identityref {
- base layer-protocol;
- }
+ list layer-protocol {
+ key "protocol";
+
+ leaf protocol {
+ type identityref {
+ base layer-protocol;
+ }
+ }
description
- "Identifies the protocol this VL gives access to (Ethernet,
- MPLS, ODU2, IPV4, IPV6, Pseudo-Wire).";
+ "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.";
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element.";
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index a75279e57de89e8678340557546d287ea88b8223..5397066ca1a70f44ffb26ad704435655bd7e9ad3 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -4,24 +4,21 @@ submodule etsi-nfv-ns {
prefix nfv;
}
- import etsi-nfv-common {
- prefix common;
- }
-
+ include etsi-nfv-common;
include etsi-nfv-vnf;
include etsi-nfv-pnf;
description
"Models for NS according to ETSI GS NFV-IFA 014.";
- revision 2017-01-20 {
+ revision 2019-03-18 {
description
"Initial revision
Common data structure to support NSD according to:
- ETSI GS NFV-IFA 011 Ed251v243";
+ ETSI GS NFV-IFA 014 Ed261v252";
reference
- "ETSI GS NFV-IFA 011 Ed251v243";
+ "ETSI GS NFV-IFA 014 Ed261v252";
}
grouping resource-handle {
@@ -248,7 +245,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses common:connectivity-type;
+ uses connectivity-type;
list df {
key "id";
@@ -272,6 +269,7 @@ submodule etsi-nfv-ns {
}
container qos {
+ presence "VL QoS parameters";
description
"The QoS information element specifies quality of
service parameters applicable to a VL.";
@@ -364,7 +362,7 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
}
- uses common:security-parameters;
+ uses security-parameters;
}
list vnffgd {
@@ -485,7 +483,7 @@ submodule etsi-nfv-ns {
}
container ns {
leaf nsd-id {
- must ". = deref(../../ns-profile-id)/../nsd-id" {
+ must ". = deref(../../nested-ns-profile-id)/../nsd-id" {
}
type leafref {
@@ -745,7 +743,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
@@ -756,7 +754,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
@@ -766,7 +764,7 @@ submodule etsi-nfv-ns {
element";
}
- uses common:local-affinity-or-anti-affinity-rule;
+ uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -932,7 +930,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses common:local-affinity-or-anti-affinity-rule;
+ uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -959,7 +957,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
container min-bitrate-requirements {
description
@@ -968,7 +966,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
}
@@ -1048,7 +1046,7 @@ submodule etsi-nfv-ns {
leaf affinity-type {
mandatory true;
- type common:affinity-type;
+ type affinity-type;
description
"Specifies the type of relationship that the members of
the group have: 'affinity' or 'anti-affinity.'";
@@ -1059,7 +1057,7 @@ submodule etsi-nfv-ns {
leaf affinity-scope {
mandatory true;
- type common:affinity-scope;
+ type affinity-scope;
description
"Specifies the scope of the affinity or anti-affinity
relationship e.g. a NFVI node, an NFVI PoP, etc.";
@@ -1123,7 +1121,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of VNF instances required for
@@ -1156,7 +1154,7 @@ submodule etsi-nfv-ns {
VirtualLinkToLevelMapping information element";
}
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
list ns-to-level-mapping {
@@ -1183,7 +1181,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of nested NS instances required
@@ -1289,7 +1287,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
@@ -1300,7 +1298,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
@@ -1484,7 +1482,7 @@ submodule etsi-nfv-ns {
}
}
}
- uses common:security-parameters;
+ uses security-parameters;
}
}
}
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index 1bfad35ef488ebf8b45ed1a91740501bb7ce3aa9..c7a8ff01e49c21d2606581d34a19eb87e01b7e34 100644
--- a/src/yang/etsi-nfv-pnf.yang
+++ b/src/yang/etsi-nfv-pnf.yang
@@ -12,15 +12,15 @@ submodule etsi-nfv-pnf {
description
"Models for PNFD according to GS NFV-IFA 014.";
- revision 2018-06-25 {
+ revision 2019-03-18 {
description
"Initial revision.
Common data structure to support VNFD according to:
- ETSI GS NFV-IFA 014 Ed251v244";
+ ETSI GS NFV-IFA 014 Ed261v252";
reference
- "ETSI GS NFV-IFA 014 Ed251v244";
+ "ETSI GS NFV-IFA 014 Ed261v252";
}
grouping pnfd {
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index a3ee11e5cdce4766f424f5f0ea6252b37e71c104..3be1321defcfbdf383f132f12e03a095e7d07652 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -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 {
@@ -54,7 +54,7 @@ submodule etsi-nfv-vnf {
VirtualNetworkInterfaceRequirements information element";
}
leaf support-mandatory {
- mandatory true;
+ default "false";
type boolean;
description
"Indicates whether fulfilling the constraint is
@@ -117,7 +117,7 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
}
leaf layer-protocol {
- mandatory true;
+ default Ethernet;
type identityref {
base layer-protocol;
}
@@ -701,7 +701,7 @@ submodule etsi-nfv-vnf {
range "0..max";
}
units "Gb";
- mandatory true;
+ default 1;
description
"Amount of virtual memory in MB.";
reference
@@ -773,7 +773,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
- mandatory true;
+ default 1;
description
"Number of virtual CPUs.";
reference
@@ -820,7 +820,7 @@ submodule etsi-nfv-vnf {
container virtual-cpu-pinning {
presence "Set to specify CPU pinning.";
leaf cpu-pinning-policy {
- mandatory true;
+ default "dynamic";
type enumeration {
enum "static";
enum "dynamic";
@@ -866,7 +866,7 @@ submodule etsi-nfv-vnf {
enum "swap";
enum "ephemeral";
}
- mandatory true;
+ default "root";
description
"Type of virtualised storage resource (e.g. volume,
object).";
@@ -877,7 +877,7 @@ submodule etsi-nfv-vnf {
leaf size-of-storage {
type uint64;
units "Gb";
- mandatory true;
+ default 0;
description
"Size of virtualised storage resource (e.g. size of
volume, in Gb)";
@@ -955,8 +955,26 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
- leaf checksum {
- type string;
+ container checksum {
+ leaf algorithm {
+ type string;
+ description
+ "Species the algorithm used to obtain the checksum
+ value.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 ChecksumData
+ information element.";
+ }
+ leaf hash {
+ 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
@@ -964,7 +982,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf container-format {
- mandatory true;
+ default "bare";
type enumeration {
enum "aki" {
description
@@ -1004,7 +1022,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf disk-format {
- mandatory true;
+ default "qcow2";
type enumeration {
enum "aki" {
description
@@ -1102,7 +1120,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf image {
- mandatory true;
+ default ".";
type inet:uri;
description
"This is a reference to the actual software image.
@@ -1169,6 +1187,7 @@ submodule etsi-nfv-vnf {
information element.";
}
container qos {
+ presence "VL QoS parameters";
description
"QoS of the VL.";
reference
@@ -1274,7 +1293,9 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
- path "deref(../vdu-id)/../int-cpd/id";
+ type leafref {
+ path "deref(../vdu-id)/../int-cpd/id";
+ }
}
}
}
@@ -1327,7 +1348,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.";
@@ -1337,7 +1358,7 @@ 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
@@ -1498,7 +1519,7 @@ submodule etsi-nfv-vnf {
must ". >= ../../../../nfv:df/" +
"nfv:vdu-profile[id=current()/../nfv: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.";
@@ -1795,6 +1816,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";
@@ -2063,7 +2196,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";
@@ -2071,7 +2220,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";
diff --git a/src/yang/etsi-nfv.yang b/src/yang/etsi-nfv.yang
index a209fc30f22d3c0a1cbe136c512ca4ec9be6ac12..96d0db1afe03b81d01fd56e05d7021246ca3dcea 100644
--- a/src/yang/etsi-nfv.yang
+++ b/src/yang/etsi-nfv.yang
@@ -14,11 +14,11 @@ module etsi-nfv {
description
"Network Function Virtualization Descriptors";
- revision 2018-06-13 {
+ revision 2019-03-18 {
description
"Initial revision.
- NSD and PNFD according to ETSI GS NFV-IFA 014 Ed251v244
- VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
+ NSD and PNFD according to ETSI GS NFV-IFA 014 Ed261v252
+ VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
}
container nfv {