diff --git a/example-data/nfv.xml b/example-data/nfv.xml
index 275d206d3b21068237564ba6de68df517ab7c9e0..42ddfedf1554cdf4edb324dc2b29098af49eaa5f 100644
--- a/example-data/nfv.xml
+++ b/example-data/nfv.xml
@@ -4,21 +4,24 @@
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
@@ -48,26 +51,14 @@
inside
-
- firewall
- inside
-
Ethernet
management
-
- firewall
- management
-
Ethernet
outside
-
- firewall
- outside
-
Ethernet
@@ -106,14 +97,17 @@
Router VDU
left
+ left
Ethernet
management
+ management
Ethernet
right
+ right
Ethernet
csr-vcd
@@ -143,26 +137,14 @@
left
-
- router
- left
-
Ethernet
management
-
- router
- management
-
Ethernet
right
-
- router
- right
-
Ethernet
@@ -243,9 +225,7 @@
fw2dpi
1.0
-
- Ethernet
-
+ Ethernet
normal
@@ -259,9 +239,7 @@
mgmt
1.0
-
- IPv4
-
+ IPv4
normal
@@ -275,9 +253,7 @@
r2fw
1.0
-
- Ethernet
-
+ Ethernet
normal
@@ -471,9 +447,7 @@
r2fw
1.0
-
- IPv4
-
+ IPv4
r2fw
diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang
index 12656479a41b0e67bb5cfebc0648c442439bb94f..07b26dd7f586133b934ea8ab24c9dbcfc2bdb010 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 2019-03-18 {
+ revision 2018-06-19 {
description
"Initial revision
Common data structures to support VNFD and NSD according to:
- ETSI GS NFV-IFA 014 Ed261v252
- ETSI GS NFV-IFA 011 Ed261v254";
+ ETSI GS NFV-IFA 014 Ed251v244
+ ETSI GS NFV-IFA 011 Ed251v243";
}
/*
@@ -253,20 +253,14 @@ submodule etsi-nfv-common {
grouping connectivity-type {
container connectivity-type {
- list layer-protocol {
- key "protocol";
-
- leaf protocol {
- type identityref {
- base layer-protocol;
- }
- }
+ leaf layer-protocol {
+ mandatory true;
+ type identityref {
+ base layer-protocol;
+ }
description
- "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.";
+ "Identifies the protocol this VL gives access to (Ethernet,
+ MPLS, ODU2, IPV4, IPV6, Pseudo-Wire).";
reference
"GS NFV IFA011: Section 7.1.7.3, ConnectivityType
information element.";
@@ -376,23 +370,30 @@ 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
- "A Cpd information element describes network
- connectivity to a compute resource or a VL.";
+ "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.";
reference
- "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ "GS NFC IFA014: Section 6.6.3.1 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";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
-
- leaf-list layer-protocol {
- default Ethernet;
+ leaf layer-protocol {
+ mandatory true;
type identityref {
base layer-protocol;
}
@@ -401,9 +402,8 @@ submodule etsi-nfv-common {
corresponding to the CPD support for connectivity purposes
(e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.).";
reference
- "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
-
leaf role {
type identityref {
base cp-role;
@@ -415,9 +415,8 @@ submodule etsi-nfv-common {
a tree flow pattern within the NS will have legal cpRoles
of ROOT and LEAF.";
reference
- "GS NFV IFA011: Section 7.1.6.3 Cpd information element";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
-
leaf description {
type string;
description
@@ -425,140 +424,8 @@ submodule etsi-nfv-common {
connection point (e.g. connection point for control plane
traffic).";
reference
- "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";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
-
leaf trunk-mode {
type boolean;
description
@@ -569,117 +436,7 @@ submodule etsi-nfv-common {
is not configured for the Cp i.e. It is equivalent to
Boolean value 'false'.";
reference
- "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.";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
}
}
diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang
index 82d649ec87a7773c7ffbacd9793b27b0ccbb2f50..a75279e57de89e8678340557546d287ea88b8223 100644
--- a/src/yang/etsi-nfv-ns.yang
+++ b/src/yang/etsi-nfv-ns.yang
@@ -4,21 +4,24 @@ submodule etsi-nfv-ns {
prefix nfv;
}
- include etsi-nfv-common;
+ import etsi-nfv-common {
+ prefix common;
+ }
+
include etsi-nfv-vnf;
include etsi-nfv-pnf;
description
"Models for NS according to ETSI GS NFV-IFA 014.";
- revision 2019-03-18 {
+ revision 2017-01-20 {
description
"Initial revision
Common data structure to support NSD according to:
- ETSI GS NFV-IFA 014 Ed261v252";
+ ETSI GS NFV-IFA 011 Ed251v243";
reference
- "ETSI GS NFV-IFA 014 Ed261v252";
+ "ETSI GS NFV-IFA 011 Ed251v243";
}
grouping resource-handle {
@@ -130,7 +133,7 @@ submodule etsi-nfv-ns {
description
"Identifier of this Cpd information element.";
reference
- "GS NFV IFA014: Section 6.6.3.1 Cpd information element";
+ "GS NFC IFA014: Section 6.6.3.1 Cpd information element";
}
leaf address-assignment {
@@ -245,7 +248,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses connectivity-type;
+ uses common:connectivity-type;
list df {
key "id";
@@ -269,7 +272,6 @@ submodule etsi-nfv-ns {
}
container qos {
- presence "VL QoS parameters";
description
"The QoS information element specifies quality of
service parameters applicable to a VL.";
@@ -362,7 +364,7 @@ submodule etsi-nfv-ns {
"GS NFV IFA014: Section 6.5.2.2 NsVirtualLinkDesc
information element";
}
- uses security-parameters;
+ uses common:security-parameters;
}
list vnffgd {
@@ -483,7 +485,7 @@ submodule etsi-nfv-ns {
}
container ns {
leaf nsd-id {
- must ". = deref(../../nested-ns-profile-id)/../nsd-id" {
+ must ". = deref(../../ns-profile-id)/../nsd-id" {
}
type leafref {
@@ -743,7 +745,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
- default 1;
+ mandatory true;
type uint16;
description
"Minimum number of instances of the VNF based on this
@@ -754,7 +756,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
- default 1;
+ mandatory true;
type uint16;
description
"Maximum number of instances of the VNF based on this
@@ -764,7 +766,7 @@ submodule etsi-nfv-ns {
element";
}
- uses local-affinity-or-anti-affinity-rule;
+ uses common:local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -930,7 +932,7 @@ submodule etsi-nfv-ns {
information element";
}
- uses local-affinity-or-anti-affinity-rule;
+ uses common:local-affinity-or-anti-affinity-rule;
list affinity-or-anti-affinity-group {
key "id";
@@ -957,7 +959,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses link-bitrate-requirements;
+ uses common:link-bitrate-requirements;
}
container min-bitrate-requirements {
description
@@ -966,7 +968,7 @@ submodule etsi-nfv-ns {
reference
"GS NFV IFA014: Section 6.3.4.2 VirtualLinkProfile
information element";
- uses link-bitrate-requirements;
+ uses common:link-bitrate-requirements;
}
}
@@ -1046,7 +1048,7 @@ submodule etsi-nfv-ns {
leaf affinity-type {
mandatory true;
- type affinity-type;
+ type common:affinity-type;
description
"Specifies the type of relationship that the members of
the group have: 'affinity' or 'anti-affinity.'";
@@ -1057,7 +1059,7 @@ submodule etsi-nfv-ns {
leaf affinity-scope {
mandatory true;
- type affinity-scope;
+ type common:affinity-scope;
description
"Specifies the scope of the affinity or anti-affinity
relationship e.g. a NFVI node, an NFVI PoP, etc.";
@@ -1121,7 +1123,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- default 1;
+ mandatory true;
type uint32;
description
"Specifies the number of VNF instances required for
@@ -1154,7 +1156,7 @@ submodule etsi-nfv-ns {
VirtualLinkToLevelMapping information element";
}
- uses link-bitrate-requirements;
+ uses common:link-bitrate-requirements;
}
list ns-to-level-mapping {
@@ -1181,7 +1183,7 @@ submodule etsi-nfv-ns {
}
leaf number-of-instances {
- default 1;
+ mandatory true;
type uint32;
description
"Specifies the number of nested NS instances required
@@ -1287,7 +1289,7 @@ submodule etsi-nfv-ns {
}
leaf min-number-of-instances {
type uint16;
- default 1;
+ mandatory true;
description
"Minimum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
@@ -1298,7 +1300,7 @@ submodule etsi-nfv-ns {
}
leaf max-number-of-instances {
type uint16;
- default 1;
+ mandatory true;
description
"Maximum number of nested NS instances based on the
referenced NSD that is permitted to exist for this
@@ -1482,7 +1484,7 @@ submodule etsi-nfv-ns {
}
}
}
- uses security-parameters;
+ uses common:security-parameters;
}
}
}
diff --git a/src/yang/etsi-nfv-pnf.yang b/src/yang/etsi-nfv-pnf.yang
index ae7ef81fd3c4659ed7555fcc33202a7355113396..1bfad35ef488ebf8b45ed1a91740501bb7ce3aa9 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 2019-03-18 {
+ revision 2018-06-25 {
description
"Initial revision.
Common data structure to support VNFD according to:
- ETSI GS NFV-IFA 014 Ed261v252";
+ ETSI GS NFV-IFA 014 Ed251v244";
reference
- "ETSI GS NFV-IFA 014 Ed261v252";
+ "ETSI GS NFV-IFA 014 Ed251v244";
}
grouping pnfd {
@@ -111,7 +111,6 @@ 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 f1bf194145e07b58db5151c3c074d65280f71cb3..4128dc1e0349eee1f46904cdf65b2deffb3b7028 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 2019-03-18 {
+ revision 2018-06-19 {
description
"Initial revision.
Common data structure to support VNFD according to:
- VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
+ VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
reference
- "ETSI GS NFV-IFA 011 Ed261v254";
+ "ETSI GS NFV-IFA 011 Ed251v243";
}
grouping virtual-network-interface-requirements {
@@ -54,7 +54,7 @@ submodule etsi-nfv-vnf {
VirtualNetworkInterfaceRequirements information element";
}
leaf support-mandatory {
- default "false";
+ mandatory true;
type boolean;
description
"Indicates whether fulfilling the constraint is
@@ -99,6 +99,161 @@ 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";
@@ -281,7 +436,8 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.4, VduCpd information
element.";
}
- uses cpd;
+
+ uses vnf-cpd;
}
leaf virtual-compute-desc {
type leafref {
@@ -546,7 +702,7 @@ submodule etsi-nfv-vnf {
range "0..max";
}
units "Gb";
- default 1;
+ mandatory true;
description
"Amount of virtual memory in MB.";
reference
@@ -618,7 +774,7 @@ submodule etsi-nfv-vnf {
type uint16 {
range "1..max";
}
- default 1;
+ mandatory true;
description
"Number of virtual CPUs.";
reference
@@ -665,7 +821,7 @@ submodule etsi-nfv-vnf {
container virtual-cpu-pinning {
presence "Set to specify CPU pinning.";
leaf cpu-pinning-policy {
- default "dynamic";
+ mandatory true;
type enumeration {
enum "static";
enum "dynamic";
@@ -711,7 +867,7 @@ submodule etsi-nfv-vnf {
enum "swap";
enum "ephemeral";
}
- default "root";
+ mandatory true;
description
"Type of virtualised storage resource (e.g. volume,
object).";
@@ -722,7 +878,7 @@ submodule etsi-nfv-vnf {
leaf size-of-storage {
type uint64;
units "Gb";
- default 0;
+ mandatory true;
description
"Size of virtualised storage resource (e.g. size of
volume, in Gb)";
@@ -800,26 +956,8 @@ submodule etsi-nfv-vnf {
"GS NFV IFA011: Section 7.1.6.5 SwImageDesc
information element.";
}
- 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.";
- }
+ leaf checksum {
+ type string;
description
"The checksum of the software image file.";
reference
@@ -827,7 +965,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf container-format {
- default "bare";
+ mandatory true;
type enumeration {
enum "aki" {
description
@@ -867,7 +1005,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf disk-format {
- default "qcow2";
+ mandatory true;
type enumeration {
enum "aki" {
description
@@ -965,7 +1103,7 @@ submodule etsi-nfv-vnf {
information element.";
}
leaf image {
- default ".";
+ mandatory true;
type inet:uri;
description
"This is a reference to the actual software image.
@@ -1032,7 +1170,6 @@ submodule etsi-nfv-vnf {
information element.";
}
container qos {
- presence "VL QoS parameters";
description
"QoS of the VL.";
reference
@@ -1110,8 +1247,6 @@ submodule etsi-nfv-vnf {
}
}
- uses security-group-rule;
-
list ext-cpd {
key "id";
min-elements 1;
@@ -1140,14 +1275,12 @@ submodule etsi-nfv-vnf {
}
}
leaf cpd {
- type leafref {
- path "deref(../vdu-id)/../int-cpd/id";
- }
+ path "deref(../vdu-id)/../int-cpd/id";
}
}
}
uses virtual-network-interface-requirements;
- uses cpd;
+ uses vnf-cpd;
}
list df {
@@ -1195,7 +1328,7 @@ submodule etsi-nfv-vnf {
}
leaf min-number-of-instances {
type uint16;
- default 1;
+ mandatory true;
description
"Minimum number of instances of the VNFC based on this
VDU that is permitted to exist for this flavour.";
@@ -1205,7 +1338,7 @@ submodule etsi-nfv-vnf {
}
leaf max-number-of-instances {
type uint16;
- default 1;
+ mandatory true;
must ". >= ../nfv:min-number-of-instances";
reference
"GS NFV IFA011: Section 7.1.8.3, VduProfile information
@@ -1366,7 +1499,7 @@ submodule etsi-nfv-vnf {
must ". >= ../../../../nfv:df/" +
"nfv:vdu-profile[id=current()/../nfv:id]/" +
"nfv:min-number-of-instances";
- default 1;
+ mandatory true;
description
"Number of instances of VNFC based on this VDU to
deploy for this level.";
@@ -1663,118 +1796,6 @@ 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";
@@ -2043,23 +2064,7 @@ submodule etsi-nfv-vnf {
leaf-list extension {
type string;
description
- "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.";
+ "'Extension' attributes of VnfInfo that are writeable.";
reference
"GS NFV IFA011: Section 7.1.14 VnfInfoModifiableAttributes
information element";
@@ -2067,22 +2072,7 @@ submodule etsi-nfv-vnf {
leaf-list metadata {
type string;
description
- "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.";
+ "'Metadata' attributes of VnfInfo that are writeable.";
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 96d0db1afe03b81d01fd56e05d7021246ca3dcea..a209fc30f22d3c0a1cbe136c512ca4ec9be6ac12 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 2019-03-18 {
+ revision 2018-06-13 {
description
"Initial revision.
- NSD and PNFD according to ETSI GS NFV-IFA 014 Ed261v252
- VNFD according to ETSI GS NFV-IFA 011 Ed261v254";
+ NSD and PNFD according to ETSI GS NFV-IFA 014 Ed251v244
+ VNFD according to ETSI GS NFV-IFA 011 Ed251v243";
}
container nfv {