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 {