/* * * 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 , 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