4 * Copyright 2017 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 "http://riftio.com/ns/riftware-1.0/vnfd-base";
30 import ietf-inet-types {
36 "Initial revision. This YANG file defines
37 the common types for Virtual Network Function
40 "Derived from earlier versions of base YANG files";
43 grouping common-connection-point {
45 description "Name of the connection point";
50 description "Identifier for the internal connection points";
55 description "Short name to appear as label in the UI";
60 description "Type of the connection point.";
61 type manotypes:connection-point-type;
64 leaf port-security-enabled {
65 description "Enables the port security for the port";
70 typedef interface-type {
77 grouping virtual-interface {
78 container virtual-interface {
80 "Container for the virtual interface properties";
84 "Specifies the type of virtual interface
86 VIRTIO : Use the traditional VIRTIO interface.
87 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
88 SR-IOV : Use SR-IOV interface.
89 E1000 : Emulate E1000 interface.
90 RTL8139 : Emulate RTL8139 interface.
91 PCNET : Emulate PCNET interface.
92 OM-MGMT : Used to specify openmano mgmt external-connection type";
108 "Specifies the virtual PCI address. Expressed in
109 the following format dddd:dd:dd.d. For example
110 0000:00:12.0. This information can be used to
111 pass as metadata during the VM creation.";
117 "Aggregate bandwidth of the NIC.";
123 grouping vnfd-descriptor {
125 description "Identifier for the VNFD.";
132 description "VNFD name.";
138 description "Short name to appear as label in the UI";
143 description "Vendor of the VNFD.";
149 "Vendor logo for the Virtual Network Function";
154 description "Description of the VNFD.";
159 description "Version of the VNFD";
164 container vnf-configuration {
165 uses manotypes:vca-configuration;
168 container mgmt-interface {
170 "Interface over which the VNF is managed.";
172 choice endpoint-type {
174 "Indicates the type of management endpoint.";
178 "Specifies the static IP address for managing the VNF.";
180 type inet:ip-address;
186 "Use the default management interface on this VDU.";
196 "Use the ip address associated with this connection point.";
199 path "../../connection-point/name";
207 "Port for the management interface.";
208 type inet:port-number;
211 container dashboard-params {
212 description "Parameters for the VNF dashboard";
215 description "The HTTP path for the dashboard";
220 description "Pick HTTPS instead of HTTP , Default is false";
225 description "The HTTP port for the dashboard";
226 type inet:port-number;
234 "List of Internal Virtual Link Descriptors (VLD).
235 The internal VLD describes the basic topology of
236 the connectivity such as E-LAN, E-Line, E-Tree.
237 between internal VNF components of the system.";
240 description "Identifier for the VLD";
245 description "Name of the internal VLD";
250 description "Short name to appear as label in the UI";
259 type manotypes:virtual-link-type;
262 leaf root-bandwidth {
264 "For ELAN this is the aggregate bandwidth.";
268 leaf leaf-bandwidth {
270 "For ELAN this is the bandwidth of branches.";
274 list internal-connection-point {
276 description "List of internal connection points in this VLD";
278 description "reference to the internal connection point id";
280 path "../../../vdu/internal-connection-point/id";
285 uses manotypes:provider-network;
287 description "Extra parameters for VLD instantiation";
289 case vim-network-ref {
290 leaf vim-network-name {
292 "Name of network in VIM account. This is used to indicate
293 pre-provisioned network name in cloud account.";
298 case vim-network-profile {
299 leaf ip-profile-ref {
300 description "Named reference to IP-profile object";
308 uses manotypes:ip-profile-list;
310 list connection-point {
313 "List for external connection points. Each VNF has one
314 or more external connection points that connect the VNF
315 to other VNFs or to external networks. Each VNF exposes
316 connection points to the orchestrator, which can construct
317 network services by connecting the connection points
318 between different VNFs. The NFVO will use VLDs and VNFFGs
319 at the network service level to construct network services.";
321 uses common-connection-point;
325 description "List of Virtual Deployment Units";
329 description "Unique id for the VDU";
334 description "Unique name for the VDU";
339 description "Description of the VDU.";
344 description "Number of instances of VDU";
350 "Specifies the virtual PCI address. Expressed in
351 the following format dddd:dd:dd.d. For example
352 0000:00:12.0. This information can be used to
353 pass as metadata during the VM creation.";
357 uses manotypes:vm-flavor;
358 uses manotypes:guest-epa;
359 uses manotypes:vswitch-epa;
360 uses manotypes:hypervisor-epa;
361 uses manotypes:host-epa;
366 uses manotypes:alarm;
369 uses manotypes:image-properties;
371 container vdu-configuration {
372 uses manotypes:vca-configuration;
375 choice cloud-init-input {
377 "Indicates how the contents of cloud-init script are provided.
378 There are 2 choices - inline or in a file";
383 "Contents of cloud-init script, provided inline, in cloud-config format";
389 leaf cloud-init-file {
391 "Name of file with contents of cloud-init script in cloud-config format";
397 uses manotypes:supplemental-boot-data;
399 list internal-connection-point {
402 "List for internal connection points. Each VNFC
403 has zero or more internal connection points.
404 Internal connection points are used for connecting
405 the VNF with components internal to the VNF. If a VNF
406 has only one VNFC, it may not have any internal
409 uses common-connection-point;
411 leaf internal-vld-ref {
413 path "../../../internal-vld/id";
420 "List of Interfaces (external and internal) for the VNF";
425 "Name of the interface. Note that this
426 name has only local significance to the VDU.";
432 "Explicit Position of the interface within the list";
438 "Type of the Interface";
444 choice connection-point-type {
446 leaf internal-connection-point-ref {
448 "Leaf Ref to the particular internal connection point";
450 path "../../internal-connection-point/id";
455 leaf external-connection-point-ref {
457 "Leaf Ref to the particular external connection point";
459 path "../../../connection-point/name";
465 uses virtual-interface;
473 description "Name of the disk-volumes, e.g. vda, vdb etc";
477 uses manotypes:volume-info;
481 list vdu-dependency {
483 "List of VDU dependencies.";
486 leaf vdu-source-ref {
492 leaf vdu-depends-on-ref {
494 "Reference to the VDU on which
495 the source VDU depends.";
502 leaf service-function-chain {
503 description "Type of node in Service Function Chaining Architecture";
514 leaf service-function-type {
516 "Type of Service Function.
517 NOTE: This needs to map with Service Function Type in ODL to
518 support VNFFG. Service Function Type is mandatory param in ODL
519 SFC. This is temporarily set to string for ease of use";
523 uses manotypes:monitoring-param;
525 list placement-groups {
526 description "List of placement groups at VNF level";
529 uses manotypes:placement-group-info;
534 "List of VDUs that are part of this placement group";
535 key "member-vdu-ref";
537 leaf member-vdu-ref {
539 path "../../../vdu/id";