diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1fa3fc6171c80f5e415a2766aa33457839f761b1 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +Note: At this time this document is in draft state, and subject to change till the final approval. As such, files accessed/used from this repository are subject to change. Do not use as reference material. + +When approved, this README will be updated to reflect the status of the document. \ No newline at end of file diff --git a/example-data/complex-vnfd.xml b/example-data/complex-vnfd.xml index 56ef89ab6c2be628df5822d88ee023b355b4b266..cf8048d9ed6ecdf8099420b9fb2e393ad4a0151e 100644 --- a/example-data/complex-vnfd.xml +++ b/example-data/complex-vnfd.xml @@ -122,12 +122,18 @@ ipv4 + + 1 + mgmt ipv4 + + 1 + in @@ -157,17 +163,26 @@ 1 1 control-plane + + 1 + control-plane-standby 1 1 control-plane + + 1 + data-plane 2 8 + + 1 + il-1 @@ -210,6 +225,18 @@ 1 + + + 1 + 1 + + + + + 1 + 1 + + control-plane @@ -224,17 +251,26 @@ 1 1 control-plane + + 1 + control-plane-standby 1 1 control-plane + + 1 + data-plane 1 4 + + 1 + il-1 @@ -277,6 +313,18 @@ 1 + + + 1 + 1 + + + + + 1 + 1 + + control-plane diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml index 1f057d31fabdb3a4c55afd0ca1cac91eae876725..a33c698cf67f5cb4683cc59833eabdfde54204e9 100644 --- a/example-data/nfv-nsd.xml +++ b/example-data/nfv-nsd.xml @@ -87,6 +87,9 @@ firewall 1 2 + + 1 + double @@ -103,6 +106,20 @@ single + + + + 1 + 1 + + + + + 1 + 1 + + + diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml index d9a64e89b42ffa7a695f2e6faf6f6dfdd3f7d88e..80679f1cc62cf0ed4b8b95577466cf3b16044f8e 100644 --- a/example-data/nfv-vnfd.xml +++ b/example-data/nfv-vnfd.xml @@ -74,6 +74,9 @@ firewall 1 2 + + 1 + double @@ -90,5 +93,19 @@ single + + + + 1 + 1 + + + + + 1 + 1 + + + diff --git a/example-data/nfv.xml b/example-data/nfv.xml index 035538617980c79e6721b1155dc339f1bfba6ee0..ccd703c0309351f77bd06017e23c619a7640ecb7 100644 --- a/example-data/nfv.xml +++ b/example-data/nfv.xml @@ -71,6 +71,9 @@ ethernet + + 1 + inside @@ -99,6 +102,9 @@ firewall 1 2 + + 1 + inside-vl @@ -145,6 +151,18 @@ 1 + + + 1 + 1 + + + + + 1 + 1 + + @@ -236,6 +254,9 @@ router 1 2 + + 1 + double @@ -262,6 +283,18 @@ 1 + + + 1 + 1 + + + + + 1 + 1 + + diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang index e0921af45a76f7cee6d017bfb45dacca92c9ae59..18ba9a8b1dcc8ac334be244316434718075809bf 100644 --- a/src/yang/etsi-nfv-common.yang +++ b/src/yang/etsi-nfv-common.yang @@ -3,12 +3,28 @@ 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)"; description "Common data types for ETSI data models."; + revision 2020-06-10 { + description + "Version 3.3.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Release 3 + ETSI GS NFV-IFA 011 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -26,6 +42,7 @@ submodule etsi-nfv-common { ETSI GS NFV-IFA 014 Ed271v264 ETSI GS NFV-IFA 011 Ed271v264"; } + revision 2019-04-25 { description "Initial revision @@ -378,6 +395,7 @@ submodule etsi-nfv-common { enum "zone-group"; enum "zone"; enum "nfvi-pop"; + enum "network-link-and-node"; } } @@ -399,6 +417,12 @@ submodule etsi-nfv-common { enum "end-vnf-ext-conn-change"; enum "start-vnfinfo-modification"; enum "end-vnfinfo-modification"; + enum "start-vnf-snapshot-creation"; + enum "end-vnf-snapshot-creation"; + enum "start-vnf-snapshot-reverting-to"; + enum "end-vnf-snapshot-reverting-to"; + enum "start-change-current-vnf-package"; + enum "end-change-current-vnf-package"; } } @@ -412,30 +436,123 @@ submodule etsi-nfv-common { enum "vnf-operation-change"; enum "vnf-ext-conn-change"; enum "vnfinfo-modification"; + enum "vnf-snapshot-creation"; + enum "vnf-snapshot-reverting-to"; + enum "change-current-vnf-package"; } } - grouping local-affinity-or-anti-affinity-rule { - list local-affinity-or-anti-affinity-rule { - key "type scope"; - leaf type { - type affinity-type; + grouping nfvi-maintenance-info { + container nfvi-maintenance-info { + + leaf impact-notification-lead-time { + type yang:timeticks; + mandatory true; description - "Specifies whether the rule is an affinity rule or an - anti-affinity rule."; + "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.11, - LocalAffinityOrAntiAffinityRule information element."; + "GS NFV-IFA011: Section 7.1.8.17, NfviMaintenanceInfo + information element"; } - leaf scope { - type affinity-scope; + leaf is-impact-mitigation-requested { + type boolean; description - "Specifies the scope of the rule, possible values are - 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'."; + "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.11, - LocalAffinityOrAntiAffinityRule information element."; + "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"; + } } } } diff --git a/src/yang/etsi-nfv-descriptors.yang b/src/yang/etsi-nfv-descriptors.yang index 3b93f1287b36f105b99c9ceef0dac8ba46b42fb5..fc51fbfcb196e2d2c7fd3712fdc930d8a0c90277 100644 --- a/src/yang/etsi-nfv-descriptors.yang +++ b/src/yang/etsi-nfv-descriptors.yang @@ -14,6 +14,14 @@ module etsi-nfv-descriptors { description "Network Function Virtualization Descriptors"; + revision 2020-06-10 { + description + "Version 3.3.1. + + NSD and PNFD according to ETSI GS NFV-IFA 014 Release 3 + VNFD according to ETSI GS NFV-IFA 011 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -29,6 +37,7 @@ module etsi-nfv-descriptors { NSD and PNFD according to ETSI GS NFV-IFA 014 Ed271v264 VNFD according to ETSI GS NFV-IFA 011 Ed271v264."; } + revision 2019-04-25 { description "Initial revision. @@ -70,7 +79,7 @@ module etsi-nfv-descriptors { key "id"; description - "The Pnfd information element is a deployment template + "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 diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang index c096d1e65aa7d6906dddc46ea317774b01ec4638..67100d91d55eba5004920232f2940f699a129fc1 100644 --- a/src/yang/etsi-nfv-ns.yang +++ b/src/yang/etsi-nfv-ns.yang @@ -11,6 +11,13 @@ submodule etsi-nfv-ns { description "Models for NS according to ETSI GS NFV-IFA 014."; + revision 2020-06-10 { + description + "Version 3.3.1. + + NSD according to ETSI GS NFV-IFA 014 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -22,7 +29,8 @@ submodule etsi-nfv-ns { description "Version 2.7.1. - NSD according to ETSI GS NFV-IFA 014 Ed271v264."; + Common data structures to support NSD according to: + ETSI GS NFV-IFA 014 Ed271v264."; } revision 2019-04-25 { @@ -47,6 +55,31 @@ submodule etsi-nfv-ns { } } + grouping ns-local-affinity-or-anti-affinity-rule { + list local-affinity-or-anti-affinity-rule { + key "type scope"; + + leaf type { + type affinity-type; + description + "Specifies whether the rule is an affinity rule or an + anti-affinity rule."; + reference + "GS NFV IFA014: Section 6.3.8.2, + LocalAffinityOrAntiAffinityRule information element."; + } + + leaf scope { + type affinity-scope; + description + "Specifies the scope of the rule, possible values are + 'NFVI-PoP', 'NFVI-node' network-link-and-node etc."; + reference + "GS NFV IFA014: Section 6.3.8.2, + LocalAffinityOrAntiAffinityRule information element."; + } + } + } grouping nsd { leaf id { @@ -322,17 +355,16 @@ submodule etsi-nfv-ns { } leaf service-availability-level { - type enumeration { - enum "level-1"; - enum "level-2"; - enum "level-3"; - } + 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."; + "If present, specifies the service availability level + for the VL instance created from this DF. + + THE FOLLOWING STATEMENT IS SUBJECT TO CHANGE: + + Either the serviceAvailabilityLevel attribute of NS DF + or the serviceAvailabilityLevel attribute of the VL DF + may be provided, but not both."; reference "GS NFV IFA014: Section 6.5.4.2 VirtualLinkDf information element"; @@ -583,7 +615,7 @@ submodule etsi-nfv-ns { list position-desc { key "id"; - min-elements 1; + min-elements 1; leaf id { type string; @@ -761,7 +793,7 @@ submodule etsi-nfv-ns { mandatory true; type leafref { path "deref(../flavour-id)/../nfv:instantiation-level/" + - "nfv:id"; + "nfv:id"; } description "Identifier of the instantiation level of the VNF DF @@ -795,7 +827,7 @@ submodule etsi-nfv-ns { element"; } - uses local-affinity-or-anti-affinity-rule; + uses ns-local-affinity-or-anti-affinity-rule; leaf-list affinity-or-anti-affinity-group-id { type leafref { @@ -868,6 +900,21 @@ submodule etsi-nfv-ns { } } } + + leaf service-availability-level { + must "not(../../service-availability-level)"; + type uint32; + description + "If present, specifies the service availability level for + the VNF instance created from this profile. + + Either the serviceAvailabilityLevel attribute of NS DF + or the serviceAvailabilityLevel attribute of the + VnfProfile may be provided, but not both."; + reference + "GS NFV IFA014: Section 6.3.3.2 VnfProfile information + element"; + } } list pnf-profile { @@ -1002,7 +1049,7 @@ submodule etsi-nfv-ns { information element"; } - uses local-affinity-or-anti-affinity-rule; + uses ns-local-affinity-or-anti-affinity-rule; leaf-list affinity-or-anti-affinity-group-id { type leafref { @@ -1127,7 +1174,8 @@ submodule etsi-nfv-ns { type affinity-scope; description "Specifies the scope of the affinity or anti-affinity - relationship e.g. a NFVI node, an NFVI PoP, etc."; + relationship e.g. a NFVI node, an NFVI PoP, + network-link-and-node etc."; reference "GS NFV IFA014: Section 6.3.5.2 AffinityOrAntiAffinity information element"; @@ -1263,7 +1311,7 @@ submodule etsi-nfv-ns { "count(virtual-link-to-level-mapping) + " + "count(ns-to-level-mapping)) > 0" { error-message - "At least one attribute between " + + "At least one attribute between " + "vnf-to-level-mapping, " + "virtual-link-to-level-mapping and " + "ns-to-level-mapping shall be present."; @@ -1301,7 +1349,7 @@ submodule etsi-nfv-ns { leaf value { type string; } - description + description "Array of KVP requirements for additional parameters of NS to be passed when invoking the Instantiate Ns operation."; @@ -1322,7 +1370,7 @@ submodule etsi-nfv-ns { leaf value { type string; } - description + description "Array of KVP requirements for additional parameters of NS to be passed when invoking the Scale Ns operation."; @@ -1343,7 +1391,7 @@ submodule etsi-nfv-ns { leaf value { type string; } - description + description "Array of KVP requirements for additional parameters of NS to be passed when invoking the Heal Ns operation."; @@ -1362,7 +1410,7 @@ submodule etsi-nfv-ns { } must "boolean(../../nested-nsd-id[.=current()/nsd-id])" { error-message - "PNFDs in the profile has to be listed as a " + + "PNFDs in the profile has to be listed as a " + "dependency of the network service " + "descriptor."; } @@ -1395,7 +1443,7 @@ submodule etsi-nfv-ns { element"; } - leaf ns-df-id { + leaf ns-df-id { mandatory true; type leafref { path "deref(../nsd-id)/../df/id"; @@ -1408,7 +1456,7 @@ submodule etsi-nfv-ns { element"; } - leaf instantiation-level-id { + leaf instantiation-level-id { mandatory true; type leafref { path "deref(../ns-df-id)/../ns-instantiation-level/id"; @@ -1423,7 +1471,7 @@ submodule etsi-nfv-ns { element"; } - leaf min-number-of-instances { + leaf min-number-of-instances { type uint16; default 1; description @@ -1435,7 +1483,7 @@ submodule etsi-nfv-ns { element"; } - leaf max-number-of-instances { + leaf max-number-of-instances { type uint16; default 1; description @@ -1543,7 +1591,7 @@ submodule etsi-nfv-ns { information element"; } - choice secondary-id { + choice secondary-id { leaf secondary-vnf-profile { type leafref { path "../../vnf-profile/vnfd-id"; @@ -1581,7 +1629,7 @@ submodule etsi-nfv-ns { information element"; } - leaf vnf-indicator { + leaf vnf-indicator { mandatory true; type leafref { path "deref(../vnfd-id)/../nfv:indicator/nfv:id"; @@ -1645,6 +1693,24 @@ submodule etsi-nfv-ns { } } } + + leaf service-availability-level { + type uint32; + description + "If present, specifies the service availability level for + the NS instance created from this DF. + + THE FOLLOWING STATEMENT IS SUBJECT TO CHANGE: + + Either the serviceAvailabilityLevel attribute of NS DF or + the serviceAvailabilityLevel attribute of the NS + constituents of the NS may be provided, but not both. + When a SAL information is assigned to an NS, this + information does not apply to any constituents of type + ‘nested NS’."; + reference + "GS NFV IFA014: Section 6.3.2.2 NsDf information element"; + } } uses security-parameters; } diff --git a/src/yang/etsi-nfv-nsd.yang b/src/yang/etsi-nfv-nsd.yang index c23e31c06f243d419007419dd13e92ff89d793e2..8c9f21b4d160536cb24298defc3127f0aba01173 100644 --- a/src/yang/etsi-nfv-nsd.yang +++ b/src/yang/etsi-nfv-nsd.yang @@ -13,6 +13,13 @@ module etsi-nfv-nsd { description "Network Services Descriptors"; + revision 2020-06-10 { + description + "Version 3.3.1. + + NSD according to ETSI GS NFV-IFA 014 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -24,14 +31,15 @@ module etsi-nfv-nsd { description "Version 2.7.1. - NSD according to ETSI GS NFV-IFA 014 Ed271v264."; + Common data structures to support NSD according to: + ETSI GS NFV-IFA 014 Ed271v264."; } revision 2019-04-25 { description "Initial revision. - - NSD according to ETSI GS NFV-IFA 014 Ed261v252."; + Common data structures to support NSD according to: + ETSI GS NFV-IFA 014 Ed261v252."; } container nsd { @@ -42,7 +50,7 @@ module etsi-nfv-nsd { uses nfv:nsd; description - "The NSD information element is a deployment template whose + "The NSD information element is a deployment template whose instances are used by the NFVO for the lifecycle management of NSs."; reference diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang index aa1313e2aac4076c819b2c2c7fe2dad46113dce3..a24746c4f24414b0cf80b553ec837926e2a83276 100644 --- a/src/yang/etsi-nfv-pnf.yang +++ b/src/yang/etsi-nfv-pnf.yang @@ -12,6 +12,13 @@ submodule etsi-nfv-pnf { description "Models for PNFD according to GS NFV-IFA 014."; + revision 2020-06-10 { + description + "Version 3.3.1. + + PNFD according to ETSI GS NFV-IFA 014 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -23,14 +30,16 @@ submodule etsi-nfv-pnf { description "Version 2.7.1. - PNFD according to ETSI GS NFV-IFA 014 Ed271v264."; + Common data structures to support PNFD according to: + ETSI GS NFV-IFA 014 Ed271v264"; } revision 2019-04-25 { description "Initial revision. - PNFD according to ETSI GS NFV-IFA 014 Ed261v252."; + Common data structures to support PNFD according to: + ETSI GS NFV-IFA 014 Ed261v252"; reference "ETSI GS NFV-IFA 014 Ed261v252"; diff --git a/src/yang/etsi-nfv-pnfd.yang b/src/yang/etsi-nfv-pnfd.yang index 66147c9a6de2f2437fd90c112e2d57324c4c1b6d..c79d6b9c19ec5752f29bf5c97f7fef32fff9e967 100644 --- a/src/yang/etsi-nfv-pnfd.yang +++ b/src/yang/etsi-nfv-pnfd.yang @@ -13,6 +13,13 @@ module etsi-nfv-pnfd { description "Physcial Network Function Descriptor."; + revision 2020-06-10 { + description + "Version 3.3.1. + + PNFD according to ETSI GS NFV-IFA 014 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -24,14 +31,13 @@ module etsi-nfv-pnfd { description "Version 2.7.1. - NSD according to ETSI GS NFV-IFA 014 Ed271v264."; + PNFD according to ETSI GS NFV-IFA 014 Ed271v264."; } revision 2019-04-25 { description "Initial revision. - - NSD according to ETSI GS NFV-IFA 014 Ed261v252."; + PNFD according to ETSI GS NFV-IFA 014 Ed261v252."; } container pnfd { diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang index 16f77c98637e3950e3bbbb4813620a5eece43ebe..6b5f2dc9374bf377237e2b22f39e3dabf34693f4 100755 --- a/src/yang/etsi-nfv-vnf.yang +++ b/src/yang/etsi-nfv-vnf.yang @@ -16,6 +16,14 @@ submodule etsi-nfv-vnf { description "Models for VNFD according to GS NFV-IFA 011."; + revision 2020-06-10 { + description + "Version 3.3.1. + + Data structures to support VNFD according to + ETSI GS NFV-IFA 011 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1. @@ -27,14 +35,16 @@ submodule etsi-nfv-vnf { description "Version 2.7.1. - VNFD according to ETSI GS NFV-IFA 011 Ed271v264"; + Data structures to support VNFD according to: + ETSI GS NFV-IFA 011 Ed271v264"; } revision 2019-03-18 { description "Initial revision. - VNFD according to ETSI GS NFV-IFA 011 Ed261v254"; + Data structure to support VNFD according to: + ETSI GS NFV-IFA 011 Ed261v254"; reference "ETSI GS NFV-IFA 011 Ed261v254"; @@ -69,7 +79,7 @@ submodule etsi-nfv-vnf { } leaf support-mandatory { - status "deprecated"; + status "deprecated"; default "false"; type boolean; description @@ -176,6 +186,44 @@ submodule etsi-nfv-vnf { } } + grouping vnf-local-affinity-or-anti-affinity-rule { + list local-affinity-or-anti-affinity-rule { + key "type scope"; + + leaf type { + 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.11, + LocalAffinityOrAntiAffinityRule information element."; + } + + leaf scope { + type affinity-scope; + description + "Specifies the scope of the rule. Possible values are + 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node', and + 'network-link-and-node'."; + reference + "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."; + } + } + } + grouping vnfd { leaf id { type string; @@ -381,11 +429,11 @@ submodule etsi-nfv-vnf { } leaf vnic-type { - type identityref { - base vnic-type; - } - description - "Describes the type of the virtual network interface + type identityref { + base vnic-type; + } + description + "Describes the type of the virtual network interface realizing the CPs instantiated from this CPD. This is used to determine which mechanism driver(s) to be used to bind the port. Value: @@ -849,6 +897,22 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.9.2.4, VirtualCpuPinningData information element."; } + + leaf-list cpu-policy { + type enumeration { + enum "dedicated"; + enum "shared"; + } + description + "Shows the list of dedicated virtual CPU cores and + shared virtual CPU cores in a VM. Dedicated refers to + a virtual CPU core occupies one physical CPU core. + Shared refers to multi virtual CPU cores shared one + physical CPU core."; + reference + "GS NFV IFA011: Section 7.1.9.2.4, + VirtualCpuPinningData information element."; + } description "The virtual CPU pinning configuration for the virtualised compute resource."; @@ -910,7 +974,7 @@ submodule etsi-nfv-vnf { container block-storage-data { when '../type-of-storage = "nfv:block"'; description - "Specifies the details of block storage. It shall + "Specifies the details of block storage. It shall be present when the 'typeOfStorage' attribute is set to 'BLOCK'. It shall be absent otherwise."; reference @@ -1366,6 +1430,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; @@ -1569,12 +1644,12 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.8.3, VduProfile information element."; } - uses local-affinity-or-anti-affinity-rule; + uses vnf-local-affinity-or-anti-affinity-rule; leaf-list affinity-or-anti-affinity-group-id { - type leafref { - path "../../affinity-or-anti-affinity-group/id"; - } + type leafref { + path "../../affinity-or-anti-affinity-group/id"; + } description "Identifier(s) of the affinity or anti-affinity group(s) the VDU belongs to."; @@ -1582,6 +1657,17 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.8.3, VduProfile 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 { @@ -1615,12 +1701,12 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.8.4, VirtualLinkProfile information element."; } - uses local-affinity-or-anti-affinity-rule; + uses vnf-local-affinity-or-anti-affinity-rule; leaf-list affinity-or-anti-affinity-group-id { - type leafref { - path "../../affinity-or-anti-affinity-group/id"; - } + type leafref { + path "../../affinity-or-anti-affinity-group/id"; + } description "Identifier(s) of the affinity or anti-affinity group(s) the VnfVirtualLinkDesc belongs to."; @@ -1754,17 +1840,17 @@ submodule etsi-nfv-vnf { L2ProtocolData information element."; } - leaf segmentation-id { - type string; - description + leaf segmentation-id { + type string; + description "If present, specifies a specific virtualised network segment, which depends on the network type. For e.g., VLAN ID for VLAN network type and tunnel ID for GRE/VXLAN network types."; - reference + reference "GS NFV IFA011: Section 7.1.8.14, L2ProtocolData information element."; - } + } description "Specifies the L2 protocol data for this virtual link. @@ -2326,6 +2412,95 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.5.2 VnfLcmOperationsConfiguration information element"; } + + container create-snapshot-vnf-op-config { + description + "Configuration parameters for the Create VNF Snapshot + operation."; + reference + "GS NFV IFA011: Section 7.1.5.2 + VnfLcmOperationsConfiguration information element"; + + list parameter { + key "key"; + min-elements 1; + + leaf key { + type string; + } + + leaf value { + type string; + } + description + "Array of KVP requirements for VNF-specific parameters + to be passed when invoking the + CreateSnapshotVnfOpConfig operation."; + reference + "GS NFV IFA011: Section 7.1.5.11 + CreateSnapshotVnfOpConfig information + element"; + } + } + + container revert-to-snapshot-vnf-op-config { + description + "Configuration parameters for the Revert-To VNF Snapshot + operation."; + reference + "GS NFV IFA011: Section 7.1.5.2 + VnfLcmOperationsConfiguration information element"; + + list parameter { + key "key"; + min-elements 1; + + leaf key { + type string; + } + + leaf value { + type string; + } + description + "Array of KVP requirements for VNF-specific parameters + to be passed when invoking the + RevertToSnapshotVnfOpConfig operation."; + reference + "GS NFV IFA011: Section 7.1.5.12 + RevertToSnapshotVnfOpConfig information + element"; + } + } + + container change-current-vnf-package-op-config { + description + "Configuration parameters for the + ChangeCurrentVnfPackageOpConfig 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 + "Array of KVP requirements for VNF-specific parameters + to be passed when invoking the change current VNF + Package operation."; + reference + "GS NFV IFA011: Section 7.1.5.13 + ChangeCurrentVnfPackageOpConfig information + element"; + } + } } list affinity-or-anti-affinity-group { @@ -2353,8 +2528,8 @@ submodule etsi-nfv-vnf { leaf id { type string; description - "Identifies an affinity or anti-affinity group to which - the affinity or anti-affinity rule applies."; + "Identifier of this AffinityOrAntiAffinityGroup + information element."; reference "GS NFV IFA011: Section 7.1.8.12 AffinityOrAntiAffinityGroup information element"; @@ -2364,8 +2539,8 @@ submodule etsi-nfv-vnf { mandatory true; type affinity-type; description - "Specifies whether the rule is an affinity rule or an - anti-affinity rule."; + "Specifies the type of relationship that the members of + the group have: 'affinity' or 'anti-affinity'."; reference "GS NFV IFA011: Section 7.1.8.12 AffinityOrAntiAffinityGroup information element"; @@ -2375,8 +2550,9 @@ submodule etsi-nfv-vnf { mandatory true; type affinity-scope; description - "Specifies the scope of the rule, possible values are - 'NFVI-PoP', 'Zone', 'ZoneGroup', 'NFVI-node'."; + "Specifies the scope of the affinity or anti-affinity + relationship. Possible values are 'NFVI-PoP', 'Zone', + 'ZoneGroup', 'NFVI-node' and 'network-link-and-node'."; reference "GS NFV IFA011: Section 7.1.8.12 AffinityOrAntiAffinityGroup information element"; @@ -2449,12 +2625,14 @@ submodule etsi-nfv-vnf { type enumeration { enum vnf-configuration; enum vnf-indicator; + enum vnf-lcm-coordination; } description "Identifies an interface produced by the VNF. Valid values: - VNF_CONFIGURATION - - VNF_INDICATOR"; + - VNF_INDICATOR + - VNF_LCM_COORDINATION"; reference "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails information element"; @@ -2955,6 +3133,7 @@ submodule etsi-nfv-vnf { list lifecycle-management-script { key "id"; + description "Includes a list of events and corresponding management scripts performed for the VNF."; @@ -3179,5 +3358,269 @@ submodule etsi-nfv-vnf { reference "GS NFV IFA011: Section 7.1.2 VNFD information element"; } + + list vnf-package-change-info { + // IFA011ed332 defines the key as VersionSelector, which is + // nothing but a combination of src-vnfd-id, dst-vnfd-id and + // src-flavour-id. YANG cannot use a composite as a key, and + // therefore the model breaks it out as three elements that + // form the key. + key "src-vnfd-id dst-vnfd-id src-flavour-id"; + + leaf src-vnfd-id { + type string; + description + "Identifier of the source VNFD and the source VNF + package. Either the srcVnfdId or the dstVnfdId shall be + equal to the vnfdId of the VNFD containing this version + selector."; + reference + "GS NFV IFA011: Section 7.1.15.3 VersionSelector + information element"; + } + + leaf dst-vnfd-id { + type string; + description + "Identifier of the destination VNFD and the destination + VNF package. Either the srcVnfdId or the dstVnfdId shall + be equal to the vnfdId of the VNFD containing this version + selector."; + reference + "GS NFV IFA011: Section 7.1.15.3 VersionSelector + information element"; + } + + leaf src-flavour-id { + type string; + description + "Identifier of the deployment flavour in the source VNF + package for which this modification applies. It is up to + protocol design stage to decide whether there is further + optimization potential to apply one modification for + multiple srcFlavourIds."; + reference + "GS NFV IFA011: Section 7.1.15.3 VersionSelector + information element"; + } + + leaf additional-params-id { + type leafref { + path "../../df/lcm-operations-configuration/" + + "change-current-vnf-package-op-config/parameter/key"; + } + description + "References the ChangeCurrentVnfPackageOpConfig information + element that defines the valid additional parameters for + the change."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + leaf-list modification-qualifier { + type enumeration { + enum "up"; + enum "down"; + enum "vnf-upgrade"; + enum "vnf-update"; + enum "vnf-downgrade"; + } + description + "When present, it specifies the type of modification + resulting from transitioning from srcVnfdId to dstVnfdId. + The possible values include at least: + + UP - indicating that the destination VNF version is newer + than the source version, + DOWN - indicating that the destination VNF version is + older than the source version. + + When provided, UP and DOWN values shall always be + supported as the first value. In addition, a vendor may + specify additional values and provide such values to + qualify further the change between the two versions such + as VNF_UPGRADE, VNF_UPDATE, VNF_DOWNGRADE, etc."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + leaf-list additional-modification-description { + type string; + description + "A VNF provider may define additional information to + qualify further the change between the two versions, + such as 'VNF upgrade', 'VNF update', 'VNF downgrade', + etc."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + list component-mapping { + key "type"; + + leaf type { + type string; + description + "The type of component or property. Possible values + differentiate whether changes concern to some VNF + component (e.g., VDU, internal VLD, etc.) or property + (e.g., a Scaling Aspect, etc.)."; + reference + "GS NFV IFA011: Section 7.1.15.4 ComponentMapping + information element"; + } + + leaf source-desc-id { + type string; + description + "Identifier of the component or property in the source + VNFD."; + reference + "GS NFV IFA011: Section 7.1.15.4 ComponentMapping + information element"; + } + + leaf dst-desc-id { + type string; + description + "Identifier of the component or property in the + destination VNFD."; + reference + "GS NFV IFA011: Section 7.1.15.4 ComponentMapping + information element"; + } + + leaf description { + type string; + description + "Human readable description of the component changes."; + reference + "GS NFV IFA011: Section 7.1.15.4 ComponentMapping + information element"; + } + + description + "Mapping information related to identifiers of components in + source VNFD and destination VNFD that concern to the change + process."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + leaf lcm-script-id { + type leafref { + path "../../lifecycle-management-script/id"; + } + description + "Reference to a lifecycle management script that is executed + as part of this 'change current VNF Package' process."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + leaf coordination-id { + type leafref { + path "../../lcm-operations-coordination/id"; + } + description + "Reference to applicable VNF LCM operation coordination + actions."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + + leaf dst-flavour-id { + type leafref { + path "../../df/id"; + } + description + "Identifies the deployment flavour in the destination VNF + package for which this change applies. The flavour ID is + defined in the destination VNF package."; + reference + "GS NFV IFA011: Section 7.1.15.2 VnfPackageChangeInfo + information element"; + } + description + "Information used for performing the change of the current + VNF Package. More than one VNF Package Change Info construct + is possible to cater the possibility that changes of the + current VNF Package can be performed for different source + VNFDs."; + reference + "GS NFV IFA011: Section 7.1.2 VNFD information element"; + } + + list lcm-operations-coordination { + key "id"; + + leaf id { + type string; + description + "Identifies the specific VNF LCM operation coordination + action."; + reference + "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination + information element"; + } + + leaf description { + type string; + description + "Human readable description of the coordination action."; + reference + "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination + information element"; + } + + leaf endpoint-type { + type enumeration { + enum "mgmt"; + enum "vnf"; + } + description + "Specifies the type of the endpoint exposing the LCM + operation coordination such as other operations supporting + or management systems (e.g. an EM) or the VNF instance. + Allowed values: + • MGMT: coordination with other operation supporting + management systems. + • VNF: coordination with the VNF instance."; + reference + "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination + information element"; + } + + leaf coordination-stage { + type string; + description + "Indicates the coordination stage during the VNF LCM + operation."; + reference + "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination + information element"; + } + + leaf coordination-params { + type string; + description + "Input information needed by the external coordinating + entity."; + reference + "GS NFV IFA011: Section 7.1.16.2 VnfLcmOperationCoordination + information element"; + } + description + "Provides information used for the coordination in VNF LCM + operations."; + 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 index 279dfbab2e527b479ad1b879943fee82b23f8f75..25bff84f0d7e026b02078b1f2d60162bae4680d2 100644 --- a/src/yang/etsi-nfv-vnfd.yang +++ b/src/yang/etsi-nfv-vnfd.yang @@ -13,6 +13,13 @@ module etsi-nfv-vnfd { description "Virtual Network Function Descriptor."; + revision 2020-06-10 { + description + "Version 3.3.1. + + VNFD according to ETSI GS NFV-IFA 011 Release 3."; + } + revision 2020-06-01 { description "Version 2.8.1.