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";
71 typedef interface-type {
78 typedef vnf-operational-status {
89 grouping virtual-interface {
90 container virtual-interface {
92 "Container for the virtual interface properties";
96 "Specifies the type of virtual interface
98 VIRTIO : Use the traditional VIRTIO interface.
99 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
100 SR-IOV : Use SR-IOV interface.
101 E1000 : Emulate E1000 interface.
102 RTL8139 : Emulate RTL8139 interface.
103 PCNET : Emulate PCNET interface.
104 OM-MGMT : Used to specify openmano mgmt external-connection type";
108 enum PCI-PASSTHROUGH;
120 "Specifies the virtual PCI address. Expressed in
121 the following format dddd:dd:dd.d. For example
122 0000:00:12.0. This information can be used to
123 pass as metadata during the VM creation.";
129 "Aggregate bandwidth of the NIC.";
135 grouping vnfd-descriptor {
137 description "Identifier for the VNFD.";
144 description "VNFD name.";
150 description "Short name to appear as label in the UI";
155 description "Vendor of the VNFD.";
161 "Vendor logo for the Virtual Network Function";
166 description "Description of the VNFD.";
171 description "Version of the VNFD";
175 container vnf-configuration {
176 uses manotypes:vca-configuration;
179 leaf operational-status {
181 "The operational status of the VNF
182 init : The VNF has just started.
183 running : The VNF is active in VM
184 upgrading : The VNF is being upgraded (EXPERIMENTAL)
185 terminate : The VNF is being terminated
186 terminated : The VNF is in the terminated state.
187 failed : The VNF instantiation failed.
189 type vnf-operational-status;
192 container mgmt-interface {
194 "Interface over which the VNF is managed.";
196 choice endpoint-type {
198 "Indicates the type of management endpoint.";
202 "Specifies the static IP address for managing the VNF.";
204 type inet:ip-address;
210 "Use the default management interface on this VDU.";
220 "Use the ip address associated with this connection point.";
223 path "../../connection-point/name";
231 "Port for the management interface.";
232 type inet:port-number;
235 container dashboard-params {
236 description "Parameters for the VNF dashboard";
239 description "The HTTP path for the dashboard";
244 description "Pick HTTPS instead of HTTP , Default is false";
249 description "The HTTP port for the dashboard";
250 type inet:port-number;
258 "List of Internal Virtual Link Descriptors (VLD).
259 The internal VLD describes the basic topology of
260 the connectivity such as E-LAN, E-Line, E-Tree.
261 between internal VNF components of the system.";
264 description "Identifier for the VLD";
269 description "Name of the internal VLD";
274 description "Short name to appear as label in the UI";
283 type manotypes:virtual-link-type;
286 leaf root-bandwidth {
288 "For ELAN this is the aggregate bandwidth.";
292 leaf leaf-bandwidth {
294 "For ELAN this is the bandwidth of branches.";
298 list internal-connection-point {
300 description "List of internal connection points in this VLD";
302 description "reference to the internal connection point id";
304 path "../../../vdu/internal-connection-point/id";
309 uses manotypes:provider-network;
311 description "Extra parameters for VLD instantiation";
313 case vim-network-ref {
314 leaf vim-network-name {
316 "Name of network in VIM account. This is used to indicate
317 pre-provisioned network name in cloud account.";
322 case vim-network-profile {
323 leaf ip-profile-ref {
324 description "Named reference to IP-profile object";
332 uses manotypes:ip-profile-list;
334 list connection-point {
337 "List for external connection points. Each VNF has one
338 or more external connection points that connect the VNF
339 to other VNFs or to external networks. Each VNF exposes
340 connection points to the orchestrator, which can construct
341 network services by connecting the connection points
342 between different VNFs. The NFVO will use VLDs and VNFFGs
343 at the network service level to construct network services.";
345 uses common-connection-point;
349 description "List of Virtual Deployment Units";
353 description "Unique id for the VDU";
358 description "Unique name for the VDU";
363 description "Description of the VDU.";
368 description "Number of instances of VDU";
374 "Specifies the virtual PCI address. Expressed in
375 the following format dddd:dd:dd.d. For example
376 0000:00:12.0. This information can be used to
377 pass as metadata during the VM creation.";
381 uses manotypes:vm-flavor;
382 uses manotypes:guest-epa;
383 uses manotypes:vswitch-epa;
384 uses manotypes:hypervisor-epa;
385 uses manotypes:host-epa;
390 uses manotypes:alarm;
393 uses manotypes:image-properties;
395 container vdu-configuration {
396 uses manotypes:vca-configuration;
399 choice cloud-init-input {
401 "Indicates how the contents of cloud-init script are provided.
402 There are 2 choices - inline or in a file";
407 "Contents of cloud-init script, provided inline, in cloud-config format";
413 leaf cloud-init-file {
415 "Name of file with contents of cloud-init script in cloud-config format";
421 uses manotypes:supplemental-boot-data;
423 list internal-connection-point {
426 "List for internal connection points. Each VNFC
427 has zero or more internal connection points.
428 Internal connection points are used for connecting
429 the VNF with components internal to the VNF. If a VNF
430 has only one VNFC, it may not have any internal
433 uses common-connection-point;
435 leaf internal-vld-ref {
437 path "../../../internal-vld/id";
444 "List of Interfaces (external and internal) for the VNF";
449 "Name of the interface. Note that this
450 name has only local significance to the VDU.";
456 "Explicit Position of the interface within the list";
462 "Type of the Interface";
468 choice connection-point-type {
470 leaf internal-connection-point-ref {
472 "Leaf Ref to the particular internal connection point";
474 path "../../internal-connection-point/id";
479 leaf external-connection-point-ref {
481 "Leaf Ref to the particular external connection point";
483 path "../../../connection-point/name";
489 uses virtual-interface;
497 description "Name of the disk-volumes, e.g. vda, vdb etc";
501 uses manotypes:volume-info;
505 list vdu-dependency {
507 "List of VDU dependencies.";
510 leaf vdu-source-ref {
516 leaf vdu-depends-on-ref {
518 "Reference to the VDU on which
519 the source VDU depends.";
526 leaf service-function-chain {
527 description "Type of node in Service Function Chaining Architecture";
538 leaf service-function-type {
540 "Type of Service Function.
541 NOTE: This needs to map with Service Function Type in ODL to
542 support VNFFG. Service Function Type is mandatory param in ODL
543 SFC. This is temporarily set to string for ease of use";
547 uses manotypes:monitoring-param;
549 list placement-groups {
550 description "List of placement groups at VNF level";
553 uses manotypes:placement-group-info;
558 "List of VDUs that are part of this placement group";
559 key "member-vdu-ref";
561 leaf member-vdu-ref {
563 path "../../../vdu/id";