diff --git a/example-data/nfv-nsd.xml b/example-data/nfv-nsd.xml index 0b2f6b924acd6e5b556343ce5ee333fdab2a3924..cc2c70a15ea6a4057b359958fcc89788b9edeee9 100644 --- a/example-data/nfv-nsd.xml +++ b/example-data/nfv-nsd.xml @@ -133,4 +133,4 @@ - + diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang index 0a1c361eddba042598317e1bec71d6797a287d03..7077b5c7b1018057b7c02829dc02f44a51e76dd7 100644 --- a/src/yang/etsi-nfv-common.yang +++ b/src/yang/etsi-nfv-common.yang @@ -9,6 +9,14 @@ submodule etsi-nfv-common { description "Common data types for ETSI data models."; + revision 2019-10-01 { + description + "Version 2.7.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Ed271v264 + ETSI GS NFV-IFA 011 Ed271v264"; + } revision 2019-04-25 { description "Initial revision @@ -243,6 +251,99 @@ 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."; + } + + identity 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: + • NORMAL + • VIRTIO + • DIRECT + • BAREMETAL + • VIRTIO-FORWARDER + • DIRECT-PHYSICAL + • SMART-NIC"; + } + + identity normal { + base vnic-type; + description + "Normal NIC."; + } + + identity virtio { + base vnic-type; + description + "VirtIO NIC."; + } + + identity direct { + base vnic-type; + description + "Direct NIC type."; + } + + identity bare-metal { + base vnic-type; + description + "Bare metal NIC type."; + } + + identity virtio-forwarder { + base vnic-type; + description + "VirtIO Forwarder NIC type."; + } + + identity direct-physical { + base vnic-type; + description + "Direct physical NIC type."; + } + + identity smart-nic { + base vnic-type; + description + "SmartNIC or Smart NIC type."; + } + /* * Typedefs */ @@ -294,8 +395,8 @@ submodule etsi-nfv-common { grouping local-affinity-or-anti-affinity-rule { list local-affinity-or-anti-affinity-rule { - key "affinity-type affinity-scope"; - leaf affinity-type { + key "type scope"; + leaf type { type affinity-type; description "Specifies whether the rule is an affinity rule or an @@ -305,7 +406,7 @@ submodule etsi-nfv-common { LocalAffinityOrAntiAffinityRule information element."; } - leaf affinity-scope { + leaf scope { type affinity-scope; description "Specifies the scope of the rule, possible values are diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang index 1eb49ce02f133723d16093debe9c6aef98d1397a..ea46ecc5564346d5154018bd1ed74ffc2dbcb6d9 100644 --- a/src/yang/etsi-nfv-ns.yang +++ b/src/yang/etsi-nfv-ns.yang @@ -11,6 +11,14 @@ submodule etsi-nfv-ns { description "Models for NS according to ETSI GS NFV-IFA 014."; + revision 2019-10-01 { + description + "Version 2.7.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Ed271v264 + ETSI GS NFV-IFA 011 Ed271v264"; + } revision 2019-04-25 { description "Initial revision @@ -97,7 +105,7 @@ submodule etsi-nfv-ns { leaf-list vnfd-id { type leafref { - path "../../vnfd/id"; + path "/nfv:nfv/nfv:vnfd/nfv:id"; } description "References the VNFD of a constituent VNF."; @@ -108,7 +116,7 @@ submodule etsi-nfv-ns { leaf-list pnfd-id { type leafref { - path "../../pnfd/id"; + path "/nfv:nfv/nfv:pnfd/nfv:id"; } description "References the PNFD of a constituent PNF."; @@ -164,7 +172,7 @@ submodule etsi-nfv-ns { leaf vnfd-id { mandatory true; type leafref { - path "../../../../vnfd/id"; + path "/nfv:nfv/nfv:vnfd/nfv:id"; } must "boolean(../../../vnfd-id[.=current()])"; } @@ -172,7 +180,7 @@ submodule etsi-nfv-ns { leaf ext-cpd-id { mandatory true; type leafref { - path "deref(../vnfd-id)/../ext-cpd/id"; + path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id"; } } } @@ -181,7 +189,7 @@ submodule etsi-nfv-ns { leaf pnfd-id { mandatory true; type leafref { - path "../../../../pnfd/id"; + path "/nfv:nfv/nfv:pnfd/nfv:id"; } must "boolean(../pnfd-id[.=current()])"; } @@ -189,7 +197,7 @@ submodule etsi-nfv-ns { leaf ext-cpd-id { mandatory true; type leafref { - path "deref(../pnfd-id)/../ext-cpd/id"; + path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id"; } } } @@ -415,121 +423,132 @@ submodule etsi-nfv-ns { element"; } - list cpd-pool { + list nfp-position-element { key "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."; - reference - "GS NFV IFA014: Section 6.4.2.2 Vnffgd information - element"; + min-elements 1; leaf id { type string; + description + "Identifier of this NfpPositionElemen information + element. It uniquely identifies an + NfpPositionElemen."; + reference + "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement + information element"; } - 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 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 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"; + 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"; } - 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"; + choice constituent-cpd-id { + container vnf { + leaf vnfd-id { + must ". = deref(../../vnfd-profile-id)/../vnfd-id" { + } + type leafref { + path "/nfv:nfv/nfv:vnfd/nfv:id"; + } } - } - leaf cpd-id { - type leafref { - path "deref(../vnfd-id)/../ext-cpd/id"; + leaf cpd-id { + type leafref { + path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id"; + } } } - } - container pnf { - leaf pnfd-id { - must ". = deref(../../pnfd-profile-id)/../pnfd-id" { + container pnf { + leaf pnfd-id { + must ". = deref(../../pnfd-profile-id)/../pnfd-id" { + } + type leafref { + path "/nfv:nfv/nfv:pnfd/nfv:id"; + } } - type leafref { - path "../../../../../pnfd/id"; + leaf pnf-cpd-id { + type leafref { + path "deref(../pnfd-id)/../nfv:ext-cpd/nfv: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"; + } } - } - } - 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"; + 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 given NsProfile + identified by the constituentBaseElementId."; + reference + "GS NFV IFA014: Section 6.4.8.2 + CpdInConstituentElement information element"; } 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."; + "Specifies a CPD or SAPD in the context of a profile + of an NS constituent element."; reference - "GS NFV IFA014: Section 6.4.4.2 CpdPool information - element"; + "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"; } 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,32 +563,18 @@ 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"; + min-elements 1; leaf id { type string; @@ -580,68 +585,69 @@ submodule etsi-nfv-ns { information element"; } - list cp-profile-id { - key "id"; - + leaf-list nfp-position-element-id { + type leafref { + path "../../../nfp-position-element/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 to one or a pair of CPDs or SAPDs."; 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."; - reference - "GS NFV IFA014: Section 6.4.6.2 CpProfile - 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"; + } - 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; - description - "Specifies the constituents of the CpProfile."; - reference - "GS NFV IFA014: Section 6.4.7.2 - ConstituentProfileElements information element"; - } - - leaf cpd-id { - type string; - 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."; - reference - "GS NFV IFA014: Section 6.4.7.2 - ConstituentProfileElements 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"; } } leaf-list autoscale-rule { type string; } + list lifecycle-management-script { key "event"; leaf event { @@ -721,7 +727,7 @@ submodule etsi-nfv-ns { leaf vnfd-id { mandatory true; type leafref { - path "../../../../vnfd/id"; + path "/nfv:nfv/nfv:vnfd/nfv:id"; } description "References a VNFD."; @@ -733,7 +739,7 @@ submodule etsi-nfv-ns { leaf flavour-id { mandatory true; type leafref { - path "deref(../vnfd-id)/../df/id"; + path "deref(../vnfd-id)/../nfv:df/nfv:id"; } description "Identifies a flavour within the VNFD."; @@ -745,7 +751,8 @@ submodule etsi-nfv-ns { leaf instantiation-level { mandatory true; type leafref { - path "deref(../flavour-id)/../instantiation-level/id"; + path "deref(../flavour-id)/../nfv:instantiation-level/" + + "nfv:id"; } description "Identifier of the instantiation level of the VNF DF @@ -845,7 +852,7 @@ submodule etsi-nfv-ns { leaf constituent-cpd-id { type leafref { - path "deref(../../../vnfd-id)/../ext-cpd/id"; + path "deref(../../../vnfd-id)/../nfv:ext-cpd/nfv:id"; } description "A reference to the descriptor of a connection point @@ -879,7 +886,7 @@ submodule etsi-nfv-ns { leaf pnfd-id { type leafref { - path "../../../../pnfd/id"; + path "/nfv:nfv/nfv:pnfd/nfv:id"; } description "References a PNFD."; @@ -935,7 +942,7 @@ submodule etsi-nfv-ns { leaf constituent-cpd-id { type leafref { - path "deref(../../../pnfd-id)/../ext-cpd/id"; + path "deref(../../../pnfd-id)/../nfv:ext-cpd/nfv:id"; } description "A reference to the descriptor of a connection point @@ -1283,6 +1290,71 @@ submodule etsi-nfv-ns { "GS NFV IFA014: Section 6.3.2.2 NsDf information element"; } + container ns-lcm-additional-params { + container instantiate { + list params { + key "key"; + + leaf key { + type string; + } + + leaf value { + type string; + } + description + "Array of KVP requirements for additional parameters + of NS to be passed when invoking the Instantiate Ns + operation."; + reference + "GS NFV IFA014: Section 6.2.10.3 + InstantiateNsAdditionalParams information element"; + } + } + + container scale { + list params { + key "key"; + + leaf key { + type string; + } + + leaf value { + type string; + } + description + "Array of KVP requirements for additional parameters + of NS to be passed when invoking the Scale Ns + operation."; + reference + "GS NFV IFA014: Section 6.2.10.4 + ScaleNsAdditionalParams information element"; + } + } + + container heal { + list params { + key "key"; + + leaf key { + type string; + } + + leaf value { + type string; + } + description + "Array of KVP requirements for additional parameters + of NS to be passed when invoking the Heal Ns + operation."; + reference + "GS NFV IFA014: Section 6.2.10.5 + HealNsAdditionalParams information element"; + } + } + } + list ns-profile { must "min-number-of-instances <= max-number-of-instances" { error-message @@ -1506,7 +1578,7 @@ submodule etsi-nfv-ns { container vnf-indicator-info { leaf vnfd-id { type leafref { - path "../../../../../vnfd/id"; + path "/nfv:nfv/nfv:vnfd/nfv:id"; } description "Identifies a VNFD."; @@ -1518,7 +1590,7 @@ submodule etsi-nfv-ns { leaf vnf-indicator { mandatory true; type leafref { - path "deref(../vnfd-id)/../indicator/id"; + path "deref(../vnfd-id)/../nfv:indicator/nfv:id"; } description "Identifies a VNF indicator within the VNFD."; diff --git a/src/yang/etsi-nfv-nsd.yang b/src/yang/etsi-nfv-nsd.yang index 52cd50858104cbfdf6de45381c30bdd3f4dc4fd6..304fc30e19f93ead8831dc49a57dd6d382b9f85a 100644 --- a/src/yang/etsi-nfv-nsd.yang +++ b/src/yang/etsi-nfv-nsd.yang @@ -4,7 +4,7 @@ module etsi-nfv-nsd { prefix nsd; import etsi-nfv-descriptors { - prefix vnf; + prefix nfv; } organization @@ -13,6 +13,14 @@ module etsi-nfv-nsd { description "Network Services Descriptors"; + revision 2019-10-01 { + description + "Version 2.7.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Ed271v264 + ETSI GS NFV-IFA 011 Ed271v264"; + } revision 2019-04-25 { description "Initial revision. @@ -20,23 +28,10 @@ module etsi-nfv-nsd { } container nsd { - list vnfd { - key "id"; - description - "A VNF Descriptor (VNFD) is a deployment template which - describes a VNF in terms of deployment and operational - behaviour requirements. It also contains connectivity, - interface and virtualised resource requirements"; - reference - "GS NFV-IFA011: Section 7.1.2, VNFD information element"; - - uses vnf:vnfd; - } - list nsd { key "id"; max-elements 1; - uses vnf:nsd; + uses nfv:nsd; description "The NSD information element is a deployment template whose instances are used by the NFVO for the lifecycle management @@ -45,18 +40,5 @@ module etsi-nfv-nsd { "GS NFV-IFA014: Section 6.2.2, Network Service Descriptor information element"; } - - list pnfd { - key "id"; - - description - "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 - "GS NFV-IFA014: Section 6.6.2, Pnfd information element."; - - uses vnf:pnfd; - } } } diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang index ffe5d064004831f8c62fe68b97f6811f745dfd2a..170e9638b87a37dba4fe7599d1bb97ed0d4c3c2b 100644 --- a/src/yang/etsi-nfv-pnf.yang +++ b/src/yang/etsi-nfv-pnf.yang @@ -12,6 +12,14 @@ submodule etsi-nfv-pnf { description "Models for PNFD according to GS NFV-IFA 014."; + revision 2019-10-01 { + description + "Version 2.7.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Ed271v264 + ETSI GS NFV-IFA 011 Ed271v264"; + } revision 2019-04-25 { description "Initial revision. @@ -92,18 +100,6 @@ submodule etsi-nfv-pnf { "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; } - list security { - key "signature"; - uses security-parameters; - description - "Provides a signature to prevent tampering. - Editor's Note: While IFA014 does specify that the PNFD - includes a security parameter. SOL001 does not have one. - We need to harmonize SOL001 & SOL006 on this point."; - reference - "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; - } - leaf geographical-location-info { type string; description diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang index 43c11095fa644be600e48c843e9c5fca838e2be8..09a6c7ca2a8f7bbb1c8ed93cdac9e0d2cc620aea 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 2019-10-01 { + description + "Version 2.7.1. + + Common data structures to support VNFD and NSD according to: + ETSI GS NFV-IFA 014 Ed271v264 + ETSI GS NFV-IFA 011 Ed271v264"; + } revision 2019-03-18 { description "Initial revision. @@ -56,6 +64,7 @@ submodule etsi-nfv-vnf { } leaf support-mandatory { + status "deprecated"; default "false"; type boolean; description @@ -236,7 +245,7 @@ submodule etsi-nfv-vnf { leaf int-virtual-link-desc { type leafref { - path "../../../int-virtual-link-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id"; } description "Reference of the internal VLD which this internal CPD @@ -259,7 +268,7 @@ submodule etsi-nfv-vnf { leaf nicio-requirements { type leafref { - path "../../../virtual-compute-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:virtual-compute-desc/nfv:id"; } description "This references (couples) the CPD with any logical node I/O @@ -273,7 +282,7 @@ submodule etsi-nfv-vnf { VirtualNetworkInterfaceRequirements information element"; } - leaf-list order { + leaf order { type uint32; description "The order of the NIC to be assigned on the compute @@ -292,6 +301,27 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; } + + leaf vnic-type { + 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: + • NORMAL + • VIRTIO + • DIRECT + • BAREMETAL + • VIRTIO-FORWARDER + • DIRECT-PHYSICAL + • SMART-NIC"; + reference + "GS NFV IFA011: Section 7.1.6.4, VduCpd information + element."; + } uses cpd; leaf security-group-rule-id { @@ -871,6 +901,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 { @@ -1221,7 +1262,7 @@ submodule etsi-nfv-vnf { Descriptor (CPD) connect. Either intVirtualLinkDesc or intCpd shall be present."; type leafref { - path "../../int-virtual-link-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id"; } } @@ -1238,12 +1279,28 @@ submodule etsi-nfv-vnf { } } } + + leaf vip-cpd { + type leafref { + path "../../vip-cpd/id"; + } + description + "Reference to the VIP CPD which is used to instantiate CPs + to hold virtual IP addresses. These CPs are, in turn, + exposed as external CPs defined by this external CPD. + One and only one of the following attributes shall be + present: intVirtualLinkDesc or intCpd or vipCpd ."; + reference + "GS NFV-IFA011: Section 7.1.3.2, VnfExtCpd information + element"; + } } + uses virtual-network-interface-requirements; leaf nicio-requirements { type leafref { - path "../../virtual-compute-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:virtual-compute-desc/nfv:id"; } description "This references (couples) the CPD with any logical node I/O @@ -1270,6 +1327,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"; @@ -1374,7 +1480,7 @@ submodule etsi-nfv-vnf { leaf id { type leafref { - path "../../../int-virtual-link-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id"; } description "Uniquely identifies a Vnf VLD."; @@ -1386,7 +1492,7 @@ submodule etsi-nfv-vnf { leaf flavour { type leafref { path "deref(../../../ext-cpd/int-virtual-link-desc)" + - "/../flavour/id"; + "/../nfv:flavour/nfv:id"; } description "Identifies a flavour within the VnfVirtualLinkDesc."; @@ -1535,6 +1641,19 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.8.14, L2ProtocolData information element."; } + + 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 + "GS NFV IFA011: Section 7.1.8.14, + L2ProtocolData information element."; + } + description "Specifies the L2 protocol data for this virtual link. Shall be present when the associatedLayerProtocol @@ -2713,7 +2832,7 @@ submodule etsi-nfv-vnf { leaf-list virtual-link-desc { type leafref { - path "../../int-virtual-link-desc/id"; + path "/nfv:nfv/nfv:vnfd/nfv:int-virtual-link-desc/nfv:id"; } description "References to VnfVirtualLinkDesc that are part of this