From 8fd5c63969d6022e41decf4b4b81b18435de3305 Mon Sep 17 00:00:00 2001 From: Rajesh Velandy Date: Tue, 8 Nov 2016 04:45:12 +0000 Subject: [PATCH] Model changes for VNF access point support Signed-off-by: Rajesh Velandy --- models/plugins/yang/mano-types.yang | 16 +++++ models/plugins/yang/nsd.yang | 40 ++++++++++++ models/plugins/yang/vnfd.yang | 98 +++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+) diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang index e7c7d3d6..3411cb70 100644 --- a/models/plugins/yang/mano-types.yang +++ b/models/plugins/yang/mano-types.yang @@ -109,6 +109,22 @@ module mano-types Only applies to parameters with default values."; type boolean; } + leaf parameter-type { + description "Type of this parameter, whether this in IN or OUT"; + type enumeration { + enum OUT; + enum IN; + } + default "IN"; + } + leaf parameter-path { + description "A Leafref to the parameter path with the attribute selection. + At present only attribute ip-address() is supported. + For example, to get the ip address of VNF connection point + the xpath would look something along the following lines, + /vnfd-catalog/vnfd[id='x']/connection-point[name='cp']/ip-address()"; + type string; + } } diff --git a/models/plugins/yang/nsd.yang b/models/plugins/yang/nsd.yang index ac0987c9..f5e7b282 100644 --- a/models/plugins/yang/nsd.yang +++ b/models/plugins/yang/nsd.yang @@ -323,6 +323,46 @@ module nsd } } + list vnfap-map { + key "id"; + description "A mapping of VNF application point + capability/dependency within this network service"; + leaf id { + description "Identfier for VNF access point map"; + type string; + } + container capability { + leaf member-vnf-index-ref { + description "Reference to member-vnf within constituent-vnfds"; + type leafref { + path "../../../../constituent-vnfd/member-vnf-index"; + } + } + leaf capability-ref { + description "Reference to the capability with the capability of the VNF + with the specified member-vnf-index"; + type leafref { + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vnfap/vnfd:capability/vnfd:name"; + } + } + } + container dependency { + leaf member-vnf-index-ref { + description "Reference to member-vnf within constituent-vnfds"; + type leafref { + path "../../../../constituent-vnfd/member-vnf-index"; + } + } + leaf dependency-ref { + description "Reference to the dependency within the dependency of the VNF + with the specified member-vnf-index"; + type leafref { + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vnfap/vnfd:dependency/vnfd:name"; + } + } + } + } + // replicate for pnfd container here uses manotypes:provider-network; diff --git a/models/plugins/yang/vnfd.yang b/models/plugins/yang/vnfd.yang index 2cc43d3e..ebd56adb 100644 --- a/models/plugins/yang/vnfd.yang +++ b/models/plugins/yang/vnfd.yang @@ -115,6 +115,103 @@ module vnfd } } + grouping vnf-access-point { + list vnfap { + description "List of VNF access points"; + key "name"; + leaf name { + description "Name of the vnf access point"; + type string { + length 128; + } + } + leaf description { + description "A description of this VNF access point"; + type string; + } + list capability { + description "The List of capabilities of this VNF access point"; + key "name"; + leaf name { + description "Name of the capability"; + type string { + length 128; + } + } + leaf description { + description "A description of the capability"; + type string; + } + choice capability-location { + case location-path { + leaf xpath { + description "Location of this capaibility as an xpath. + This field points to an element within vnfd + with the xpath notation and additionally + provides the flexibility to choose attributes + within the instantiated version of this object. + For example, + /vnfd-catalog/vnfd[id='xyz']/connection-point[name='cp1']/ip_address() + refers to the ip address of the connection point with name 'cp1' + in VNFD with id 'xyz'."; + type string; + } + } + case location-primitive-ref { + leaf config-primitive-name-ref { + description "A leafref to configuration primitive. + This field contains a link to the config primitive + the output paramaters of which will satisfy this requirement."; + type leafref { + path "/vnfd:vnfd-catalog/vnfd/vnf-configuration/service-primitive/name"; + } + } + } + case user-input { + list user-input { + key "name"; + description "User input for this capability"; + leaf name { + description "Name of this input"; + type string; + } + leaf value { + description "Value of this input"; + type string; + } + } + } + } + } + list dependency { + description "The List of depenencies of this VNF access point"; + key "name"; + leaf name { + description "Name of this VNF access point"; + type string { + length 128; + } + } + leaf mandatory { + description "Is this dependcy mandatory for this dependency"; + type boolean; + } + leaf description { + description "A description of the dependency"; + type string; + } + leaf config-primitive-name-ref { + description "A leafref to configuration primitive. + This field contains a link to the config primitive + the input paramaters of which will satisfy this requirement."; + type leafref { + path "/vnfd:vnfd-catalog/vnfd/vnf-configuration/service-primitive/name"; + } + } + } + } + } + container vnfd-catalog { description @@ -512,6 +609,7 @@ module vnfd } } } + uses vnf-access-point; } } } -- 2.25.1