diff --git a/example-data/complex-vnfd.xml b/example-data/complex-vnfd.xml
index 33cbe843e260fb7bb20cae9295258d18f1ecc13a..b4191b5f8b4ec905b156c88527b436a590b1ef87 100644
--- a/example-data/complex-vnfd.xml
+++ b/example-data/complex-vnfd.xml
@@ -118,12 +118,18 @@
ipv4
+
+ 1
+
mgmt
ipv4
+
+ 1
+
in
@@ -155,6 +161,9 @@
control-plane
+
+ 1
+
control-plane-standby
@@ -163,11 +172,17 @@
control-plane
+
+ 1
+
data-plane
2
8
+
+ 1
+
il-1
@@ -238,6 +253,9 @@
control-plane
+
+ 1
+
control-plane-standby
@@ -246,11 +264,17 @@
control-plane
+
+ 1
+
data-plane
1
4
+
+ 1
+
il-1
diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml
index f834ad4c81e7ba81632f0ce4e17eb0062649f7e5..3c67dd99ca28ad8fae530861436198fe025a12d2 100644
--- a/example-data/nfv-nsd.xml
+++ b/example-data/nfv-nsd.xml
@@ -84,6 +84,9 @@
firewall
1
2
+
+ 1
+
double
diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml
index 8a53adad574907b57493b3840378a430b69c3f7a..d96c434556ba574acacc67456b2044ffdbfea7e1 100644
--- a/example-data/nfv-vnfd.xml
+++ b/example-data/nfv-vnfd.xml
@@ -71,6 +71,9 @@
firewall
1
2
+
+ 1
+
double
diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 125aaaa80415a7dbd4a76afd09bae15edf9ca3d5..6636d0a011375df63bea628cb36d7e2a1fb1d555 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -67,6 +67,9 @@
ethernet
+
+ 1
+
inside
@@ -95,6 +98,9 @@
firewall
1
2
+
+ 1
+
inside-vl
@@ -241,6 +247,9 @@
router
1
2
+
+ 1
+
double
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index d96c76cc51b18b0e04e18630b7909f5125371835..a4eb255c2aa292d9b05c896aff852b9ae0124abf 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -3,6 +3,13 @@ submodule etsi-nfv-common {
belongs-to etsi-nfv-descriptors {
prefix nfv;
}
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
organization
"European Telecommunications Standards Institute (ETSI)";
@@ -397,9 +404,125 @@ submodule etsi-nfv-common {
}
}
+ grouping nfvi-maintenance-info {
+ container nfvi-maintenance-info {
+
+ leaf impact-notification-lead-time {
+ type yang:timeticks;
+ mandatory true;
+ description
+ "The value specifies the minimum notification lead time
+ requested for upcoming impact of the virtualised resource
+ or their group (i.e. between the notification and the
+ action causing the impact).";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ leaf is-impact-mitigation-requested {
+ type boolean;
+ description
+ "When set to True, it is requested that at the time of the
+ notification of an upcoming change that is expected to have
+ an impact on the VNF, virtualised resource(s) of the same
+ characteristics as the impacted ones is/are provided to
+ compensate for the impact. Cardinality 0 corresponds to the
+ value False.";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ leaf-list supported-migration-type {
+ type enumeration {
+ enum "no-migration";
+ enum "offline-migration";
+ enum "live-migration";
+ }
+ description
+ "Applicable to VirtualComputeDesc and VirtualStorageDesc.
+ When present, specifies the allowed migration types in the
+ order of preference in case of an impact starting with the
+ most preferred type. Possible values: NO_MIGRATION,
+ OFFLINE_MIGRATION, LIVE_MIGRATION.";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ leaf max-undetectable-interruption-time {
+ type yang:timeticks;
+ description
+ "Applicable to VirtualComputeDesc and VirtualStorageDesc.
+ When present, it specifies the maximum interruption time
+ that can go undetected at the VNF level and therefore
+ which will not trigger VNFinternal recovery during live
+ migration.";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ leaf min-recovery-time-between-impacts {
+ type yang:timeticks;
+ description
+ "When present, it specifies the time required by the group
+ to recover from an impact, thus, the minimum time
+ requested between consecutive impacts of the group.";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ list max-number-of-impacted-instances {
+ key "group-size";
+ ordered-by user;
+ must "./max-number-of-impacted-instances <= ./group-size";
+
+ leaf group-size {
+ type uint32;
+ description
+ "When present, it determines the size of the group for
+ which the maxNumberOfImpactedInstances is specified.
+ Otherwise the size is not limited.
+
+ Each groupSize value specified for a group of virtual
+ resources shall be unique, and it shall be possible
+ to form an ascending ordered list of groupSizes.
+
+ The number of instances in the group for which the
+ maxNumberOfImpactedInstances is specified may be equal
+ to groupSize or less. When the number of instances is
+ less than the groupSize, it shall be at least 1 if this
+ is the first groupSize in the ordered list of groupSizes,
+ or it shall be greater by at least 1 than the previous
+ groupSize in the ordered list of groupSizes.";
+
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+
+ leaf max-number-of-impacted-instances {
+ type uint32 {
+ range "1 .. max";
+ }
+ description
+ "The maximum number of instances that can be impacted
+ simultaneously within the group of the specified size.";
+ reference
+ "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo
+ information element";
+ }
+ }
+ }
+ }
+
grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule {
key "type scope";
+
leaf type {
type affinity-type;
description
@@ -419,6 +542,17 @@ submodule etsi-nfv-common {
"GS NFV IFA011: Section 7.1.8.11,
LocalAffinityOrAntiAffinityRule information element.";
}
+
+ uses nfvi-maintenance-info {
+ description
+ "When present, provides information on the impact tolerance
+ and rules to be observed when a group of instances based
+ on the same VDU is impacted during NFVI operation and
+ maintenance (e.g. NFVI resource upgrades).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.11,
+ LocalAffinityOrAntiAffinityRule information element.";
+ }
}
}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index 93ae4e70a63dbeaf96fa507e113b66ae22dc2977..9952e3d4675e69b2ab262daca1e4b56e7f4f0488 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -1256,6 +1256,17 @@ submodule etsi-nfv-vnf {
}
uses monitoring-parameter;
}
+
+ uses nfvi-maintenance-info {
+ description
+ "When present, provides information on the rules to be
+ observed when an instance based on this
+ VnfVirtualLinkDesc is impacted during NFVI operation and
+ maintenance (e.g. NFVI resource upgrades).";
+ reference
+ "GS NFV IFA011: Section 7.1.7.2, VnfVirtualLinkDesc
+ information element.";
+ }
}
uses security-group-rule;
@@ -1470,6 +1481,7 @@ submodule etsi-nfv-vnf {
reference
"GS NFV IFA011: Section 7.1.8.3, VduProfile information
element.";
+
leaf id {
type leafref {
path "../../../" +
@@ -1483,6 +1495,17 @@ submodule etsi-nfv-vnf {
information element.";
}
}
+
+ uses nfvi-maintenance-info {
+ description
+ "When present, provides information on the impact
+ tolerance and rules to be observed when instance(s) of
+ the VDU are impacted during NFVI operation and
+ maintenance (e.g. NFVI resource upgrades).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.3, VduProfile information
+ element.";
+ }
}
list virtual-link-profile {