Model changes for VNF access point support
Merging changes by: Rajesh Velandy <rajesh.velandy@riftio.com>
Signed-off-by: Philip Joseph <philip.joseph@riftio.com>
diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang
index ec3d583..46cad20 100644
--- a/models/plugins/yang/mano-types.yang
+++ b/models/plugins/yang/mano-types.yang
@@ -116,6 +116,22 @@
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 aa55f34..467be6d 100644
--- a/models/plugins/yang/nsd.yang
+++ b/models/plugins/yang/nsd.yang
@@ -317,6 +317,46 @@
}
}
+ 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 dab7499..1538341 100644
--- a/models/plugins/yang/vnfd.yang
+++ b/models/plugins/yang/vnfd.yang
@@ -115,6 +115,103 @@
}
}
+ 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";
+ }
+ }
+ }
+ }
+ }
+
grouping vnfd-descriptor {
leaf id {
description "Identifier for the VNFD.";
@@ -509,7 +606,9 @@
key "id";
uses vnfd-descriptor;
- }
+
+ uses vnf-access-point;
+ }
}
}