4 * Copyright 2016 RIFT.IO Inc
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 namespace "urn:ietf:params:xml:ns:yang:nfvo:vnfd";
34 import ietf-yang-types {
38 import ietf-inet-types {
44 "Initial revision. This YANG file defines
45 the Virtual Network Function (VNF)";
47 "Derived from earlier versions of base YANG files";
50 grouping common-connection-point {
52 description "Name of the connection point";
57 description "Identifier for the internal connection points";
62 description "Short name of the connection point";
67 description "Type of the connection point.";
68 type manotypes:connection-point-type;
72 grouping virtual-interface {
73 container virtual-interface {
75 "Container for the virtual interface properties";
79 "Specifies the type of virtual interface
81 VIRTIO : Use the traditional VIRTIO interface.
82 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
83 SR-IOV : Use SR-IOV interface.
84 OM-MGMT : Used to specify openmano mgmt external-connection type";
97 "Specifies the virtual PCI address. Expressed in
98 the following format dddd:dd:dd.d. For example
99 0000:00:12.0. This information can be used to
100 pass as metadata during the VM creation.";
106 "Aggregate bandwidth of the NIC.";
112 container vnfd-catalog {
115 "Virtual Network Function Descriptor (VNFD).";
121 description "Identifier for the VNFD.";
126 description "VNFD name.";
132 description "VNFD short name.";
137 description "Vendor of the VNFD.";
143 "Vendor logo for the Virtual Network Function";
148 description "Description of the VNFD.";
153 description "Version of the VNFD";
157 container mgmt-interface {
159 "Interface over which the VNF is managed.";
161 uses manotypes:vnf-configuration;
163 choice endpoint-type {
165 "Indicates the type of management endpoint.";
169 "Specifies the static IP address for managing the VNF.";
171 type inet:ip-address;
177 "Use the default management interface on this VDU.";
180 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vdu/vnfd:id";
187 "Use the ip address associated with this connection point.";
190 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:connection-point/vnfd:name";
198 "Port for the management interface.";
199 type inet:port-number;
202 container dashboard-params {
203 description "Parameters for the VNF dashboard";
206 description "The HTTP path for the dashboard";
211 description "Pick HTTPS instead of HTTP , Default is false";
216 description "The HTTP port for the dashboard";
217 type inet:port-number;
225 "List of Internal Virtual Link Descriptors (VLD).
226 The internal VLD describes the basic topology of
227 the connectivity (e.g. E-LAN, E-Line, E-Tree)
228 between internal VNF components of the system.";
231 description "Identifier for the VLD";
236 description "Name of the internal VLD";
241 description "Short name of the internal VLD";
250 type manotypes:virtual-link-type;
253 leaf root-bandwidth {
255 "For ELAN this is the aggregate bandwidth.";
259 leaf leaf-bandwidth {
261 "For ELAN this is the bandwidth of branches.";
265 leaf-list internal-connection-point-ref {
267 path "../../vdu/internal-connection-point/id";
271 uses manotypes:provider-network;
274 list connection-point {
277 "List for external connection points. Each VNF has one
278 or more external connection points. As the name
279 implies that external connection points are used for
280 connecting the VNF to other VNFs or to external networks.
281 Each VNF exposes these connection points to the
282 orchestrator. The orchestrator can construct network
283 services by connecting the connection points between
284 different VNFs. The NFVO will use VLDs and VNFFGs at
285 the network service level to construct network services.";
287 uses common-connection-point;
291 description "List of Virtual Deployment Units";
295 description "Unique id for the VDU";
300 description "Unique name for the VDU";
305 description "Description of the VDU.";
310 description "Number of instances of VDU";
316 "Specifies the virtual PCI address. Expressed in
317 the following format dddd:dd:dd.d. For example
318 0000:00:12.0. This information can be used to
319 pass as metadata during the VM creation.";
323 uses manotypes:vm-flavor;
324 uses manotypes:guest-epa;
325 uses manotypes:vswitch-epa;
326 uses manotypes:hypervisor-epa;
327 uses manotypes:host-epa;
332 uses manotypes:alarm;
337 "Image name for the software image.
338 If the image name is found within the VNF packaage it will
339 be uploaded to all cloud accounts during onboarding process.
340 Otherwise, the image must be added to the cloud account with
341 the same name as entered here.
347 leaf image-checksum {
349 "Image md5sum for the software image.
350 The md5sum, if provided, along with the image name uniquely
351 identifies an image uploaded to the CAL.
357 description "Content of cloud-init script";
361 list internal-connection-point {
364 "List for internal connection points. Each VNFC
365 has zero or more internal connection points.
366 Internal connection points are used for connecting
367 the VNF components internal to the VNF. If a VNF
368 has only one VNFC, it may not have any internal
371 uses common-connection-point;
373 leaf internal-vld-ref {
375 path "../../../internal-vld/id";
380 list internal-interface {
382 "List of internal interfaces for the VNF";
387 "Name of internal interface. Note that this
388 name has only local significance to the VDU.";
392 leaf vdu-internal-connection-point-ref {
394 path "../../internal-connection-point/id";
397 uses virtual-interface;
400 list external-interface {
402 "List of external interfaces for the VNF.
403 The external interfaces enable sending
404 traffic to and from VNF.";
409 "Name of the external interface. Note that
410 this name has only local significance.";
414 leaf vnfd-connection-point-ref {
416 "Name of the external connection point.";
418 path "../../../connection-point/name";
421 uses virtual-interface;
425 list vdu-dependency {
427 "List of VDU dependencies.";
430 leaf vdu-source-ref {
436 leaf vdu-depends-on-ref {
438 "Reference to the VDU that
439 source VDU depends.";
446 leaf service-function-chain {
447 description "Type of node in Service Function Chaining Architecture";
458 leaf service-function-type {
460 "Type of Service Function.
461 NOTE: This needs to map with Service Function Type in ODL to
462 support VNFFG. Service Function Type is manadatory param in ODL
463 SFC. This is temporarily set to string for ease of use";
467 uses manotypes:monitoring-param;
469 list placement-groups {
470 description "List of placement groups at VNF level";
473 uses manotypes:placement-group-info;
477 "List of VDUs that are part of this placement group";
478 key "member-vdu-ref";
480 leaf member-vdu-ref {
482 path "../../../vdu/id";