4 * Copyright 2016-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 "urn:ietf:params:xml:ns:yang:nfvo:vnfr";
35 prefix "project-vnfd";
46 import ietf-yang-types {
50 import ietf-inet-types {
60 "Update model to support projects.";
65 "Initial revision. This YANG file defines
66 the Virtual Network Function Record (VNFR)";
68 "Derived from earlier versions of base YANG files";
71 typedef vdu-operational-status {
75 enum vm-alloc-pending;
79 enum vl-terminate-phase;
85 typedef vnf-operational-status {
92 enum upgrading; // Experimental
94 enum vm-terminate-phase;
95 enum vl-terminate-phase;
101 grouping placement-group-info {
102 list placement-groups-info {
105 Placement groups to which this VDU belongs and its
109 uses manotypes:placement-group-info;
110 uses manotypes:placement-group-input;
114 grouping virtual-interface {
115 container virtual-interface {
117 "Container for the virtual interface properties";
121 "Specifies the type of virtual interface
123 VIRTIO : Use the traditional VIRTIO interface.
124 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
125 SR-IOV : Use SR-IOV interface.";
128 enum PCI-PASSTHROUGH;
135 "Aggregate bandwidth of the NIC.";
141 "Defines if the NIC supports OVS offload.
142 MANDATORY : OVS offload support in the NIC is mandatory.
143 PREFERRED : OVS offload support in the NIC is preferred.";
152 "Specifies the vendor specific id for
153 the device. This is used when a NIC from
154 specific HW vendor is required.";
158 leaf datapath-library {
160 "Specifies the name and version of the datapath
161 library the NIC is expected to support.";
165 leaf provider-network-name {
167 "Name of the provider network to which this
174 grouping associated-virtual-cps {
177 uses vnfd-base:common-connection-point;
181 "IP address assigned to the virtual connection point";
182 type inet:ip-address;
187 "MAC address assigned to the virtual connection point";
191 leaf connection-point-id {
192 description "VIM identifier for connection point";
198 augment "/rw-project:project" {
199 container vnfr-catalog {
203 "Virtual Network Function Record (VNFR).";
208 description "Identifier for the VNFR.";
214 "NS instance identifier.
215 This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
219 leaf member-vnf-index-ref {
220 description "Reference to member VNF index in Network service.";
222 path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index";
227 description "Dashboard URL";
232 description "VNFR name.";
237 description "VNFR short name.";
242 description "Vendor of the VNFR.";
247 description "Description of the VNFR.";
252 description "Version of the VNFR";
258 "Creation timestamp of this Virtual Network
259 Function. The timestamp is expressed as
260 seconds since unix epoch - 1970-01-01T00:00:00Z";
267 "Active period of this Virtual Network Function.
268 Uptime is expressed in seconds";
274 description "VNF descriptor used to instantiate this VNF";
275 uses vnfd-base:vnfd-descriptor;
279 description "Reference to VNFD";
281 path "../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
285 // Use parameters provided here to configure this VNF
286 container vnf-configuration {
287 uses manotypes:vca-configuration;
290 // Mainly used by Mon-params & dashboard url
291 container mgmt-interface {
293 type inet:ip-address;
297 type inet:port-number;
301 description "SSH key pair used for this VNF";
303 description "Public key configured on this VNF";
307 leaf private-key-file {
308 description "Path to the private key file";
318 description "Reference to a VLR record in the VLR catalog";
320 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
324 leaf-list internal-connection-point-ref {
326 path "../../vdur/internal-connection-point/id";
331 list connection-point {
334 "List for external connection points. Each VNF has one
335 or more external connection points. As the name
336 implies that external connection points are used for
337 connecting the VNF to other VNFs or to external networks.
338 Each VNF exposes these connection points to the
339 orchestrator. The orchestrator can construct network
340 services by connecting the connection points between
341 different VNFs. The NFVO will use VLDs and VNFFGs at
342 the network service level to construct network services.";
344 uses vnfd-base:common-connection-point;
348 "Reference to the VLR associated with this connection point";
350 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
356 "IP address assigned to the external connection point";
357 type inet:ip-address;
362 "MAC address assigned to the external connection point";
363 // type inet:mac-address;
367 leaf connection-point-id {
371 uses associated-virtual-cps;
375 description "List of Virtual Deployment Units";
380 description "Unique id for the VDU";
385 description "name of the instantiated VDUR";
389 leaf unique-short-name {
390 description "Short Unique name of the VDU
391 This will be of the format NSR name-ShortnedString-VDUname
392 NSR name and VDU name shall be constrained to 10 characters";
398 path "../../vnfd/vdu/id";
403 description "Allocated VM resource id";
408 description "VIM assigned flavor id";
413 description "VIM assigned image id";
418 description "Management IP address";
419 type inet:ip-address;
422 leaf vm-management-ip {
423 description "VM Private Management IP address";
424 type inet:ip-address;
428 description "Console URL for this VDU, if available";
432 uses manotypes:vm-flavor;
433 uses manotypes:guest-epa;
434 uses manotypes:vswitch-epa;
435 uses manotypes:hypervisor-epa;
436 uses manotypes:host-epa;
438 uses manotypes:supplemental-boot-data;
440 container vdu-configuration {
441 uses manotypes:vca-configuration;
448 description "Name of the disk-volumes, e.g. vda, vdb etc";
453 description "VIM assigned volume id";
457 uses manotypes:volume-info;
460 list internal-connection-point {
463 "List for internal connection points. Each VNFC
464 has zero or more internal connection points.
465 Internal connection points are used for connecting
466 the VNF components internal to the VNF. If a VNF
467 has only one VNFC, it may not have any internal
470 uses vnfd-base:common-connection-point;
474 "IP address assigned to the internal connection point";
475 type inet:ip-address;
480 "MAC address assigned to the internal connection point";
481 // type inet:mac-address;
485 leaf connection-point-id {
489 uses associated-virtual-cps;
494 "List of interfaces (internal and external) for the VNF";
499 "Name of the interface. Note that this
500 name has only local significance to the VDU.";
506 "Explicit Position of the interface within the list";
512 "Type of the Interface";
514 type vnfd-base:interface-type;
518 choice connection-point-type {
520 leaf internal-connection-point-ref {
522 "Leaf Ref to the particular internal connection point";
524 path "../../internal-connection-point/id";
529 leaf external-connection-point-ref {
531 "Leaf Ref to the particular external connection point";
533 path "../../../connection-point/name";
538 uses virtual-interface;
541 leaf operational-status {
543 "The operational status of the VDU
544 init : The VDU has just started.
545 vm-init-phase : The VDUs in the VNF is being created in VIM.
546 vm-alloc-pending : The VM alloc is pending in VIM
547 running : The VDU is active in VM
548 upgrading : The VDU is being upgraded (EXPERIMENTAL)
549 terminate : The VDU is being terminated
550 vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
551 terminated : The VDU is in the terminated state.
552 failed : The VDU instantiation failed.
554 type vdu-operational-status;
557 uses placement-group-info;
560 uses manotypes:monitoring-param;
562 leaf operational-status {
564 "The operational status of the VNFR instance
565 pre-init : The VNF before Input Param Substitution.
566 init : The VNF has just started.
567 vl-init-phase : The internal VLs in the VNF are being instantiated.
568 vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
569 running : The VNF is in running state.
570 terminate : The VNF is being terminated.
571 vm-terminate-phase : The VMs in the VNF are being terminated.
572 vl-terminate-phase : The internal VLs in the VNF are being terminated.
573 terminated : The VNF is in the terminated state.
574 failed : The VNF instantiation failed
576 type vnf-operational-status;
581 "The configuration status of the NS instance
582 configuring: At least one of the VNFs in this instance is in configuring state
583 configured: All the VNFs in this NS instance are configured or config-not-needed state
596 enum config-not-needed {
601 uses placement-group-info;
603 container cloud-config {
604 uses manotypes:cloud-config;