Loading src/yang/etsi-nfv-common.yang +36 −114 Original line number Original line Diff line number Diff line module etsi-nfv-common { module etsi-nfv-common { namespace "urn:etsi:params:xml:ns:yang:etsi-nfv-common"; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv-common"; yang-version 1.1; prefix common; prefix common; description description Loading Loading @@ -368,18 +369,28 @@ module etsi-nfv-common { information element."; information element."; } } } } // 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 { grouping cpd { description description "A Cpd information element describes network connectivity to a "The Cpd information element specifies the characteristics of compute resource or a VL."; 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 reference "GS NFC IFA011: Section 7.1.6.3 Cpd Information Element"; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; leaf id { leaf id { type string; type string; description description "Identifier of this Cpd information element."; "Identifier of this Cpd information element."; reference reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; } } leaf layer-protocol { leaf layer-protocol { mandatory true; mandatory true; Loading @@ -387,134 +398,45 @@ module etsi-nfv-common { base common:layer-protocol; base common:layer-protocol; } } description description "Identifies which protocol the CP uses for connectivity "Identifies a protocol that the connection points purposes (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, corresponding to the CPD support for connectivity purposes etc.)."; (e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference 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 { leaf role { type identityref { type identityref { base common:cp-role; base common:cp-role; } } description description "Identifies the role of the port in the context of the "Identifies the role of the connection points traffic flow patterns in the VNF or parent NS. For example a corresponding to the CPD in the context of the traffic VNF with a tree flow pattern within the VNF will have legal flow patterns in the VNF, PNF or NS. For example an NS with cpRoles of ROOT and LEAF."; a tree flow pattern within the NS will have legal cpRoles of ROOT and LEAF."; reference 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 { leaf description { type string; type string; description description "Human readable description of the connection point"; "Provides human-readable information on the purpose of the reference connection point (e.g. connection point for control plane "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; traffic)."; } 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 common: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 common: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 reference "GS NFV IFA011: Section 7.1.3.3, AddressData information "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; 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 { leaf trunk-mode { type boolean; type boolean; description description "Information about whether the CP instantiated from this CPD "Information about whether the Cp instantiated from this CPD is in Trunk mode (802.1Q or other)."; is in Trunk mode (802.1Q or other). When operating in 'trunk mode', the Cp is capable of carrying traffic for several VLANs. A cardinality of 0 implies that trunkMode is not configured for the Cp i.e. It is equivalent to Boolean value 'false'."; reference reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; } } } } } } src/yang/etsi-nfv-ns.yang +1073 −161 File changed.Preview size limit exceeded, changes collapsed. Show changes src/yang/etsi-nfv-pnf.yang +5 −7 Original line number Original line Diff line number Diff line submodule etsi-nfv-pnf { submodule etsi-nfv-pnf { yang-version 1.1; belongs-to etsi-nfv { belongs-to etsi-nfv { prefix nfv; prefix nfv; } } Loading @@ -10,11 +11,6 @@ submodule etsi-nfv-pnf { prefix common; prefix common; } } /* * Include */ include etsi-nfv-ns; description description "Models for PNFD according to GS NFV-IFA 014."; "Models for PNFD according to GS NFV-IFA 014."; Loading @@ -37,7 +33,9 @@ submodule etsi-nfv-pnf { reference reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; container pnfd { list pnfd { key "id"; leaf id { leaf id { type string; type string; description description Loading Loading @@ -83,7 +81,7 @@ submodule etsi-nfv-pnf { reference reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; } } list ext-cp { list ext-cpd { key "id"; key "id"; uses common:cpd; uses common:cpd; description description Loading src/yang/etsi-nfv-vnf.yang +323 −29 Original line number Original line Diff line number Diff line submodule etsi-nfv-vnf { submodule etsi-nfv-vnf { yang-version 1.1; belongs-to etsi-nfv { belongs-to etsi-nfv { prefix nfv; prefix nfv; } } Loading @@ -12,7 +13,6 @@ submodule etsi-nfv-vnf { import etsi-nfv-common { import etsi-nfv-common { prefix common; prefix common; } } include etsi-nfv-ns; description description "Models for VNFD according to GS NFV-IFA 011."; "Models for VNFD according to GS NFV-IFA 011."; Loading Loading @@ -101,6 +101,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 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 common: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 common: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 common: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 common: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 { grouping vnfd { list vnfd { list vnfd { key "id"; key "id"; Loading Loading @@ -241,6 +396,7 @@ submodule etsi-nfv-vnf { an external connection point."; an external connection point."; reference reference "GS NFV IFA011: Section 7.1.6.2, Vdu information element"; "GS NFV IFA011: Section 7.1.6.2, Vdu information element"; choice cp-connection { choice cp-connection { mandatory true; mandatory true; description description Loading Loading @@ -294,13 +450,19 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; element."; } } uses common:cpd; uses cpd; } } leaf virtual-compute-desc { leaf virtual-compute-desc { type leafref { type leafref { path "../../nfv:virtual-compute-descriptor/" + path "../../nfv:virtual-compute-descriptor/" + "nfv:id"; "nfv:id"; } } must "../../nfv:virtual-compute-descriptor[id=current()]/" + "nfv:virtual-memory/size >=" + "../../nfv:sw-image-desc[id=current()/" + "../sw-image-desc]/min-ram" { } description description "Describes CPU, Memory and acceleration requirements of "Describes CPU, Memory and acceleration requirements of the Virtualisation Container realizing this VDU."; the Virtualisation Container realizing this VDU."; Loading Loading @@ -553,7 +715,6 @@ submodule etsi-nfv-vnf { fraction-digits 1; fraction-digits 1; range "0..max"; range "0..max"; } } must ". >= ../../../sw-image-desc[id=current()]/min-ram"; units "Gb"; units "Gb"; mandatory true; mandatory true; description description Loading Loading @@ -729,8 +890,6 @@ submodule etsi-nfv-vnf { related to Virtual Storage."; related to Virtual Storage."; } } leaf size-of-storage { leaf size-of-storage { must ". >= ../../sw-image-desc[id=current()]/min-disk"; type uint64; type uint64; units "Gb"; units "Gb"; mandatory true; mandatory true; Loading Loading @@ -768,6 +927,9 @@ submodule etsi-nfv-vnf { type leafref { type leafref { path "../../sw-image-desc/id"; path "../../sw-image-desc/id"; } } must "../nfv:size-of-storage >=" + "../../nfv:sw-image-desc[id=current()]/min-disk" { } description description "Software image to be loaded on the VirtualStorage "Software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc."; resource created based on this VirtualStorageDesc."; Loading @@ -777,7 +939,8 @@ submodule etsi-nfv-vnf { } } } } container sw-image-desc { list sw-image-desc { key "id"; description description "Defines descriptors of software images to be used by the "Defines descriptors of software images to be used by the VNF."; VNF."; Loading Loading @@ -916,6 +1079,7 @@ submodule etsi-nfv-vnf { leaf min-disk { leaf min-disk { type uint64; type uint64; units "Gb"; units "Gb"; default 0; description description "The minimal disk size requirement for this software "The minimal disk size requirement for this software image. The value of the 'size of storage' attribute image. The value of the 'size of storage' attribute Loading @@ -932,6 +1096,7 @@ submodule etsi-nfv-vnf { range "0..max"; range "0..max"; } } units "Gb"; units "Gb"; default 0; description description "The minimal RAM requirement for this software image. "The minimal RAM requirement for this software image. The value of the 'size' attribute of The value of the 'size' attribute of Loading Loading @@ -1122,10 +1287,10 @@ submodule etsi-nfv-vnf { ext-CP to the VDU's CP. ext-CP to the VDU's CP. */ */ uses virtual-network-interface-requirements; uses virtual-network-interface-requirements; uses common:cpd; uses cpd; } } list deployment-flavor { list df { must "nfv:default-instantiation-level or " + must "nfv:default-instantiation-level or " + "count(nfv:instantiation-level) = 1"; "count(nfv:instantiation-level) = 1"; key "id"; key "id"; Loading Loading @@ -1335,11 +1500,11 @@ submodule etsi-nfv-vnf { } } leaf number-of-instances { leaf number-of-instances { type uint16; type uint16; must ". <= ../../../../nfv:deployment-flavor/" + must ". <= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()]/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:max-number-of-instances"; "nfv:max-number-of-instances"; must ". >= ../../../../nfv:deployment-flavor/" + must ". >= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()]/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:min-number-of-instances"; "nfv:min-number-of-instances"; mandatory true; mandatory true; description description Loading Loading @@ -1694,31 +1859,160 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; } } leaf associated-group { leaf max-scale-level { type leafref { type uint32 { path "../../../nfv:element-group/nfv:id"; range "1..max"; } } description description "Reference to the group of Vnfd elements defining this "The maximum scaleLevel for total number of scaling aspect. If present, scaling for this aspect is limited steps that can be applied w.r.t. this aspect. The to the elements of the group, but there is no value of this attribute corresponds to the number of assumption that all the elements of the groups will be scaling steps can be applied to this aspect when increased at each step."; scaling it from the minimum scale level (i.e. 0) to the maximum scale level defined by this attribute."; reference reference "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; } } leaf max-scale-level { container aspect-delta-details { list deltas { key "id"; min-elements 1; leaf id { type string; description "Identifier of this scaling delta."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } list vdu-delta { key "id"; leaf id { type leafref { path "/nfv/vnfd/vdu/id"; } description "Uniquely identifies a VDU."; reference "GS NFV IFA011: Section 7.1.8.9 VduLevel information element"; } leaf number-of-instances { type uint32 { type uint32 { range "1..max"; range "0..max"; } } description description "The maximum scaleLevel for total number of scaling "Number of instances of VNFC based on this VDU to steps that can be applied w.r.t. this aspect. The value deploy for an instantiation level or for a of this attribute corresponds to the number of scaling scaling delta. Shall be zero or greater."; steps can be applied to this aspect when scaling it reference from the minimum scale level (i.e. 0) to the maximum "GS NFV IFA011: Section 7.1.8.9 VduLevel scale level defined by this attribute."; information element"; } description "The number of VNFC instances based on particular VDUs to be created or removed."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } list virtual-link-bit-rate-delta { key "id"; leaf id { type string; description "Uniquely identifies a VnfVirtualLinkDesc."; reference "GS NFV IFA011: Section 7.1.10.5 VirtualLinkBitRateLevel information element"; } container bit-rate-requirements { leaf root { type uint32; units bits/sec; mandatory true; description "Throughput requirement of the link (e.g. bitrate of E-Line, root bitrate of E-Tree, aggregate capacity of E-LAN)."; reference "GS NFV IFA011: Section 7.1.8.6 LinkBitrateRequirements information element"; } leaf leaf { type uint32; units bits/sec; description "Throughput requirement of leaf connections to the link when applicable to the connectivity type (e.g. for E-Tree and E-LAN branches)."; reference "GS NFV IFA011: Section 7.1.8.6 LinkBitrateRequirements information element"; } description "Bitrate requirements for an instantiation level or bitrate delta for a scaling step."; reference "GS NFV IFA011: Section 7.1.10.5 VirtualLinkBitRateLevel information element"; } description "The bitrate to be added or removed to virtual links created from particular virtual link descriptors."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } description "Declares different scaling deltas, each of which is applied for one or more scaling steps of this aspect."; reference "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails information element"; } leaf step-deltas { type leafref { path "../deltas/id"; } description "Identifiers of the individual scaling deltas to be applied for the subsequent scaling steps of this aspect. The first entry in the array shall correspond to the first scaling step (between scale levels 0 to 1) and the last entry in the array shall correspond to the last scaling step (between maxScaleLevel-1 and maxScaleLevel). Each referenced scaling delta shall be declared in the 'deltas' attribute."; reference "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails information element"; } description "A specification of the deltas in terms of number of instances of VNFCs and virtual link bit rates that correspond to the scaling steps of this aspect. A cardinality of zero indicates that this mapping has to be specified in a lifecycle management script or be otherwise known to the VNFM. The information in this attribute, if provided, shall be consistent with the information provided in the 'InstantiationLevel' information element. If this attribute is provided, it shall be provided for all scaling aspects."; reference reference "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; Loading src/yang/etsi-nfv.yang +2 −4 Original line number Original line Diff line number Diff line module etsi-nfv { module etsi-nfv { yang-version 1.1; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv"; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv"; prefix nfv; prefix nfv; import etsi-nfv-common { prefix common; } include etsi-nfv-vnf; include etsi-nfv-vnf; include etsi-nfv-pnf; include etsi-nfv-pnf; include etsi-nfv-ns; include etsi-nfv-ns; Loading @@ -26,5 +24,5 @@ module etsi-nfv { uses vnfd; uses vnfd; uses nsd; uses nsd; uses pnfd; uses pnfd; } // nfv } } } Loading
src/yang/etsi-nfv-common.yang +36 −114 Original line number Original line Diff line number Diff line module etsi-nfv-common { module etsi-nfv-common { namespace "urn:etsi:params:xml:ns:yang:etsi-nfv-common"; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv-common"; yang-version 1.1; prefix common; prefix common; description description Loading Loading @@ -368,18 +369,28 @@ module etsi-nfv-common { information element."; information element."; } } } } // 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 { grouping cpd { description description "A Cpd information element describes network connectivity to a "The Cpd information element specifies the characteristics of compute resource or a VL."; 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 reference "GS NFC IFA011: Section 7.1.6.3 Cpd Information Element"; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; leaf id { leaf id { type string; type string; description description "Identifier of this Cpd information element."; "Identifier of this Cpd information element."; reference reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; } } leaf layer-protocol { leaf layer-protocol { mandatory true; mandatory true; Loading @@ -387,134 +398,45 @@ module etsi-nfv-common { base common:layer-protocol; base common:layer-protocol; } } description description "Identifies which protocol the CP uses for connectivity "Identifies a protocol that the connection points purposes (Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, corresponding to the CPD support for connectivity purposes etc.)."; (e.g. Ethernet, MPLS, ODU2, IPV4, IPV6, Pseudo-Wire, etc.)."; reference 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 { leaf role { type identityref { type identityref { base common:cp-role; base common:cp-role; } } description description "Identifies the role of the port in the context of the "Identifies the role of the connection points traffic flow patterns in the VNF or parent NS. For example a corresponding to the CPD in the context of the traffic VNF with a tree flow pattern within the VNF will have legal flow patterns in the VNF, PNF or NS. For example an NS with cpRoles of ROOT and LEAF."; a tree flow pattern within the NS will have legal cpRoles of ROOT and LEAF."; reference 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 { leaf description { type string; type string; description description "Human readable description of the connection point"; "Provides human-readable information on the purpose of the reference connection point (e.g. connection point for control plane "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; traffic)."; } 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 common: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 common: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 reference "GS NFV IFA011: Section 7.1.3.3, AddressData information "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; 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 { leaf trunk-mode { type boolean; type boolean; description description "Information about whether the CP instantiated from this CPD "Information about whether the Cp instantiated from this CPD is in Trunk mode (802.1Q or other)."; is in Trunk mode (802.1Q or other). When operating in 'trunk mode', the Cp is capable of carrying traffic for several VLANs. A cardinality of 0 implies that trunkMode is not configured for the Cp i.e. It is equivalent to Boolean value 'false'."; reference reference "GS NFV IFA011: Section 7.1.6.3, Cpd information element."; "GS NFC IFA014: Section 6.6.3.1 Cpd information element"; } } } } } }
src/yang/etsi-nfv-ns.yang +1073 −161 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/yang/etsi-nfv-pnf.yang +5 −7 Original line number Original line Diff line number Diff line submodule etsi-nfv-pnf { submodule etsi-nfv-pnf { yang-version 1.1; belongs-to etsi-nfv { belongs-to etsi-nfv { prefix nfv; prefix nfv; } } Loading @@ -10,11 +11,6 @@ submodule etsi-nfv-pnf { prefix common; prefix common; } } /* * Include */ include etsi-nfv-ns; description description "Models for PNFD according to GS NFV-IFA 014."; "Models for PNFD according to GS NFV-IFA 014."; Loading @@ -37,7 +33,9 @@ submodule etsi-nfv-pnf { reference reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; container pnfd { list pnfd { key "id"; leaf id { leaf id { type string; type string; description description Loading Loading @@ -83,7 +81,7 @@ submodule etsi-nfv-pnf { reference reference "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; } } list ext-cp { list ext-cpd { key "id"; key "id"; uses common:cpd; uses common:cpd; description description Loading
src/yang/etsi-nfv-vnf.yang +323 −29 Original line number Original line Diff line number Diff line submodule etsi-nfv-vnf { submodule etsi-nfv-vnf { yang-version 1.1; belongs-to etsi-nfv { belongs-to etsi-nfv { prefix nfv; prefix nfv; } } Loading @@ -12,7 +13,6 @@ submodule etsi-nfv-vnf { import etsi-nfv-common { import etsi-nfv-common { prefix common; prefix common; } } include etsi-nfv-ns; description description "Models for VNFD according to GS NFV-IFA 011."; "Models for VNFD according to GS NFV-IFA 011."; Loading Loading @@ -101,6 +101,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 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 common: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 common: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 common: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 common: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 { grouping vnfd { list vnfd { list vnfd { key "id"; key "id"; Loading Loading @@ -241,6 +396,7 @@ submodule etsi-nfv-vnf { an external connection point."; an external connection point."; reference reference "GS NFV IFA011: Section 7.1.6.2, Vdu information element"; "GS NFV IFA011: Section 7.1.6.2, Vdu information element"; choice cp-connection { choice cp-connection { mandatory true; mandatory true; description description Loading Loading @@ -294,13 +450,19 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; element."; } } uses common:cpd; uses cpd; } } leaf virtual-compute-desc { leaf virtual-compute-desc { type leafref { type leafref { path "../../nfv:virtual-compute-descriptor/" + path "../../nfv:virtual-compute-descriptor/" + "nfv:id"; "nfv:id"; } } must "../../nfv:virtual-compute-descriptor[id=current()]/" + "nfv:virtual-memory/size >=" + "../../nfv:sw-image-desc[id=current()/" + "../sw-image-desc]/min-ram" { } description description "Describes CPU, Memory and acceleration requirements of "Describes CPU, Memory and acceleration requirements of the Virtualisation Container realizing this VDU."; the Virtualisation Container realizing this VDU."; Loading Loading @@ -553,7 +715,6 @@ submodule etsi-nfv-vnf { fraction-digits 1; fraction-digits 1; range "0..max"; range "0..max"; } } must ". >= ../../../sw-image-desc[id=current()]/min-ram"; units "Gb"; units "Gb"; mandatory true; mandatory true; description description Loading Loading @@ -729,8 +890,6 @@ submodule etsi-nfv-vnf { related to Virtual Storage."; related to Virtual Storage."; } } leaf size-of-storage { leaf size-of-storage { must ". >= ../../sw-image-desc[id=current()]/min-disk"; type uint64; type uint64; units "Gb"; units "Gb"; mandatory true; mandatory true; Loading Loading @@ -768,6 +927,9 @@ submodule etsi-nfv-vnf { type leafref { type leafref { path "../../sw-image-desc/id"; path "../../sw-image-desc/id"; } } must "../nfv:size-of-storage >=" + "../../nfv:sw-image-desc[id=current()]/min-disk" { } description description "Software image to be loaded on the VirtualStorage "Software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc."; resource created based on this VirtualStorageDesc."; Loading @@ -777,7 +939,8 @@ submodule etsi-nfv-vnf { } } } } container sw-image-desc { list sw-image-desc { key "id"; description description "Defines descriptors of software images to be used by the "Defines descriptors of software images to be used by the VNF."; VNF."; Loading Loading @@ -916,6 +1079,7 @@ submodule etsi-nfv-vnf { leaf min-disk { leaf min-disk { type uint64; type uint64; units "Gb"; units "Gb"; default 0; description description "The minimal disk size requirement for this software "The minimal disk size requirement for this software image. The value of the 'size of storage' attribute image. The value of the 'size of storage' attribute Loading @@ -932,6 +1096,7 @@ submodule etsi-nfv-vnf { range "0..max"; range "0..max"; } } units "Gb"; units "Gb"; default 0; description description "The minimal RAM requirement for this software image. "The minimal RAM requirement for this software image. The value of the 'size' attribute of The value of the 'size' attribute of Loading Loading @@ -1122,10 +1287,10 @@ submodule etsi-nfv-vnf { ext-CP to the VDU's CP. ext-CP to the VDU's CP. */ */ uses virtual-network-interface-requirements; uses virtual-network-interface-requirements; uses common:cpd; uses cpd; } } list deployment-flavor { list df { must "nfv:default-instantiation-level or " + must "nfv:default-instantiation-level or " + "count(nfv:instantiation-level) = 1"; "count(nfv:instantiation-level) = 1"; key "id"; key "id"; Loading Loading @@ -1335,11 +1500,11 @@ submodule etsi-nfv-vnf { } } leaf number-of-instances { leaf number-of-instances { type uint16; type uint16; must ". <= ../../../../nfv:deployment-flavor/" + must ". <= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()]/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:max-number-of-instances"; "nfv:max-number-of-instances"; must ". >= ../../../../nfv:deployment-flavor/" + must ". >= ../../../../nfv:df/" + "nfv:vdu-profile[id=current()]/" + "nfv:vdu-profile[id=current()/../nfv:id]/" + "nfv:min-number-of-instances"; "nfv:min-number-of-instances"; mandatory true; mandatory true; description description Loading Loading @@ -1694,31 +1859,160 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; } } leaf associated-group { leaf max-scale-level { type leafref { type uint32 { path "../../../nfv:element-group/nfv:id"; range "1..max"; } } description description "Reference to the group of Vnfd elements defining this "The maximum scaleLevel for total number of scaling aspect. If present, scaling for this aspect is limited steps that can be applied w.r.t. this aspect. The to the elements of the group, but there is no value of this attribute corresponds to the number of assumption that all the elements of the groups will be scaling steps can be applied to this aspect when increased at each step."; scaling it from the minimum scale level (i.e. 0) to the maximum scale level defined by this attribute."; reference reference "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; } } leaf max-scale-level { container aspect-delta-details { list deltas { key "id"; min-elements 1; leaf id { type string; description "Identifier of this scaling delta."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } list vdu-delta { key "id"; leaf id { type leafref { path "/nfv/vnfd/vdu/id"; } description "Uniquely identifies a VDU."; reference "GS NFV IFA011: Section 7.1.8.9 VduLevel information element"; } leaf number-of-instances { type uint32 { type uint32 { range "1..max"; range "0..max"; } } description description "The maximum scaleLevel for total number of scaling "Number of instances of VNFC based on this VDU to steps that can be applied w.r.t. this aspect. The value deploy for an instantiation level or for a of this attribute corresponds to the number of scaling scaling delta. Shall be zero or greater."; steps can be applied to this aspect when scaling it reference from the minimum scale level (i.e. 0) to the maximum "GS NFV IFA011: Section 7.1.8.9 VduLevel scale level defined by this attribute."; information element"; } description "The number of VNFC instances based on particular VDUs to be created or removed."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } list virtual-link-bit-rate-delta { key "id"; leaf id { type string; description "Uniquely identifies a VnfVirtualLinkDesc."; reference "GS NFV IFA011: Section 7.1.10.5 VirtualLinkBitRateLevel information element"; } container bit-rate-requirements { leaf root { type uint32; units bits/sec; mandatory true; description "Throughput requirement of the link (e.g. bitrate of E-Line, root bitrate of E-Tree, aggregate capacity of E-LAN)."; reference "GS NFV IFA011: Section 7.1.8.6 LinkBitrateRequirements information element"; } leaf leaf { type uint32; units bits/sec; description "Throughput requirement of leaf connections to the link when applicable to the connectivity type (e.g. for E-Tree and E-LAN branches)."; reference "GS NFV IFA011: Section 7.1.8.6 LinkBitrateRequirements information element"; } description "Bitrate requirements for an instantiation level or bitrate delta for a scaling step."; reference "GS NFV IFA011: Section 7.1.10.5 VirtualLinkBitRateLevel information element"; } description "The bitrate to be added or removed to virtual links created from particular virtual link descriptors."; reference "GS NFV IFA011: Section 7.1.10.4 ScalingDelta information element"; } description "Declares different scaling deltas, each of which is applied for one or more scaling steps of this aspect."; reference "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails information element"; } leaf step-deltas { type leafref { path "../deltas/id"; } description "Identifiers of the individual scaling deltas to be applied for the subsequent scaling steps of this aspect. The first entry in the array shall correspond to the first scaling step (between scale levels 0 to 1) and the last entry in the array shall correspond to the last scaling step (between maxScaleLevel-1 and maxScaleLevel). Each referenced scaling delta shall be declared in the 'deltas' attribute."; reference "GS NFV IFA011: Section 7.1.10.3 AspectDeltaDetails information element"; } description "A specification of the deltas in terms of number of instances of VNFCs and virtual link bit rates that correspond to the scaling steps of this aspect. A cardinality of zero indicates that this mapping has to be specified in a lifecycle management script or be otherwise known to the VNFM. The information in this attribute, if provided, shall be consistent with the information provided in the 'InstantiationLevel' information element. If this attribute is provided, it shall be provided for all scaling aspects."; reference reference "GS NFV IFA011: Section 7.1.10.2 ScalingAspect "GS NFV IFA011: Section 7.1.10.2 ScalingAspect information element"; information element"; Loading
src/yang/etsi-nfv.yang +2 −4 Original line number Original line Diff line number Diff line module etsi-nfv { module etsi-nfv { yang-version 1.1; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv"; namespace "urn:etsi:params:xml:ns:yang:etsi-nfv"; prefix nfv; prefix nfv; import etsi-nfv-common { prefix common; } include etsi-nfv-vnf; include etsi-nfv-vnf; include etsi-nfv-pnf; include etsi-nfv-pnf; include etsi-nfv-ns; include etsi-nfv-ns; Loading @@ -26,5 +24,5 @@ module etsi-nfv { uses vnfd; uses vnfd; uses nsd; uses nsd; uses pnfd; uses pnfd; } // nfv } } }