--- /dev/null
+
+/*
+ *
+ * Copyright 2016-2017 RIFT.IO Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ */
+
+module rw-project-vnfd
+{
+ namespace "http://riftio.com/ns/riftware-1.0/rw-project-vnfd";
+ prefix "rw-project-vnfd";
+
+ import project-vnfd {
+ prefix "project-vnfd";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import rw-vnfd-base {
+ prefix "rw-vnfd-base";
+ }
+
+ import vnfd {
+ prefix "vnfd";
+ }
+
+ import vnfd-base {
+ prefix "vnfd-base";
+ }
+
+ import rw-project {
+ prefix "rw-project";
+ }
+
+ import mano-rift-groupings {
+ prefix "mano-rift";
+ }
+
+ import mano-types {
+ prefix "manotypes";
+ }
+
+ revision 2017-02-28 {
+ description
+ "Initial revision. This YANG file augments
+ the base MANO VNFD";
+ reference
+ "Derived from earlier versions of base YANG files";
+ }
+
+ grouping vnfd-config-parameter {
+ container config-parameter {
+ description
+ "List of VNF config parameter requests and sources";
+ list config-parameter-source {
+ description "The list of parameters exposed by this VNF";
+ key "name";
+
+ leaf name {
+ description "Name of the source";
+ type string {
+ length "1..128";
+ }
+ }
+
+ leaf description {
+ description " Description of the source";
+ type string;
+ }
+
+ choice source {
+ case descriptor {
+ leaf descriptor {
+ description
+ "Location of this source as an xpath.
+ For example:
+ ../../../mgmt-interface/port";
+ type string;
+ }
+ }
+
+ case attribute {
+ leaf attribute {
+ description
+ "Location of this source as runtime attribute.
+ The value is <xpath>, <attribute_name>
+ For example:
+ ../../../mgmt-interface, ip-address
+ which retruns the ip-address assigned to the
+ mgmt-interface after VNF instantiation.";
+ type string;
+ }
+ }
+
+ case primitive-ref {
+ leaf config-primitive-name-ref {
+ description
+ "A leafref to configuration primitive.
+ This refers to a config parameter whose
+ output parameter is referred in out-parameter.";
+ type leafref {
+ path "../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive/project-vnfd:name";
+ }
+ }
+
+ leaf parameter-ref {
+ description
+ "Name of the output parameter in the config primitiive";
+ type leafref {
+ path
+ "../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive[project-vnfd:name=current()/../config-primitive-name-ref]/project-vnfd:parameter/project-vnfd:name";
+ }
+ }
+ }
+
+ case value {
+ leaf value {
+ description
+ "Pre-defined value to be used for this source";
+ type string;
+ }
+ }
+ }
+
+ list parameter {
+ key "config-primitive-name-ref";
+
+ leaf config-primitive-name-ref {
+ description
+ "Name of the configuration primitive where this
+ request will used";
+ type leafref {
+ path "../../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive/project-vnfd:name";
+ }
+ }
+
+ leaf config-primitive-parameter-ref {
+ description
+ "Parameter name of the config primitive";
+ type leafref {
+ path "../../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive[project-vnfd:name=current()/../config-primitive-name-ref]/project-vnfd:parameter/project-vnfd:name";
+ }
+ }
+ }
+ }
+
+ list config-parameter-request {
+ description "The list of requests for this VNF";
+ key "name";
+
+ leaf name {
+ description "Name of this parameter request";
+ type string {
+ length "1..128";
+ }
+ }
+
+ leaf description {
+ description "Description of this request";
+ type string;
+ }
+
+ list parameter {
+ key "config-primitive-name-ref";
+
+ leaf config-primitive-name-ref {
+ description
+ "Name of the configuration primitive where this
+ request will used";
+ type leafref {
+ path "../../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive/project-vnfd:name";
+ }
+ }
+
+ leaf config-primitive-parameter-ref {
+ description
+ "Parameter name of the config primitive";
+ type leafref {
+ path "../../../../project-vnfd:vnf-configuration/project-vnfd:config-primitive[project-vnfd:name=current()/../config-primitive-name-ref]/project-vnfd:parameter/project-vnfd:name";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd {
+ uses rw-vnfd-base:rw-vnfd-ext;
+ uses vnfd-config-parameter;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:mgmt-interface {
+ uses rw-vnfd-base:ssh-key;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:http-endpoint {
+ uses mano-rift:http-end-point-additions;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vdu/project-vnfd:supplemental-boot-data {
+ uses mano-rift:custom-meta-data;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vdu/project-vnfd:volumes {
+ uses mano-rift:volume-info-additions;
+ uses mano-rift:custom-meta-data;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vdu/project-vnfd:interface {
+ leaf static-ip-address {
+ description "Static IP address for the connection point";
+ type inet:ip-address;
+ }
+
+ leaf floating-ip-needed{
+ type boolean;
+ default "false";
+ description
+ "Sole purpose of this field is to facilitate translation of VNFD
+ to other VNFMs";
+ }
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vdu/project-vnfd:volumes/project-vnfd:volume-source {
+ case volume {
+ leaf volume-ref {
+ description "Reference for pre-existing volume in VIM";
+ type string;
+ }
+ }
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vnf-configuration/project-vnfd:initial-config-primitive/project-vnfd:primitive-type {
+ case primitive-ref {
+ leaf config-primitive-ref {
+ description
+ "Reference to a config primitive name.
+ NOTE: The config primitive referred should have
+ all the input parameters predefined either
+ with default values or dependency references.";
+ type leafref {
+ path "../../project-vnfd:config-primitive/project-vnfd:name";
+ }
+ }
+ }
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:internal-vld {
+ list virtual-connection-points {
+ description
+ "A list of virtual-connection points associated with Virtual Link.
+ These connection points are not directly associated with any VDUs";
+ key name;
+ uses vnfd-base:common-connection-point;
+
+ leaf-list associated-cps {
+ description
+ "A List of connection points associated with virtual connection point";
+ type leafref {
+ path "../../project-vnfd:internal-connection-point/project-vnfd:id-ref";
+ }
+ }
+ }
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vdu/project-vnfd:vm-flavor {
+ uses manotypes:vm-flavor-name;
+ }
+
+ augment /rw-project:project/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:vnf-configuration/project-vnfd:config-primitive/project-vnfd:parameter {
+ leaf out {
+ description "If this is an output of the primitive execution";
+ type boolean;
+ default false;
+ }
+ }
+
+}
+// vim: sw=2