From c1f567b3627083e9e6eb4f8b62d6425f7b144634 Mon Sep 17 00:00:00 2001 From: Mahesh Jethanandani Date: Fri, 31 May 2019 13:05:36 -0700 Subject: [PATCH] Getting SOL006 ready for 2.7.1 --- example-data/complex-vnfd.xml | 12 +- example-data/nfv-nsd.xml | 1 + example-data/nfv-vnfd.xml | 1 + src/yang/etsi-nfv-common.yang | 37 ++++ src/yang/etsi-nfv-ns.yang | 317 +++++++++++++++++----------------- src/yang/etsi-nfv-vnf.yang | 61 +++++++ 6 files changed, 260 insertions(+), 169 deletions(-) diff --git a/example-data/complex-vnfd.xml b/example-data/complex-vnfd.xml index b10ec9f..39bbbaf 100644 --- a/example-data/complex-vnfd.xml +++ b/example-data/complex-vnfd.xml @@ -78,11 +78,11 @@ 16 - + root root-storage 10 - + CP CP @@ -116,17 +116,13 @@ internal-vl - - ipv4 - + ipv4 mgmt - - ipv4 - + ipv4 diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml index ba4ec2d..03423e6 100644 --- a/example-data/nfv-nsd.xml +++ b/example-data/nfv-nsd.xml @@ -49,6 +49,7 @@ bare qcow2 + 1 2.0 1 http://www.cisco.com/asa.qcow2 diff --git a/example-data/nfv-vnfd.xml b/example-data/nfv-vnfd.xml index 7587240..6b76c43 100644 --- a/example-data/nfv-vnfd.xml +++ b/example-data/nfv-vnfd.xml @@ -48,6 +48,7 @@ bare qcow2 + 1 2.0 1 http://www.cisco.com/asa.qcow2 diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang index 0a1c361..78df6cd 100644 --- a/src/yang/etsi-nfv-common.yang +++ b/src/yang/etsi-nfv-common.yang @@ -243,6 +243,43 @@ submodule etsi-nfv-common { "Ephemeral type of storage."; } + identity forwarding-behaviour { + description + "Base identity for forwarding behaviour."; + } + + identity all { + base forwarding-behaviour; + description + "Traffic flows shall be forwarded simultaneously to all CP + or SAP instances created from the referenced CP profile(s)."; + } + + identity lb { + base forwarding-behaviour; + description + "Traffic flows shall be forwarded to one CP or SAP instance + created from the referenced CP profile(s) selected based on + a load-balancing algorithm."; + } + + identity vip-function { + description + "Indicates the function the virtual IP address is used for."; + } + + identity high-availability { + base vip-function; + description + "High availability function."; + } + + identity load-balancing { + base vip-function; + description + "Load balancing function."; + } + /* * Typedefs */ diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang index 1eb49ce..dfa488d 100644 --- a/src/yang/etsi-nfv-ns.yang +++ b/src/yang/etsi-nfv-ns.yang @@ -415,121 +415,22 @@ submodule etsi-nfv-ns { element"; } - list cpd-pool { - key "id"; - + leaf-list nfp-position-element-id { + type leafref { + path "../nfpd/position-desc/element/id"; + } description - "Describes a pool of descriptors of connection points - attached to one of the constituent VNFs and PNFs and/or - one of the SAPs of the parent NS or of a nested NS."; + "References NfpPositionElement associated with one of the + constituent VNF Profile, PNF Profile or NS Profile of a + nested NS."; reference "GS NFV IFA014: Section 6.4.2.2 Vnffgd information element"; - - leaf id { - type string; - } - - choice constituent-base-element-id { - mandatory "true"; - container vnf-profile { - leaf vnf-profile-id { - must ". = deref(../../vnfd-profile-id)" { - } - type leafref { - path "../../../../../nsd/df/vnf-profile/id"; - } - } - } - container pnf-profile { - leaf pnf-profile-id { - must ". = deref(../../pnfd-profile-id)" { - } - type leafref { - path "../../../../../nsd/df/pnf-profile/id"; - } - } - } - container ns-profile { - leaf ns-profile-id { - must ". = deref(../../ns-profile-id)" { - } - type leafref { - path "../../../../../nsd/df/ns-profile/id"; - } - } - } - description - "Reference to the profile of an NS constituent."; - reference - "GS NFV IFA014: Section 6.4.8 CpdInConstituentElement - information element"; - } - - choice constituent-cpd-id { - container vnf { - leaf vnfd-id { - must ". = deref(../../vnfd-profile-id)/../vnfd-id" { - } - type leafref { - path "../../../../../vnfd/id"; - } - } - leaf cpd-id { - type leafref { - path "deref(../vnfd-id)/../ext-cpd/id"; - } - } - } - container pnf { - leaf pnfd-id { - must ". = deref(../../pnfd-profile-id)/../pnfd-id" { - } - type leafref { - path "../../../../../pnfd/id"; - } - } - leaf pnf-cpd-id { - type leafref { - path "deref(../pnfd-id)/../ext-cpd/id"; - } - } - } - container ns { - leaf nsd-id { - must ". = deref(../../nested-ns-profile-id)/" + - "../nsd-id" { - } - - type leafref { - path "../../../../../nsd/id"; - } - } - leaf sap-cpd-id { - type leafref { - path "deref(../nsd-id)/../sapd/id"; - } - } - } - description - "A reference to the descriptor of a connection point - attached to one of the constituent VNFs and PNFs or to - the descriptor of a NS SAP."; - reference - "GS NFV IFA014: Section 6.4.4.2 CpdPool information - element"; - } } list nfpd { key "id"; - description - "The network forwarding path associated to the VNFFG."; - reference - "GS NFV IFA014: Section 6.4.2.2 Vnffgd information - element"; - leaf id { type string; description @@ -544,33 +445,17 @@ submodule etsi-nfv-ns { type string; description "Provides an NFP classification and selection rule. - The rule may be expressed as a criteria constructed - out of atomic assertions linked by Boolean operators - AND, OR and NOT."; + The rule may be expressed as a criteria constructed out + of atomic assertions linked by Boolean operators AND, + OR and NOT."; reference "GS NFV IFA014: Section 6.4.3.2 Nfpd information element"; } - list position-desc-id { + list position-desc { key "id"; - description - "Describes a position in the NFP in terms of one or - more CP profiles and rules for distributing the - traffic among CP and SAP instances created from the - CPD or SAPD associated to these profiles. This shall - be connection point profile, which is either a CPD - associated with the VnfProfile of a constituent VNF, - or a CPD associated with the PnfProfile of a - constituent PNF, or a SAPD associated with the - NsProfile of a nested NS. The related VnfProfile, - PnfProfile and NsProfile shall be included in the - parent VNFFGD."; - reference - "GS NFV IFA014: Section 6.4.3.2 Nfpd information - element"; - leaf id { type string; description @@ -580,62 +465,172 @@ submodule etsi-nfv-ns { information element"; } - list cp-profile-id { + list element { key "id"; - description - "References the profile of a connection point to be - traversed by the traffic flows matching the criteria. - This shall be a connection point attached to one of - the constituent VNFs and PNFs of the parent VNFFG, - or a SAP of one of the constituent nested NSs of the - parent VNFFG."; - reference - "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc - information element"; - leaf id { type string; description - "Identifier of this CpProfile information element. - It uniquely identifies a CpProfile."; + "Identifier of this NfpPositionElemen information + element. It uniquely identifies an + NfpPositionElemen."; reference - "GS NFV IFA014: Section 6.4.6.2 CpProfile + "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement information element"; } - list constituent-profile-elements { - key "id"; - - description - "Specifies the constituents of the CpProfile."; - reference - "GS NFV IFA014: Section 6.4.6.2 CpProfile - information element"; - - leaf id { - type string; + container desc { + choice constituent-base-element-id { + mandatory "true"; + container vnf-profile { + leaf vnf-profile-id { + must ". = deref(../../vnfd-profile-id)" { + } + type leafref { + path "../../../../../../../../nsd/df/vnf-profile/id"; + } + } + } + container pnf-profile { + leaf pnf-profile-id { + must ". = deref(../../pnfd-profile-id)" { + } + type leafref { + path "../../../../../../../../nsd/df/pnf-profile/id"; + } + } + } + container ns-profile { + leaf ns-profile-id { + must ". = deref(../../ns-profile-id)" { + } + type leafref { + path "../../../../../../../../nsd/df/ns-profile/id"; + } + } + } description - "Specifies the constituents of the CpProfile."; + "Reference to the profile of an NS constituent."; reference - "GS NFV IFA014: Section 6.4.7.2 - ConstituentProfileElements information element"; + "GS NFV IFA014: Section 6.4.8 + CpdInConstituentElement information element"; } - leaf cpd-id { - type string; + choice constituent-cpd-id { + container vnf { + leaf vnfd-id { + must ". = deref(../../vnfd-profile-id)/../vnfd-id" { + } + type leafref { + path "../../../../../../../../vnfd/id"; + } + } + leaf cpd-id { + type leafref { + path "deref(../vnfd-id)/../ext-cpd/id"; + } + } + } + container pnf { + leaf pnfd-id { + must ". = deref(../../pnfd-profile-id)/../pnfd-id" { + } + type leafref { + path "../../../../../../../../pnfd/id"; + } + } + leaf pnf-cpd-id { + type leafref { + path "deref(../pnfd-id)/../ext-cpd/id"; + } + } + } + container ns { + leaf nsd-id { + must ". = deref(../../nested-ns-profile-id)/" + + "../nsd-id" { + } + + type leafref { + path "../../../../../../../../nsd/id"; + } + } + leaf sap-cpd-id { + type leafref { + path "deref(../nsd-id)/../sapd/id"; + } + } + } description "References the VNF external CPD for a given VnfProfile, or the PNF external CPD for a given - PnfProfile, or a NS SAPD for a give NsProfile - identified by the constituentBasedElementId."; + PnfProfile, or a NS SAPD for a given NsProfile + identified by the constituentBaseElementId."; reference - "GS NFV IFA014: Section 6.4.7.2 - ConstituentProfileElements information element"; + "GS NFV IFA014: Section 6.4.8.2 + CpdInConstituentElement information element"; } + description + "Identifies a CPD or SAPD in the context of a profile + of an NS constituent element."; + reference + "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement + information element"; } + description + "One or a pair of CPDs or SAPDs. These descriptors + shall be members of the CpdPool associated to the + parent VNFFG."; + reference + "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc + information element"; + } + + leaf forwarding-behaviour { + type identityref { + base forwarding-behaviour; + } + description + "Identifies a rule to apply to forward traffic to CP or + SAP instances corresponding to the referenced CPD(s) + and SAPD(s). The minimum list of rules to be supported + shall include: + • ALL = Traffic flows shall be forwarded simultaneously + to all CP or SAP instances created from the + referenced CP profile(s). + • LB = Traffic flows shall be forwarded to one CP or SAP + instance created from the referenced CP profile(s) + selected based on a load-balancing algorithm."; + reference + "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc + information element"; + } + + leaf forwarding-behavior-input-parameters { + type string; + description + "Provides input parameters to configure the forwarding + behaviour (e.g. identifies a load balancing + algorithm)."; + reference + "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc + information element"; } + + description + "Describes a position in the NFP in terms of one or more + CPDs and SAPDs and rules for distributing the traffic + among CP and SAP instances created from these CPDs + and SAPDs."; + reference + "GS NFV IFA014: Section 6.4.3.2 Nfpd information + element"; } + description + "The network forwarding path associated to the VNFFG."; + reference + "GS NFV IFA014: Section 6.4.2.2 Vnffgd information + element"; } } diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang index 43c1109..732bb86 100755 --- a/src/yang/etsi-nfv-vnf.yang +++ b/src/yang/etsi-nfv-vnf.yang @@ -56,6 +56,7 @@ submodule etsi-nfv-vnf { } leaf support-mandatory { + status "deprecated"; default "false"; type boolean; description @@ -871,6 +872,17 @@ submodule etsi-nfv-vnf { information element."; } + leaf provider { + type string; + description + "The provider of this software image. If not present the + provider of the software image is assumed to be same as + the VNF provider."; + reference + "GS NFV IFA011: Section 7.1.6.5 SwImageDesc + information element."; + } + container checksum { leaf algorithm { @@ -1270,6 +1282,55 @@ submodule etsi-nfv-vnf { } } + list vip-cpd { + key "id"; + + leaf-list int-cpd { + type leafref { + path "../../vdu/int-cpd/int-virtual-link-desc"; + } + description + "Reference to the internal VDU CPD which is used to + instantiate internal CPs. These internal CPs share the + virtual IP addresses allocated when a VipCp instance + is created from the VipCpd."; + reference + "GS NFV IFA011: Section 7.1.x, VipCpd information element."; + } + + leaf-list vnf-ext-cpd { + type leafref { + path "../../ext-cpd/id"; + } + description + "Reference to the VNF external CPD which is used to + instantiate external CPs. These external CPs share the + virtual IP addresses allocated when a VipCp instance is + created from the VipCpd."; + reference + "GS NFV IFA011: Section 7.1.x, VipCpd information element."; + } + + leaf vip-function { + type identityref { + base vip-function; + } + description + "It indicates the function the virtual IP address is used + for. Permitted values: high availability, load balancing."; + reference + "GS NFV IFA011: Section 7.1.x, VipCpd information element."; + } + + uses cpd; + + description + "Describes virtual IP addresses to be shared among instances + of connection points. See clause 7.1.x."; + reference + "GS NFV IFA011: Section 7.1.2, VNFD information element."; + } + list df { must "default-instantiation-level or " + "count(instantiation-level) = 1"; -- GitLab