From a1816e931d7a12597d30f63dadaabcb280ee6e71 Mon Sep 17 00:00:00 2001 From: Mahesh Jethanandani Date: Sun, 24 Jun 2018 20:36:04 -0700 Subject: [PATCH] Contribution NFVSOL(18)000330 Patch to address comments received during NFVSOL#68 Change-Id: I28eff3e9c305fe6961c204727dc9bb3158edfbbc --- src/yang/etsi-nfv-common.yang | 178 ++++++++++++++++++++++++++++++++++ src/yang/etsi-nfv-ns.yang | 25 +---- src/yang/etsi-nfv-pnf.yang | 120 +++++++++++++++++++++++ src/yang/etsi-nfv-vnf.yang | 156 +---------------------------- src/yang/etsi-nfv.yang | 3 +- 5 files changed, 307 insertions(+), 175 deletions(-) create mode 100644 src/yang/etsi-nfv-pnf.yang diff --git a/src/yang/etsi-nfv-common.yang b/src/yang/etsi-nfv-common.yang index c566196..883aae3 100644 --- a/src/yang/etsi-nfv-common.yang +++ b/src/yang/etsi-nfv-common.yang @@ -339,4 +339,182 @@ module etsi-nfv-common { information element."; } } + + grouping security-parameters { + leaf signature { + type string; + description + "Provides the signature of the signed part of the + descriptor."; + reference + "GS NFV IFA014: Section 6.2.5, SecurityParameters + information element."; + } + leaf algorithm { + type string; + description + "Identifies the algorithm used to compute the signature."; + reference + "GS NFV IFA014: Section 6.2.5, SecurityParameters + information element."; + } + leaf certificate { + type string; + description + "Provides a certificate or a reference to a certificate to + validate the signature."; + reference + "GS NFV IFA014: Section 6.2.5, SecurityParameters + information element."; + } + } + 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."; + } + } } diff --git a/src/yang/etsi-nfv-ns.yang b/src/yang/etsi-nfv-ns.yang index 1367c47..161310a 100644 --- a/src/yang/etsi-nfv-ns.yang +++ b/src/yang/etsi-nfv-ns.yang @@ -20,20 +20,6 @@ submodule etsi-nfv-ns { "ETSI GS NFV-IFA 011 Ed251v243"; } - grouping security-parameters { - container security { - leaf signature { - type string; - } - leaf algorithm { - type string; - } - leaf certificate { - type string; - } - } - } - grouping resource-handle { leaf vim-id { type string; @@ -92,13 +78,10 @@ submodule etsi-nfv-ns { descriptor consists of."; leaf vnfd { type leafref { - path "/nfv/vnfd/id"; + path "../../../vnfd/id"; } } } - leaf-list pnfd { - type string; - } list service-access-point-descriptor { key "id"; min-elements 1; @@ -226,7 +209,7 @@ submodule etsi-nfv-ns { leaf description { type string; } - uses security-parameters; + uses common:security-parameters; } // vnffgd skipped since not fully specified by the spec list monitored-info { @@ -373,7 +356,7 @@ submodule etsi-nfv-ns { key "pnfd"; leaf pnfd { type leafref { - path "../../../pnfd"; + path "../../../../pnfd/id"; } } // no virtual-link-connectivity as we don't have PNFD modelled. @@ -589,7 +572,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 new file mode 100644 index 0000000..a447d38 --- /dev/null +++ b/src/yang/etsi-nfv-pnf.yang @@ -0,0 +1,120 @@ +submodule etsi-nfv-pnf { + belongs-to etsi-nfv { + prefix nfv; + } + + /* + * Import + */ + import etsi-nfv-common { + prefix common; + } + + /* + * Include + */ + include etsi-nfv-ns; + + description + "Models for PNFD according to GS NFV-IFA 014."; + + revision 2018-06-25 { + description + "Initial revision. + + Common data structure to support VNFD according to: + ETSI GS NFV-IFA 014 Ed251v244"; + + reference + "ETSI GS NFV-IFA 014 Ed251v244"; + } + + grouping pnfd { + description + "The Pnfd information element is a deployment template + enabling on-boarding PNFs and referencing them from an NSD. + It focuses on connectivity aspects only"; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + + container pnfd { + leaf id { + type string; + description + "Identifier of this Pnfd information element. It uniquely + identifies the PNFD."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf function-description { + type string; + description + "Describes the PNF function."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf provider { + type string; + description + "Identifies the provider of the PNFD."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf version { + type string; + mandatory true; + description + "Identifies the version of the PNFD."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf invariant-id { + type string; + description + "Identifies a PNFD in a version independent manner. This + attribute is invariant across versions of PNFD."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf name { + type string; + description + "Provides the human readable name of the PNFD."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + list ext-cp { + key "id"; + uses common:cpd; + description + "Specifies the characteristics of one or more connection + points where to connect the PNF to a VL."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + list security { + key "signature"; + uses common:security-parameters; + description + "Provides a signature to prevent tampering. + Editor's Note: While IFA014 does specify that the PNFD + includes a security parameter. SOL001 does not have one. + We need to harmonize SOL001 & SOL006 on this point."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + leaf geographical-location-info { + type string; + description + "It provides information about the geographical location + (e.g. geographic coordinates or address of the building, + etc.) of the PNF. The cardinality 0 is used when the + location is unknown. + Editor's Note: The type is TBD in SOL001. We need to make + a common SOL001/SOL006 decision."; + reference + "GS NFV-IFA014: Section 6.6.2, Pnfd information element"; + } + } + } +} diff --git a/src/yang/etsi-nfv-vnf.yang b/src/yang/etsi-nfv-vnf.yang index 0a35e56..a8e21ee 100644 --- a/src/yang/etsi-nfv-vnf.yang +++ b/src/yang/etsi-nfv-vnf.yang @@ -28,156 +28,6 @@ submodule etsi-nfv-vnf { "ETSI GS NFV-IFA 011 Ed251v243"; } - 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 "../nfv:address-type='mac-address'"; - } - container l3-address-data { - when "../nfv: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 virtual-network-interface-requirements { list virtual-network-interface-requirement { key "name"; @@ -444,7 +294,7 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.6.4, VduCpd information element."; } - uses cpd; + uses common:cpd; } leaf virtual-compute-desc { type leafref { @@ -1221,7 +1071,7 @@ submodule etsi-nfv-vnf { ext-CP to the VDU's CP. */ uses virtual-network-interface-requirements; - uses cpd; + uses common:cpd; } list deployment-flavor { @@ -1894,7 +1744,7 @@ submodule etsi-nfv-vnf { "GS NFV IFA011: Section 7.1.2 VNFD information element"; leaf event { - type common:lifecycle-management-script-event; + type common:internal-lifecycle-management-script-event; description "Describes VNF lifecycle event(s) or an external stimulus detected on a VNFM reference point."; diff --git a/src/yang/etsi-nfv.yang b/src/yang/etsi-nfv.yang index 88f859b..2fc5960 100644 --- a/src/yang/etsi-nfv.yang +++ b/src/yang/etsi-nfv.yang @@ -6,6 +6,7 @@ module etsi-nfv { prefix common; } include etsi-nfv-vnf; + include etsi-nfv-pnf; include etsi-nfv-ns; organization @@ -24,6 +25,6 @@ module etsi-nfv { container nfv { uses vnfd; uses nsd; - container pnfd {} + uses pnfd; } // nfv } -- GitLab