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 container vnf-configuration {
153 uses manotypes:vca-configuration;
156 container mgmt-interface {
158 "Interface over which the VNF is managed.";
160 choice endpoint-type {
162 "Indicates the type of management endpoint.";
166 "Specifies the static IP address for managing the VNF.";
168 type inet:ip-address;
174 "Use the default management interface on this VDU.";
184 "Use the ip address associated with this connection point.";
187 path "../../connection-point/name";
195 "Port for the management interface.";
196 type inet:port-number;
199 container dashboard-params {
200 description "Parameters for the VNF dashboard";
203 description "The HTTP path for the dashboard";
208 description "Pick HTTPS instead of HTTP , Default is false";
213 description "The HTTP port for the dashboard";
214 type inet:port-number;
222 "List of Internal Virtual Link Descriptors (VLD).
223 The internal VLD describes the basic topology of
224 the connectivity such as E-LAN, E-Line, E-Tree.
225 between internal VNF components of the system.";
228 description "Identifier for the VLD";
233 description "Name of the internal VLD";
238 description "Short name to appear as label in the UI";
243 description "Description of internal VLD.";
248 type manotypes:virtual-link-type;
251 leaf root-bandwidth {
253 "For ELAN this is the aggregate bandwidth.";
257 leaf leaf-bandwidth {
259 "For ELAN this is the bandwidth of branches.";
263 list internal-connection-point {
265 description "List of internal connection points in this VLD";
267 description "reference to the internal connection point id";
269 path "../../../vdu/internal-connection-point/id";
273 uses manotypes:provider-network;
275 description "Extra parameters for VLD instantiation";
277 case vim-network-ref {
278 leaf vim-network-name {
280 "Name of network in VIM account. This is used to indicate
281 pre-provisioned network name in cloud account.";
286 case vim-network-profile {
287 leaf ip-profile-ref {
288 description "Named reference to IP-profile object";
290 path "../../ip-profiles/name";
297 uses manotypes:ip-profile-list;
299 list connection-point {
302 "List for external connection points. Each VNF has one
303 or more external connection points that connect the VNF
304 to other VNFs or to external networks. Each VNF exposes
305 connection points to the orchestrator, which can construct
306 network services by connecting the connection points
307 between different VNFs. The NFVO will use VLDs and VNFFGs
308 at the network service level to construct network services.";
310 uses common-connection-point;
314 description "List of Virtual Deployment Units";
318 description "Unique id for the VDU";
323 description "Unique name for the VDU";
328 description "Description of the VDU.";
333 description "Number of instances of VDU";
339 "Specifies the virtual PCI address. Expressed in
340 the following format dddd:dd:dd.d. For example
341 0000:00:12.0. This information can be used to
342 pass as metadata during the VM creation.";
346 uses manotypes:vm-flavor;
347 uses manotypes:guest-epa;
348 uses manotypes:vswitch-epa;
349 uses manotypes:hypervisor-epa;
350 uses manotypes:host-epa;
355 uses manotypes:alarm;
358 uses manotypes:image-properties;
360 container vdu-configuration {
361 uses manotypes:vca-configuration;
364 choice cloud-init-input {
366 "Indicates how the contents of cloud-init script are provided.
367 There are 2 choices - inline or in a file";
372 "Contents of cloud-init script, provided inline, in cloud-config format";
378 leaf cloud-init-file {
380 "Name of file with contents of cloud-init script in cloud-config format";
386 uses manotypes:supplemental-boot-data;
388 list internal-connection-point {
391 "List for internal connection points. Each VNFC
392 has zero or more internal connection points.
393 Internal connection points are used for connecting
394 the VNF with components internal to the VNF. If a VNF
395 has only one VNFC, it may not have any internal
398 uses common-connection-point;
401 list internal-interface {
403 "List of internal interfaces for the VNF";
408 "Name of internal interface. Note that this
409 name has only local significance to the VDU.";
413 leaf vdu-internal-connection-point-ref {
415 path "../../internal-connection-point/id";
418 uses virtual-interface;
421 list external-interface {
423 "List of external interfaces for the VNF.
424 The external interfaces enable sending
425 traffic to and from VNF.";
430 "Name of the external interface. Note that
431 this name has only local significance to
436 leaf vnfd-connection-point-ref {
438 "Name of the external connection point.";
440 path "../../../connection-point/name";
443 uses virtual-interface;
450 description "Name of the disk-volumes, e.g. vda, vdb etc";
454 uses manotypes:volume-info;
458 list vdu-dependency {
460 "List of VDU dependencies.";
463 leaf vdu-source-ref {
469 leaf vdu-depends-on-ref {
471 "Reference to the VDU on which
472 the source VDU depends.";
479 leaf service-function-chain {
480 description "Type of node in Service Function Chaining Architecture";
491 leaf service-function-type {
493 "Type of Service Function.
494 NOTE: This needs to map with Service Function Type in ODL to
495 support VNFFG. Service Function Type is mandatory param in ODL
496 SFC. This is temporarily set to string for ease of use";
500 uses manotypes:monitoring-param;
502 list placement-groups {
503 description "List of placement groups at VNF level";
506 uses manotypes:placement-group-info;
511 "List of VDUs that are part of this placement group";
512 key "member-vdu-ref";
514 leaf member-vdu-ref {
516 path "../../../vdu/id";
523 container vnfd-catalog {
525 "Virtual Network Function Descriptor (VNFD).";
530 uses vnfd-descriptor;