diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 42ddfedf1554cdf4edb324dc2b29098af49eaa5f..275d206d3b21068237564ba6de68df517ab7c9e0 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -4,24 +4,21 @@
My Company
My Company ASAv
9.8
- 9.8
+ 9.8
My Company Vnfm
firewall
Firewall VDU
inside
- inside
Ethernet
management
- management
Ethernet
outside
- outside
Ethernet
asa-vcd
@@ -51,14 +48,26 @@
inside
+
+ firewall
+ inside
+
Ethernet
management
+
+ firewall
+ management
+
Ethernet
outside
+
+ firewall
+ outside
+
Ethernet
@@ -97,17 +106,14 @@
Router VDU
left
- left
Ethernet
management
- management
Ethernet
right
- right
Ethernet
csr-vcd
@@ -137,14 +143,26 @@
left
+
+ router
+ left
+
Ethernet
management
+
+ router
+ management
+
Ethernet
right
+
+ router
+ right
+
Ethernet
@@ -225,7 +243,9 @@
fw2dpi
1.0
- Ethernet
+
+ Ethernet
+
normal
@@ -239,7 +259,9 @@
mgmt
1.0
- IPv4
+
+ IPv4
+
normal
@@ -253,7 +275,9 @@
r2fw
1.0
- Ethernet
+
+ Ethernet
+
normal
@@ -447,7 +471,9 @@
r2fw
1.0
- IPv4
+
+ IPv4
+
r2fw
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 07b26dd7f586133b934ea8ab24c9dbcfc2bdb010..12656479a41b0e67bb5cfebc0648c442439bb94f 100644
--- a/src/yang/etsi-nfv-common.yang
+++ b/src/yang/etsi-nfv-common.yang
@@ -6,13 +6,13 @@ submodule etsi-nfv-common {
description
"Common data types for ETSI data models.";
- revision 2018-06-19 {
+ revision 2019-03-18 {
description
"Initial revision
Common data structures to support VNFD and NSD according to:
- ETSI GS NFV-IFA 014 Ed251v244
- ETSI GS NFV-IFA 011 Ed251v243";
+ ETSI GS NFV-IFA 014 Ed261v252
+ ETSI GS NFV-IFA 011 Ed261v254";
}
/*
@@ -253,14 +253,20 @@ submodule etsi-nfv-common {
grouping connectivity-type {
container connectivity-type {
- leaf layer-protocol {
- mandatory true;
- type identityref {
- base layer-protocol;
- }
+ list layer-protocol {
+ key "protocol";
+
+ leaf protocol {
+ type identityref {
+ base layer-protocol;
+ }
+ }
description
- "Identifies the protocol this VL gives access to (Ethernet,
- MPLS, ODU2, IPV4, IPV6, Pseudo-Wire).";
+ "Identifies the protocols that the VL uses (Ethernet,
+ MPLS, ODU2, IPV4, IPV6, Pseudo-Wire). The top layer
+ protocol of the VL protocol stack shall always be provided.
+ The lower layer protocols may be included when there are
+ specific requirements on these layers.";
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element.";
@@ -370,30 +376,23 @@ submodule etsi-nfv-common {
}
}
- // The following grouping is Cpd information element as defined in
- // IFA014. IFA011 defines its own Cpd information element, which
- // is defined in etsi-nfv-vnf.yang file. Do not use this grouping
- // for inclusion in a Vnf.
grouping cpd {
description
- "The Cpd information element specifies the characteristics of
- connection points attached to NFs and NSs. This is an
- abstract class used as parent for the various Cpd classes.
- It has an attribute 'trunkMode' which enables the NFVO to
- identify whether the Cp instantiated from the Cpd is in trunk
- mode or not.";
+ "A Cpd information element describes network
+ connectivity to a compute resource or a VL.";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
leaf id {
type string;
description
"Identifier of this Cpd information element.";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
}
- leaf layer-protocol {
- mandatory true;
+
+ leaf-list layer-protocol {
+ default Ethernet;
type identityref {
base layer-protocol;
}
@@ -402,8 +401,9 @@ submodule etsi-nfv-common {
corresponding to the CPD support for connectivity purposes
(e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.).";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
}
+
leaf role {
type identityref {
base cp-role;
@@ -415,8 +415,9 @@ submodule etsi-nfv-common {
a tree flow pattern within the NS will have legal cpRoles
of ROOT and LEAF.";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
}
+
leaf description {
type string;
description
@@ -424,8 +425,140 @@ submodule etsi-nfv-common {
connection point (e.g. connection point for control plane
traffic).";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ }
+
+ list protocol {
+ key "associated-layer-protocol";
+
+ leaf associated-layer-protocol {
+ type identityref {
+ base layer-protocol;
+ }
+ description
+ "One of the values of the attribute layerProtocol of the Cpd
+ IE.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information
+ element";
+ }
+
+ list address-data {
+ key "type";
+
+ leaf type {
+ type identityref {
+ base address-type;
+ }
+ description
+ "Describes the type of the address to be assigned to the
+ CP instantiated from the parent CPD.
+ Value:
+ • MAC address.
+ • IP address.
+ • Etc.
+ The content type shall be aligned with the address type
+ supported by the layerProtocol attribute of the parent
+ CPD.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.3 AddressData information
+ element";
+ }
+
+ container l2-address-data {
+ when "../type='mac-address'";
+ leaf mac-address-assignment {
+ type boolean;
+ default true;
+ description
+ "Specify if the MAC address assignment is the
+ responsibility of management and orchestration function
+ or not. If it is set to True, it is the management and
+ orchestration function responsibility. If it is set to
+ False, it will be provided by an external entity,
+ e.g. OSS/BSS.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.5 L2AddressData
+ information element";
+ }
+
+ description
+ "Provides the information on the MAC addresses to be
+ assigned to the CP(s) instantiated from the parent CPD.
+ Shall be present when the addressType is MAC address.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.3 AddressData information
+ element";
+ }
+
+ container l3-address-data {
+ when "../type='ip-address'";
+ leaf ip-address-assignment {
+ type boolean;
+ default "true";
+ description
+ "Specify if the address assignment is the responsibility
+ of management and orchestration function or not. If it
+ is set to True, it is the management and orchestration
+ function responsibility. ";
+ reference
+ "GS NFV IFA011: Section 7.1.3.4, L3AddressData
+ information element.";
+ }
+
+ leaf floating-ip-activated {
+ type boolean;
+ default "true";
+ description
+ "Specify if the floating IP scheme is activated on the CP
+ or not.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.4, L3AddressData
+ information element.";
+ }
+
+ leaf ip-address-type {
+ type enumeration {
+ enum "ipv4";
+ enum "ipv6";
+ }
+ description
+ "Define address type. The address type should be aligned
+ with the address type supported by the layerProtocol
+ attribute of the parent VnfExtCpd.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.4, L3AddressData
+ information element.";
+ }
+
+ leaf number-of-ip-addresses {
+ type uint32;
+ description
+ "Minimum number of IP addresses to be assigned based on
+ this L3AddressData information element.";
+ reference
+ "GS NFV IFA011: Section 7.1.3.4, L3AddressData
+ information element.";
+ }
+ }
+ description
+ "Provides information on the addresses to be assigned to the
+ CP(s) instantiated from the CPD.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.8 CpProtocolData information
+ element";
+ }
+ description
+ "Identifies the protocol layering information the CP uses for
+ connectivity purposes and associated information. There shall
+ be one cpProtocol for each layer protocol as indicated by the
+ attribute layerProtocol. When a PnfExtCpd as defined in ETSI
+ GS NFV-IFA 014 [i.8] is inherited from this Cpd, the
+ cardinality is set to 0.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
}
+
leaf trunk-mode {
type boolean;
description
@@ -436,7 +569,117 @@ submodule etsi-nfv-common {
is not configured for the Cp i.e. It is equivalent to
Boolean value 'false'.";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ }
+
+ leaf security-group-rule-id {
+ type leafref {
+ path "/nfv/vnfd/security-group-rule/id";
+ }
+ description
+ "Reference of the security group rules bound to this
+ CPD.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ }
+ }
+
+ grouping security-group-rule {
+ list security-group-rule {
+ key "id";
+
+ leaf id {
+ type string;
+ description
+ "Identifier of this SecurityGroupRule information
+ element.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Human readable description of the security group rule.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf direction {
+ type enumeration {
+ enum ingress;
+ enum egress;
+ }
+ default "ingress";
+ description
+ "The direction in which the security group rule is applied.
+ Permitted values: INGRESS, EGRESS. Defaults to INGRESS.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf ether-type {
+ type enumeration {
+ enum ipv4;
+ enum ipv6;
+ }
+ default "ipv4";
+ description
+ "Indicates the protocol carried over the Ethernet layer.
+ Permitted values: IPV4, IPV6. Defaults to IPV4.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf protocol {
+ type enumeration {
+ enum tcp;
+ enum udp;
+ enum icmp;
+ }
+ default "tcp";
+ description
+ "Indicates the protocol carried over the IP layer.
+ Permitted values: any protocol defined in the IANA
+ protocol registry, e.g. TCP, UDP, ICMP, etc. Defaults
+ to TCP.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf port-range-min {
+ must ". <= ../port-range-max";
+ type uint16;
+ default "0";
+ description
+ "Indicates minimum port number in the range that is
+ matched by the security group rule. Defaults to 0.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ leaf port-range-max {
+ must ". >= ../port-range-min";
+ type uint16;
+ default "65535";
+ description
+ "Indicates maximum port number in the range that is
+ matched by the security group rule. Defaults to 65535.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.9, SecurityGroupRule
+ information element.";
+ }
+
+ description
+ "Defines security group rules to be used by the VNF.";
+ reference
+ "GS NFV IFA011: Section 7.1.2, VNFD information element.";
}
}
}
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index a75279e57de89e8678340557546d287ea88b8223..82d649ec87a7773c7ffbacd9793b27b0ccbb2f50 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -4,24 +4,21 @@ submodule etsi-nfv-ns {
prefix nfv;
}
- import etsi-nfv-common {
- prefix common;
- }
-
+ include etsi-nfv-common;
include etsi-nfv-vnf;
include etsi-nfv-pnf;
description
"Models for NS according to ETSI GS NFV-IFA 014.";
- revision 2017-01-20 {
+ revision 2019-03-18 {
description
"Initial revision
Common data structure to support NSD according to:
- ETSI GS NFV-IFA 011 Ed251v243";
+ ETSI GS NFV-IFA 014 Ed261v252";
reference
- "ETSI GS NFV-IFA 011 Ed251v243";
+ "ETSI GS NFV-IFA 014 Ed261v252";
}
grouping resource-handle {
@@ -133,7 +130,7 @@ submodule etsi-nfv-ns {
description
"Identifier of this Cpd information element.";
reference
- "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
}
leaf address-assignment {
@@ -248,7 +245,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses common:connectivity-type;
+ uses connectivity-type;
list df {
key "id";
@@ -272,6 +269,7 @@ submodule etsi-nfv-ns {
}
container qos {
+ presence "VL QoS parameters";
description
"The QoS information element specifies quality of
service parameters applicable to a VL.";
@@ -364,7 +362,7 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
}
- uses common:security-parameters;
+ uses security-parameters;
}
list vnffgd {
@@ -485,7 +483,7 @@ submodule etsi-nfv-ns {
}
container ns {
leaf nsd-id {
- must ". = deref(../../ns-profile-id)/../nsd-id" {
+ must ". = deref(../../nested-ns-profile-id)/../nsd-id" {
}
type leafref {
@@ -745,7 +743,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
- mandatory true;
+ default 1;
type uint16;
description
"Minimum number of instances of the VNF based on this
@@ -756,7 +754,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
- mandatory true;
+ default 1;
type uint16;
description
"Maximum number of instances of the VNF based on this
@@ -766,7 +764,7 @@ submodule etsi-nfv-ns {
element";
}
- uses common:local-affinity-or-anti-affinity-rule;
+ uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -932,7 +930,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses common:local-affinity-or-anti-affinity-rule;
+ uses local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -959,7 +957,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
container min-bitrate-requirements {
description
@@ -968,7 +966,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
}
@@ -1048,7 +1046,7 @@ submodule etsi-nfv-ns {
leaf affinity-type {
mandatory true;
- type common:affinity-type;
+ type affinity-type;
description
"Specifies the type of relationship that the members of
the group have: 'affinity' or 'anti-affinity.'";
@@ -1059,7 +1057,7 @@ submodule etsi-nfv-ns {
leaf affinity-scope {
mandatory true;
- type common:affinity-scope;
+ type affinity-scope;
description
"Specifies the scope of the affinity or anti-affinity
relationship e.g. a NFVI node, an NFVI PoP, etc.";
@@ -1123,7 +1121,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of VNF instances required for
@@ -1156,7 +1154,7 @@ submodule etsi-nfv-ns {
VirtualLinkToLevelMapping information element";
}
- uses common:link-bitrate-requirements;
+ uses link-bitrate-requirements;
}
list ns-to-level-mapping {
@@ -1183,7 +1181,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- mandatory true;
+ default 1;
type uint32;
description
"Specifies the number of nested NS instances required
@@ -1289,7 +1287,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Minimum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
@@ -1300,7 +1298,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Maximum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
@@ -1484,7 +1482,7 @@ submodule etsi-nfv-ns {
}
}
}
- uses common:security-parameters;
+ uses security-parameters;
}
}
}
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index 1bfad35ef488ebf8b45ed1a91740501bb7ce3aa9..ae7ef81fd3c4659ed7555fcc33202a7355113396 100644
--- a/src/yang/etsi-nfv-pnf.yang
+++ b/src/yang/etsi-nfv-pnf.yang
@@ -12,15 +12,15 @@ submodule etsi-nfv-pnf {
description
"Models for PNFD according to GS NFV-IFA 014.";
- revision 2018-06-25 {
+ revision 2019-03-18 {
description
"Initial revision.
Common data structure to support VNFD according to:
- ETSI GS NFV-IFA 014 Ed251v244";
+ ETSI GS NFV-IFA 014 Ed261v252";
reference
- "ETSI GS NFV-IFA 014 Ed251v244";
+ "ETSI GS NFV-IFA 014 Ed261v252";
}
grouping pnfd {
@@ -111,6 +111,7 @@ submodule etsi-nfv-pnf {
reference
"GS NFV-IFA014: Section 6.6.2, Pnfd information element";
}
+ uses security-group-rule;
}
}
}
diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang
index a3ee11e5cdce4766f424f5f0ea6252b37e71c104..a46af0d72bad7d6aca6ceb20f4402597f6914bb1 100755
--- a/src/yang/etsi-nfv-vnf.yang
+++ b/src/yang/etsi-nfv-vnf.yang
@@ -16,15 +16,15 @@ submodule etsi-nfv-vnf {
description
"Models for VNFD according to GS NFV-IFA 011.";
- revision 2018-06-19 {
+ revision 2019-03-18 {
description
"Initial revision.
Common data structure to support VNFD according to:
- VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
+ VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
reference
- "ETSI GS NFV-IFA 011 Ed251v243";
+ "ETSI GS NFV-IFA 011 Ed261v254";
}
grouping virtual-network-interface-requirements {
@@ -54,7 +54,7 @@ submodule etsi-nfv-vnf {
VirtualNetworkInterfaceRequirements information element";
}
leaf support-mandatory {
- mandatory true;
+ default "false";
type boolean;
description
"Indicates whether fulfilling the constraint is
@@ -98,161 +98,6 @@ submodule etsi-nfv-vnf {
}
}
- // This grouping definition is for use within Vnfd as defined in
- // IFA011. A similar definition of Cpd exists in IFA014, but
- // that is for use with Sapd and Pnfd. Do not use this grouping
- // for that.
- grouping vnf-cpd {
- description
- "A Cpd information element describes network
- connectivity to a compute resource or a VL.";
- reference
- "GS NFC IFA011: Section 7.1.6.3 Cpd Information
- Element";
- leaf id {
- type string;
- description
- "Identifier of this Cpd information element.";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- }
- leaf layer-protocol {
- mandatory true;
- type identityref {
- base layer-protocol;
- }
- description
- "Identifies which protocol the CP uses for connectivity
- purposes (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire,
- etc.).";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- }
- leaf role {
- type identityref {
- base cp-role;
- }
- description
- "Identifies the role of the port in the context of the
- traffic flow patterns in the VNF or parent NS. For example a
- VNF with a tree flow pattern within the VNF will have legal
- cpRoles of ROOT and LEAF.";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- }
- leaf description {
- type string;
- description
- "Human readable description of the connection point";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- }
- container protocol {
- description
- "Identifies the protocol layering information the CP uses for
- connectivity purposes and associated information. There shall
- be one cpProtocol for each layer protocol as indicated by the
- attribute layerProtocol.";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- leaf associated-layer-protocol {
- type identityref {
- base layer-protocol;
- }
- description
- "One of the values of the attribute layerProtocol of the Cpd
- IE.";
- reference
- "GS NFV IFA011: Section 7.1.6.8, CpProtocolData information
- element.";
- }
-
- list address-data {
- key "address-type";
- leaf address-type {
- type identityref {
- base address-type;
- }
- description
- "Describes the type of the address to be assigned to the CP
- instantiated from the parent CPD.
- Value:
- • MAC address.
- • IP address.
- • …
- The content type shall be aligned with the address type
- supported by the layerProtocol attribute of the parent CPD.";
- reference
- "GS NFV IFA011: Section 7.1.3.3, AddressData information
- element.";
- }
- container l2-address-data {
- when "../address-type='mac-address'";
- }
- container l3-address-data {
- when "../address-type='ip-address'";
- leaf ip-address-assignment {
- type boolean;
- description
- "Specify if the address assignment is the responsibility
- of management and orchestration function or not. If it
- is set to True, it is the management and orchestration
- function responsibility. ";
- reference
- "GS NFV IFA011: Section 7.1.3.4, L3AddressData
- information element.";
- }
- leaf floating-ip-activated {
- type boolean;
- description
- "Specify if the floating IP scheme is activated on the CP
- or not.";
- reference
- "GS NFV IFA011: Section 7.1.3.4, L3AddressData
- information element.";
- }
- leaf ip-address-type {
- type enumeration {
- enum "ipv4";
- enum "ipv6";
- }
- description
- "Define address type. The address type should be aligned
- with the address type supported by the layerProtocol
- attribute of the parent VnfExtCpd.";
- reference
- "GS NFV IFA011: Section 7.1.3.4, L3AddressData
- information element.";
- }
- leaf number-of-ip-addresses {
- type uint32;
- description
- "Minimum number of IP addresses to be assigned based on
- this L3AddressData information element.";
- reference
- "GS NFV IFA011: Section 7.1.3.4, L3AddressData
- information element.";
- }
- }
- description
- "The AddressData information element supports providing
- information about the addressing scheme and parameters
- applicable to a CP.";
- reference
- "GS NFV IFA011: Section 7.1.3.3, AddressData information
- element.";
- }
- }
- leaf trunk-mode {
- type boolean;
- description
- "Information about whether the CP instantiated from this CPD
- is in Trunk mode (802.1Q or other).";
- reference
- "GS NFV IFA011: Section 7.1.6.3, Cpd information element.";
- }
- }
-
grouping vnfd {
list vnfd {
key "id";
@@ -435,8 +280,7 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.4, VduCpd information
element.";
}
-
- uses vnf-cpd;
+ uses cpd;
}
leaf virtual-compute-desc {
type leafref {
@@ -701,7 +545,7 @@ submodule etsi-nfv-vnf {
range "0..max";
}
units "Gb";
- mandatory true;
+ default 1;
description
"Amount of virtual memory in MB.";
reference
@@ -773,7 +617,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
- mandatory true;
+ default 1;
description
"Number of virtual CPUs.";
reference
@@ -820,7 +664,7 @@ submodule etsi-nfv-vnf {
container virtual-cpu-pinning {
presence "Set to specify CPU pinning.";
leaf cpu-pinning-policy {
- mandatory true;
+ default "dynamic";
type enumeration {
enum "static";
enum "dynamic";
@@ -866,7 +710,7 @@ submodule etsi-nfv-vnf {
enum "swap";
enum "ephemeral";
}
- mandatory true;
+ default "root";
description
"Type of virtualised storage resource (e.g. volume,
object).";
@@ -877,7 +721,7 @@ submodule etsi-nfv-vnf {
leaf size-of-storage {
type uint64;
units "Gb";
- mandatory true;
+ default 0;
description
"Size of virtualised storage resource (e.g. size of
volume, in Gb)";
@@ -955,8 +799,26 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
- leaf checksum {
- type string;
+ container checksum {
+ leaf algorithm {
+ type string;
+ description
+ "Species the algorithm used to obtain the checksum
+ value.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 ChecksumData
+ information element.";
+ }
+ leaf hash {
+ type string;
+ description
+ "Contains the result of applying the algorithm
+ indicated by the algorithm attribute to the data to
+ which this ChecksumData refers.";
+ reference
+ "GS NFV IFA011: Section 7.1.6.10 ChecksumData
+ information element.";
+ }
description
"The checksum of the software image file.";
reference
@@ -964,7 +826,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf container-format {
- mandatory true;
+ default "bare";
type enumeration {
enum "aki" {
description
@@ -1004,7 +866,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf disk-format {
- mandatory true;
+ default "qcow2";
type enumeration {
enum "aki" {
description
@@ -1102,7 +964,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf image {
- mandatory true;
+ default ".";
type inet:uri;
description
"This is a reference to the actual software image.
@@ -1169,6 +1031,7 @@ submodule etsi-nfv-vnf {
information element.";
}
container qos {
+ presence "VL QoS parameters";
description
"QoS of the VL.";
reference
@@ -1246,6 +1109,8 @@ submodule etsi-nfv-vnf {
}
}
+ uses security-group-rule;
+
list ext-cpd {
key "id";
min-elements 1;
@@ -1274,12 +1139,14 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
- path "deref(../vdu-id)/../int-cpd/id";
+ type leafref {
+ path "deref(../vdu-id)/../int-cpd/id";
+ }
}
}
}
uses virtual-network-interface-requirements;
- uses vnf-cpd;
+ uses cpd;
}
list df {
@@ -1327,7 +1194,7 @@ submodule etsi-nfv-vnf {
}
leaf min-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
description
"Minimum number of instances of the VNFC based on this
VDU that is permitted to exist for this flavour.";
@@ -1337,7 +1204,7 @@ submodule etsi-nfv-vnf {
}
leaf max-number-of-instances {
type uint16;
- mandatory true;
+ default 1;
must ". >= ../nfv:min-number-of-instances";
reference
"GS NFV IFA011: Section 7.1.8.3, VduProfile information
@@ -1498,7 +1365,7 @@ submodule etsi-nfv-vnf {
must ". >= ../../../../nfv:df/" +
"nfv:vdu-profile[id=current()/../nfv:id]/" +
"nfv:min-number-of-instances";
- mandatory true;
+ default 1;
description
"Number of instances of VNFC based on this VDU to
deploy for this level.";
@@ -1795,6 +1662,118 @@ submodule etsi-nfv-vnf {
AffinityOrAntiAffinityGroup information element";
}
}
+
+ list indicator {
+ key "id";
+
+ leaf id {
+ type string;
+ description
+ "Unique identifier.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ leaf name {
+ type string;
+ description
+ "The human readable name of the VnfIndicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ leaf indicator-value {
+ type string;
+ description
+ "Defines the allowed values or value ranges of this
+ indicator.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ leaf source {
+ type enumeration {
+ enum vnf;
+ enum em;
+ enum both;
+ }
+ description
+ "Describe the source of the indicator. The possible
+ values are:
+ • VNF.
+ • EM.
+ • Both.
+
+ This tells the consumer where to send the subscription
+ request.";
+ reference
+ "GS NFV IFA011: Section 7.1.11.2 VnfIndicator
+ information element";
+ }
+
+ description
+ "Declares the VNF indicators that are supported by this
+ VNF (specific to this DF).";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ }
+
+ list supported-vnf-interfaces {
+ key "name";
+
+ leaf name {
+ type enumeration {
+ enum vnf-configuration;
+ enum vnf-indicator;
+ }
+ description
+ "Identifies an interface produced by the VNF. Valid
+ values:
+ - VNF_CONFIGURATION
+ - VNF_INDICATOR";
+ reference
+ "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
+ information element";
+ }
+
+ leaf-list cpd-id {
+ type leafref {
+ path "../../../ext-cpd/id";
+ }
+ description
+ "References one or more CPDs from which to instantiate
+ external CPs through which interface endpoints on the
+ VNF side can be reached by the VNFM.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.16 VnfInterfaceDetails
+ information element";
+ }
+
+ list interface-details {
+ key "key";
+
+ leaf key {
+ type string;
+ }
+
+ leaf value {
+ type string;
+ }
+ }
+
+ description
+ "Indicates which interfaces the VNF produces and provides
+ additional details on how to access the interface
+ endpoints.";
+ reference
+ "GS NFV IFA011: Section 7.1.8.2 VnfDf information
+ element";
+ }
+
list monitoring-parameter {
key "id";
@@ -2063,7 +2042,23 @@ submodule etsi-nfv-vnf {
leaf-list extension {
type string;
description
- "'Extension' attributes of VnfInfo that are writeable.";
+ "Additional VNF-specific attributes of VnfInfo that
+ affect the lifecycle management of a VNF instance and
+ that are writeable.
+
+ For each VNF instance, these attributes are stored
+ persistently by the VNFM and can be queried and
+ modified through the VNFM.
+
+ These attributes are intended to be consumed by the
+ VNFM or by the lifecycle management scripts during the
+ execution of VNF lifecycle management operations.
+
+ Modifying these values has no direct effect on the VNF
+ instance; however, modified values can be considered
+ during subsequent VNF lifecycle management operations,
+ which means that the modified values can indirectly
+ affect the configuration of the VNF instance.";
reference
"GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
information element";
@@ -2071,7 +2066,22 @@ submodule etsi-nfv-vnf {
leaf-list metadata {
type string;
description
- "'Metadata' attributes of VnfInfo that are writeable.";
+ "Additional VNF-specific attributes of VnfInfo that are
+ writeable and that provide metadata describing the VNF
+ instance.
+
+ For each VNF instance, these attributes are stored
+ persistently by the VNFM and can be queried and modified
+ through the VNFM.
+
+ These attributes are intended to provide information to
+ functional blocks external to the VNFM and will not be
+ used by the VNFM or the VNF lifecycle management
+ scripts when executing lifecycle management operations.
+
+ Modifying these attributes has no effect on the VNF
+ instance. It only affects the attribute values stored by
+ the VNFM.";
reference
"GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
information element";
diff --git a/src/yang/etsi-nfv.yang b/src/yang/etsi-nfv.yang
index a209fc30f22d3c0a1cbe136c512ca4ec9be6ac12..96d0db1afe03b81d01fd56e05d7021246ca3dcea 100644
--- a/src/yang/etsi-nfv.yang
+++ b/src/yang/etsi-nfv.yang
@@ -14,11 +14,11 @@ module etsi-nfv {
description
"Network Function Virtualization Descriptors";
- revision 2018-06-13 {
+ revision 2019-03-18 {
description
"Initial revision.
- NSD and PNFD according to ETSI GS NFV-IFA 014 Ed251v244
- VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
+ NSD and PNFD according to ETSI GS NFV-IFA 014 Ed261v252
+ VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
}
container nfv {