Commit 2ec0a0f9 authored by jethanandani's avatar jethanandani
Browse files

Merge branch 'v2.7.1' into 'bug#252'

# Conflicts:
#   example-data/nfv-nsd.xml
#   example-data/nfv-vnfd.xml
parents 70442076 a342a58a
Pipeline #1621 passed with stage
in 0 seconds
...@@ -133,4 +133,4 @@ ...@@ -133,4 +133,4 @@
</ns-instantiation-level> </ns-instantiation-level>
</df> </df>
</nsd> </nsd>
</nsd> </config>
...@@ -9,6 +9,14 @@ submodule etsi-nfv-common { ...@@ -9,6 +9,14 @@ submodule etsi-nfv-common {
description description
"Common data types for ETSI data models."; "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 { revision 2019-04-25 {
description description
"Initial revision "Initial revision
...@@ -243,6 +251,99 @@ submodule etsi-nfv-common { ...@@ -243,6 +251,99 @@ submodule etsi-nfv-common {
"Ephemeral type of storage."; "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 * Typedefs
*/ */
...@@ -294,8 +395,8 @@ submodule etsi-nfv-common { ...@@ -294,8 +395,8 @@ submodule etsi-nfv-common {
grouping local-affinity-or-anti-affinity-rule { grouping local-affinity-or-anti-affinity-rule {
list local-affinity-or-anti-affinity-rule { list local-affinity-or-anti-affinity-rule {
key "affinity-type affinity-scope"; key "type scope";
leaf affinity-type { leaf type {
type affinity-type; type affinity-type;
description description
"Specifies whether the rule is an affinity rule or an "Specifies whether the rule is an affinity rule or an
...@@ -305,7 +406,7 @@ submodule etsi-nfv-common { ...@@ -305,7 +406,7 @@ submodule etsi-nfv-common {
LocalAffinityOrAntiAffinityRule information element."; LocalAffinityOrAntiAffinityRule information element.";
} }
leaf affinity-scope { leaf scope {
type affinity-scope; type affinity-scope;
description description
"Specifies the scope of the rule, possible values are "Specifies the scope of the rule, possible values are
......
...@@ -11,6 +11,14 @@ submodule etsi-nfv-ns { ...@@ -11,6 +11,14 @@ submodule etsi-nfv-ns {
description description
"Models for NS according to ETSI GS NFV-IFA 014."; "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 { revision 2019-04-25 {
description description
"Initial revision "Initial revision
...@@ -97,7 +105,7 @@ submodule etsi-nfv-ns { ...@@ -97,7 +105,7 @@ submodule etsi-nfv-ns {
leaf-list vnfd-id { leaf-list vnfd-id {
type leafref { type leafref {
path "../../vnfd/id"; path "/nfv:nfv/nfv:vnfd/nfv:id";
} }
description description
"References the VNFD of a constituent VNF."; "References the VNFD of a constituent VNF.";
...@@ -108,7 +116,7 @@ submodule etsi-nfv-ns { ...@@ -108,7 +116,7 @@ submodule etsi-nfv-ns {
leaf-list pnfd-id { leaf-list pnfd-id {
type leafref { type leafref {
path "../../pnfd/id"; path "/nfv:nfv/nfv:pnfd/nfv:id";
} }
description description
"References the PNFD of a constituent PNF."; "References the PNFD of a constituent PNF.";
...@@ -164,7 +172,7 @@ submodule etsi-nfv-ns { ...@@ -164,7 +172,7 @@ submodule etsi-nfv-ns {
leaf vnfd-id { leaf vnfd-id {
mandatory true; mandatory true;
type leafref { type leafref {
path "../../../../vnfd/id"; path "/nfv:nfv/nfv:vnfd/nfv:id";
} }
must "boolean(../../../vnfd-id[.=current()])"; must "boolean(../../../vnfd-id[.=current()])";
} }
...@@ -172,7 +180,7 @@ submodule etsi-nfv-ns { ...@@ -172,7 +180,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id { leaf ext-cpd-id {
mandatory true; mandatory true;
type leafref { 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 { ...@@ -181,7 +189,7 @@ submodule etsi-nfv-ns {
leaf pnfd-id { leaf pnfd-id {
mandatory true; mandatory true;
type leafref { type leafref {
path "../../../../pnfd/id"; path "/nfv:nfv/nfv:pnfd/nfv:id";
} }
must "boolean(../pnfd-id[.=current()])"; must "boolean(../pnfd-id[.=current()])";
} }
...@@ -189,7 +197,7 @@ submodule etsi-nfv-ns { ...@@ -189,7 +197,7 @@ submodule etsi-nfv-ns {
leaf ext-cpd-id { leaf ext-cpd-id {
mandatory true; mandatory true;
type leafref { 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 { ...@@ -415,121 +423,132 @@ submodule etsi-nfv-ns {
element"; element";
} }
list cpd-pool { list nfp-position-element {
key "id"; key "id";
description min-elements 1;
"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";
leaf id { leaf id {
type string; 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 { container desc {
mandatory "true"; choice constituent-base-element-id {
container vnf-profile { mandatory "true";
leaf vnf-profile-id { container vnf-profile {
must ". = deref(../../vnfd-profile-id)" { leaf vnf-profile-id {
} must ". = deref(../../vnfd-profile-id)" {
type leafref { }
path "../../../../../nsd/df/vnf-profile/id"; type leafref {
path "../../../../../../nsd/df/vnf-profile/id";
}
} }
} }
} container pnf-profile {
container pnf-profile { leaf pnf-profile-id {
leaf pnf-profile-id { must ". = deref(../../pnfd-profile-id)" {
must ". = deref(../../pnfd-profile-id)" { }
} type leafref {
type leafref { path "../../../../../../nsd/df/pnf-profile/id";
path "../../../../../nsd/df/pnf-profile/id"; }
} }
} }
} container ns-profile {
container ns-profile { leaf ns-profile-id {
leaf ns-profile-id { must ". = deref(../../ns-profile-id)" {
must ". = deref(../../ns-profile-id)" { }
} type leafref {
type leafref { path "../../../../../../nsd/df/ns-profile/id";
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 { choice constituent-cpd-id {
container vnf { container vnf {
leaf vnfd-id { leaf vnfd-id {
must ". = deref(../../vnfd-profile-id)/../vnfd-id" { must ". = deref(../../vnfd-profile-id)/../vnfd-id" {
} }
type leafref { type leafref {
path "../../../../../vnfd/id"; path "/nfv:nfv/nfv:vnfd/nfv:id";
}
} }
} leaf cpd-id {
leaf cpd-id { type leafref {
type leafref { path "deref(../vnfd-id)/../nfv:ext-cpd/nfv:id";
path "deref(../vnfd-id)/../ext-cpd/id"; }
} }
} }
} container pnf {
container pnf { leaf pnfd-id {
leaf pnfd-id { must ". = deref(../../pnfd-profile-id)/../pnfd-id" {
must ". = deref(../../pnfd-profile-id)/../pnfd-id" { }
type leafref {
path "/nfv:nfv/nfv:pnfd/nfv:id";
}
} }
type leafref { leaf pnf-cpd-id {
path "../../../../../pnfd/id"; type leafref {
path "deref(../pnfd-id)/../nfv:ext-cpd/nfv:id";
}
} }
} }
leaf pnf-cpd-id { container ns {
type leafref { leaf nsd-id {
path "deref(../pnfd-id)/../ext-cpd/id"; must ". = deref(../../nested-ns-profile-id)/" +
"../nsd-id" {
}
type leafref {
path "../../../../../../nsd/id";
}
} }
} leaf sap-cpd-id {
} type leafref {
container ns { path "deref(../nsd-id)/../sapd/id";
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 given NsProfile
identified by the constituentBaseElementId.";
reference
"GS NFV IFA014: Section 6.4.8.2
CpdInConstituentElement information element";
} }
description description
"A reference to the descriptor of a connection point "Specifies a CPD or SAPD in the context of a profile
attached to one of the constituent VNFs and PNFs or to of an NS constituent element.";
the descriptor of a NS SAP.";
reference reference
"GS NFV IFA014: Section 6.4.4.2 CpdPool information "GS NFV IFA014: Section 6.4.6.2 NfpPositionElement
element"; 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 { list nfpd {
key "id"; 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 { leaf id {
type string; type string;
description description
...@@ -544,32 +563,18 @@ submodule etsi-nfv-ns { ...@@ -544,32 +563,18 @@ submodule etsi-nfv-ns {
type string; type string;
description description
"Provides an NFP classification and selection rule. "Provides an NFP classification and selection rule.
The rule may be expressed as a criteria constructed The rule may be expressed as a criteria constructed out
out of atomic assertions linked by Boolean operators of atomic assertions linked by Boolean operators AND,
AND, OR and NOT."; OR and NOT.";
reference reference
"GS NFV IFA014: Section 6.4.3.2 Nfpd information "GS NFV IFA014: Section 6.4.3.2 Nfpd information
element"; element";
} }
list position-desc-id { list position-desc {
key "id"; key "id";
description min-elements 1;
"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 { leaf id {
type string; type string;
...@@ -580,68 +585,69 @@ submodule etsi-nfv-ns { ...@@ -580,68 +585,69 @@ submodule etsi-nfv-ns {
information element"; information element";
} }
list cp-profile-id { leaf-list nfp-position-element-id {
key "id"; type leafref {
path "../../../nfp-position-element/id";
}
description description
"References the profile of a connection point to be "Reference to one or a pair of CPDs or SAPDs.";
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 reference
"GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
information element"; information element";
}
leaf id { leaf forwarding-behaviour {
type string; type identityref {
description base forwarding-behaviour;
"Identifier of this CpProfile information element.
It uniquely identifies a CpProfile.";
reference
"GS NFV IFA014: Section 6.4.6.2 CpProfile
information element";
} }
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 { leaf forwarding-behavior-input-parameters {
key "id"; type string;
description
description "Provides input parameters to configure the forwarding
"Specifies the constituents of the CpProfile."; behaviour (e.g. identifies a load balancing
reference algorithm).";
"GS NFV IFA014: Section 6.4.6.2 CpProfile reference
information element"; "GS NFV IFA014: Section 6.4.5.2 NfpPositionDesc
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";