diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 92db22da2c2bf0a21920310c7d5a8c1eae2d4aa3..59c0f5b3b27cf2b7bbd969150808bdb36c5c6b8b 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
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index 2795b7ff241124b3942e7a5fad374f16fbca3f06..dee745419beeb957531e73ebf4924f9aa4d853b5 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -4,10 +4,7 @@ submodule etsi-nfv-ns {
prefix nfv;
}
- import etsi-nfv-common {
- prefix common;
- }
-
+ include etsi-nfv-common;
include etsi-nfv-vnf;
include etsi-nfv-pnf;
@@ -345,7 +342,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 {
@@ -495,7 +492,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 {
@@ -755,7 +752,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
@@ -766,7 +763,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
@@ -776,7 +773,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";
@@ -988,7 +985,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";
@@ -1015,7 +1012,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
@@ -1024,7 +1021,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;
}
}
@@ -1104,7 +1101,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.'";
@@ -1115,7 +1112,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.";
@@ -1179,7 +1176,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of VNF instances required for
@@ -1212,7 +1209,7 @@ submodule etsi-nfv-ns {
VirtualLinkToLevelMapping information element";
}
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
list ns-to-level-mapping {
@@ -1239,7 +1236,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 +1342,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 +1353,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
@@ -1567,7 +1564,7 @@ submodule etsi-nfv-ns {
}
}
}
- uses common:security-parameters;
+ uses security-parameters;
}
}
}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 19827899615e6ce07f260c63ff839136af1b3b71..2760632edba73cbd8b5389d537f2bf060580413f 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -56,7 +56,7 @@ submodule etsi-nfv-vnf {
}
leaf support-mandatory {
- mandatory true;
+ default "false";
type boolean;
description
"Indicates whether fulfilling the constraint is
@@ -623,7 +623,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
- mandatory true;
+ default 1;
description
"Number of virtual CPUs.";
reference
@@ -738,7 +738,7 @@ submodule etsi-nfv-vnf {
enum "swap";
enum "ephemeral";
}
- mandatory true;
+ default "root";
description
"Type of virtualised storage resource (e.g. volume,
object).";
@@ -836,7 +836,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf container-format {
- mandatory true;
+ default "bare";
type enumeration {
enum "aki" {
description
@@ -876,7 +876,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf disk-format {
- mandatory true;
+ default "qcow2";
type enumeration {
enum "aki" {
description
@@ -974,7 +974,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.
@@ -1148,7 +1148,9 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
- path "deref(../vdu-id)/../int-cpd/id";
+ type leafref {
+ path "deref(../vdu-id)/../int-cpd/id";
+ }
}
}
}
@@ -1201,7 +1203,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.";
@@ -1211,7 +1213,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
@@ -1615,7 +1617,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.";
@@ -2034,6 +2036,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";