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 {