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";
30 import ietf-inet-types {
36 "Initial revision. This YANG file defines
37 the Virtual Network Function (VNF)";
39 "Derived from earlier versions of base YANG files";
42 grouping common-connection-point {
44 description "Name of the connection point";
49 description "Identifier for the internal connection points";
54 description "Short name to appear as label in the UI";
59 description "Type of the connection point.";
60 type manotypes:connection-point-type;
62 leaf port-security-enabled {
63 description "Enables the port security for the port";
68 grouping virtual-interface {
69 container virtual-interface {
71 "Container for the virtual interface properties";
75 "Specifies the type of virtual interface
77 VIRTIO : Use the traditional VIRTIO interface.
78 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
79 SR-IOV : Use SR-IOV interface.
80 E1000 : Emulate E1000 interface.
81 RTL8139 : Emulate RTL8139 interface.
82 PCNET : Emulate PCNET interface.
83 OM-MGMT : Used to specify openmano mgmt external-connection type";
99 "Specifies the virtual PCI address. Expressed in
100 the following format dddd:dd:dd.d. For example
101 0000:00:12.0. This information can be used to
102 pass as metadata during the VM creation.";
108 "Aggregate bandwidth of the NIC.";
114 grouping vnfd-descriptor {
116 description "Identifier for the VNFD.";
121 description "VNFD name.";
127 description "Short name to appear as label in the UI";
132 description "Vendor of the VNFD.";
138 "Vendor logo for the Virtual Network Function";
143 description "Description of the VNFD.";
148 description "Version of the VNFD";
152 uses manotypes:vnf-configuration;
154 container mgmt-interface {
156 "Interface over which the VNF is managed.";
158 choice endpoint-type {
160 "Indicates the type of management endpoint.";
164 "Specifies the static IP address for managing the VNF.";
166 type inet:ip-address;
172 "Use the default management interface on this VDU.";
182 "Use the ip address associated with this connection point.";
185 path "../../connection-point/name";
193 "Port for the management interface.";
194 type inet:port-number;
197 container dashboard-params {
198 description "Parameters for the VNF dashboard";
201 description "The HTTP path for the dashboard";
206 description "Pick HTTPS instead of HTTP , Default is false";
211 description "The HTTP port for the dashboard";
212 type inet:port-number;
220 "List of Internal Virtual Link Descriptors (VLD).
221 The internal VLD describes the basic topology of
222 the connectivity such as E-LAN, E-Line, E-Tree.
223 between internal VNF components of the system.";
226 description "Identifier for the VLD";
231 description "Name of the internal VLD";
236 description "Short name to appear as label in the UI";
241 description "Description of internal VLD.";
246 type manotypes:virtual-link-type;
249 leaf root-bandwidth {
251 "For ELAN this is the aggregate bandwidth.";
255 leaf leaf-bandwidth {
257 "For ELAN this is the bandwidth of branches.";
261 list internal-connection-point {
263 description "List of internal connection points in this VLD";
265 description "reference to the internal connection point id";
267 path "../../../vdu/internal-connection-point/id";
271 uses manotypes:provider-network;
273 description "Extra parameters for VLD instantiation";
275 case vim-network-ref {
276 leaf vim-network-name {
278 "Name of network in VIM account. This is used to indicate
279 pre-provisioned network name in cloud account.";
284 case vim-network-profile {
285 leaf ip-profile-ref {
286 description "Named reference to IP-profile object";
288 path "../../ip-profiles/name";
295 uses manotypes:ip-profile-list;
297 list connection-point {
300 "List for external connection points. Each VNF has one
301 or more external connection points that connect the VNF
302 to other VNFs or to external networks. Each VNF exposes
303 connection points to the orchestrator, which can construct
304 network services by connecting the connection points
305 between different VNFs. The NFVO will use VLDs and VNFFGs
306 at the network service level to construct network services.";
308 uses common-connection-point;
312 description "List of Virtual Deployment Units";
316 description "Unique id for the VDU";
321 description "Unique name for the VDU";
326 description "Description of the VDU.";
331 description "Number of instances of VDU";
337 "Specifies the virtual PCI address. Expressed in
338 the following format dddd:dd:dd.d. For example
339 0000:00:12.0. This information can be used to
340 pass as metadata during the VM creation.";
344 uses manotypes:vm-flavor;
345 uses manotypes:guest-epa;
346 uses manotypes:vswitch-epa;
347 uses manotypes:hypervisor-epa;
348 uses manotypes:host-epa;
353 uses manotypes:alarm;
356 uses manotypes:image-properties;
358 choice cloud-init-input {
360 "Indicates how the contents of cloud-init script are provided.
361 There are 2 choices - inline or in a file";
366 "Contents of cloud-init script, provided inline, in cloud-config format";
372 leaf cloud-init-file {
374 "Name of file with contents of cloud-init script in cloud-config format";
380 uses manotypes:supplemental-boot-data;
382 list internal-connection-point {
385 "List for internal connection points. Each VNFC
386 has zero or more internal connection points.
387 Internal connection points are used for connecting
388 the VNF with components internal to the VNF. If a VNF
389 has only one VNFC, it may not have any internal
392 uses common-connection-point;
395 list internal-interface {
397 "List of internal interfaces for the VNF";
402 "Name of internal interface. Note that this
403 name has only local significance to the VDU.";
407 leaf vdu-internal-connection-point-ref {
409 path "../../internal-connection-point/id";
412 uses virtual-interface;
415 list external-interface {
417 "List of external interfaces for the VNF.
418 The external interfaces enable sending
419 traffic to and from VNF.";
424 "Name of the external interface. Note that
425 this name has only local significance to
430 leaf vnfd-connection-point-ref {
432 "Name of the external connection point.";
434 path "../../../connection-point/name";
437 uses virtual-interface;
444 description "Name of the disk-volumes, e.g. vda, vdb etc";
448 uses manotypes:volume-info;
452 list vdu-dependency {
454 "List of VDU dependencies.";
457 leaf vdu-source-ref {
463 leaf vdu-depends-on-ref {
465 "Reference to the VDU on which
466 the source VDU depends.";
473 leaf service-function-chain {
474 description "Type of node in Service Function Chaining Architecture";
485 leaf service-function-type {
487 "Type of Service Function.
488 NOTE: This needs to map with Service Function Type in ODL to
489 support VNFFG. Service Function Type is mandatory param in ODL
490 SFC. This is temporarily set to string for ease of use";
494 uses manotypes:monitoring-param;
496 list placement-groups {
497 description "List of placement groups at VNF level";
500 uses manotypes:placement-group-info;
505 "List of VDUs that are part of this placement group";
506 key "member-vdu-ref";
508 leaf member-vdu-ref {
510 path "../../../vdu/id";
517 container vnfd-catalog {
519 "Virtual Network Function Descriptor (VNFD).";
524 uses vnfd-descriptor;