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 E1000 : Emulate E1000 interface.
85 RTL8139 : Emulate RTL8139 interface.
86 PCNET : Emulate PCNET interface.
87 OM-MGMT : Used to specify openmano mgmt external-connection type";
103 "Specifies the virtual PCI address. Expressed in
104 the following format dddd:dd:dd.d. For example
105 0000:00:12.0. This information can be used to
106 pass as metadata during the VM creation.";
112 "Aggregate bandwidth of the NIC.";
118 container vnfd-catalog {
121 "Virtual Network Function Descriptor (VNFD).";
127 description "Identifier for the VNFD.";
132 description "VNFD name.";
138 description "VNFD short name.";
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";
163 uses manotypes:vnf-configuration;
165 container mgmt-interface {
167 "Interface over which the VNF is managed.";
169 choice endpoint-type {
171 "Indicates the type of management endpoint.";
175 "Specifies the static IP address for managing the VNF.";
177 type inet:ip-address;
183 "Use the default management interface on this VDU.";
186 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vdu/vnfd:id";
193 "Use the ip address associated with this connection point.";
196 path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:connection-point/vnfd:name";
204 "Port for the management interface.";
205 type inet:port-number;
208 container dashboard-params {
209 description "Parameters for the VNF dashboard";
212 description "The HTTP path for the dashboard";
217 description "Pick HTTPS instead of HTTP , Default is false";
222 description "The HTTP port for the dashboard";
223 type inet:port-number;
231 "List of Internal Virtual Link Descriptors (VLD).
232 The internal VLD describes the basic topology of
233 the connectivity (e.g. E-LAN, E-Line, E-Tree)
234 between internal VNF components of the system.";
237 description "Identifier for the VLD";
242 description "Name of the internal VLD";
247 description "Short name of the internal VLD";
256 type manotypes:virtual-link-type;
259 leaf root-bandwidth {
261 "For ELAN this is the aggregate bandwidth.";
265 leaf leaf-bandwidth {
267 "For ELAN this is the bandwidth of branches.";
271 leaf-list internal-connection-point-ref {
273 path "../../vdu/internal-connection-point/id";
277 uses manotypes:provider-network;
280 list connection-point {
283 "List for external connection points. Each VNF has one
284 or more external connection points. As the name
285 implies that external connection points are used for
286 connecting the VNF to other VNFs or to external networks.
287 Each VNF exposes these connection points to the
288 orchestrator. The orchestrator can construct network
289 services by connecting the connection points between
290 different VNFs. The NFVO will use VLDs and VNFFGs at
291 the network service level to construct network services.";
293 uses common-connection-point;
297 description "List of Virtual Deployment Units";
301 description "Unique id for the VDU";
306 description "Unique name for the VDU";
311 description "Description of the VDU.";
316 description "Number of instances of VDU";
322 "Specifies the virtual PCI address. Expressed in
323 the following format dddd:dd:dd.d. For example
324 0000:00:12.0. This information can be used to
325 pass as metadata during the VM creation.";
329 uses manotypes:vm-flavor;
330 uses manotypes:guest-epa;
331 uses manotypes:vswitch-epa;
332 uses manotypes:hypervisor-epa;
333 uses manotypes:host-epa;
338 uses manotypes:alarm;
343 "Image name for the software image.
344 If the image name is found within the VNF packaage it will
345 be uploaded to all cloud accounts during onboarding process.
346 Otherwise, the image must be added to the cloud account with
347 the same name as entered here.
353 leaf image-checksum {
355 "Image md5sum for the software image.
356 The md5sum, if provided, along with the image name uniquely
357 identifies an image uploaded to the CAL.
362 choice cloud-init-input {
364 "Indicates how the contents of cloud-init script are provided.
365 There are 2 choices - inline or in a file";
370 "Contents of cloud-init script, provided inline, in cloud-config format";
376 leaf cloud-init-file {
378 "Name of file with contents of cloud-init script in cloud-config format";
384 list internal-connection-point {
387 "List for internal connection points. Each VNFC
388 has zero or more internal connection points.
389 Internal connection points are used for connecting
390 the VNF components internal to the VNF. If a VNF
391 has only one VNFC, it may not have any internal
394 uses common-connection-point;
396 leaf internal-vld-ref {
398 path "../../../internal-vld/id";
403 list internal-interface {
405 "List of internal interfaces for the VNF";
410 "Name of internal interface. Note that this
411 name has only local significance to the VDU.";
415 leaf vdu-internal-connection-point-ref {
417 path "../../internal-connection-point/id";
420 uses virtual-interface;
423 list external-interface {
425 "List of external interfaces for the VNF.
426 The external interfaces enable sending
427 traffic to and from VNF.";
432 "Name of the external interface. Note that
433 this name has only local significance.";
437 leaf vnfd-connection-point-ref {
439 "Name of the external connection point.";
441 path "../../../connection-point/name";
444 uses virtual-interface;
448 list vdu-dependency {
450 "List of VDU dependencies.";
453 leaf vdu-source-ref {
459 leaf vdu-depends-on-ref {
461 "Reference to the VDU that
462 source VDU depends.";
469 leaf service-function-chain {
470 description "Type of node in Service Function Chaining Architecture";
481 leaf service-function-type {
483 "Type of Service Function.
484 NOTE: This needs to map with Service Function Type in ODL to
485 support VNFFG. Service Function Type is manadatory param in ODL
486 SFC. This is temporarily set to string for ease of use";
490 uses manotypes:monitoring-param;
492 list placement-groups {
493 description "List of placement groups at VNF level";
496 uses manotypes:placement-group-info;
501 "List of VDUs that are part of this placement group";
502 key "member-vdu-ref";
504 leaf member-vdu-ref {
506 path "../../../vdu/id";