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 {
64 "Update model to support projects.";
69 "Initial revision. This YANG file defines
70 the Virtual Network Function Record (VNFR)";
72 "Derived from earlier versions of base YANG files";
75 typedef vdu-operational-status {
79 enum vm-alloc-pending;
82 enum vl-terminate-phase;
88 typedef vnf-operational-status {
96 enum vm-terminate-phase;
97 enum vl-terminate-phase;
103 grouping placement-group-info {
104 list placement-groups-info {
107 Placement groups to which this VDU belongs and its
111 uses manotypes:placement-group-info;
112 uses manotypes:placement-group-input;
116 grouping virtual-interface {
117 container virtual-interface {
119 "Container for the virtual interface properties";
123 "Specifies the type of virtual interface
125 VIRTIO : Use the traditional VIRTIO interface.
126 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
127 SR-IOV : Use SR-IOV interface.";
130 enum PCI-PASSTHROUGH;
137 "Aggregate bandwidth of the NIC.";
143 "Defines if the NIC supports OVS offload.
144 MANDATORY : OVS offload support in the NIC is mandatory.
145 PREFERRED : OVS offload support in the NIC is preferred.";
154 "Specifies the vendor specific id for
155 the device. This is used when a NIC from
156 specific HW vendor is required.";
160 leaf datapath-library {
162 "Specifies the name and version of the datapath
163 library the NIC is expected to support.";
167 leaf provider-network-name {
169 "Name of the provider network to which this
176 grouping associated-virtual-cps {
179 uses vnfd-base:common-connection-point;
183 "IP address assigned to the virtual connection point";
184 type inet:ip-address;
189 "MAC address assigned to the virtual connection point";
193 leaf connection-point-id {
194 description "VIM identifier for connection point";
200 augment "/rw-project:project" {
201 container vnfr-catalog {
205 "Virtual Network Function Record (VNFR).";
210 description "Identifier for the VNFR.";
216 "NS instance identifier.
217 This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
221 leaf member-vnf-index-ref {
222 description "Reference to member VNF index in Network service.";
224 path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index";
229 description "Dashboard URL";
234 description "VNFR name.";
239 description "VNFR short name.";
244 description "Vendor of the VNFR.";
249 description "Description of the VNFR.";
254 description "Version of the VNFR";
260 "Creation timestamp of this Virtual Network
261 Function. The timestamp is expressed as
262 seconds since unix epoch - 1970-01-01T00:00:00Z";
269 "Active period of this Virtual Network Function.
270 Uptime is expressed in seconds";
276 description "VNF descriptor used to instantiate this VNF";
277 uses vnfd-base:vnfd-descriptor;
281 description "Reference to VNFD";
283 path "../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
287 // Use parameters provided here to configure this VNF
288 uses manotypes:vnf-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;
444 description "Name of the disk-volumes, e.g. vda, vdb etc";
449 description "VIM assigned volume id";
453 uses manotypes:volume-info;
456 list internal-connection-point {
459 "List for internal connection points. Each VNFC
460 has zero or more internal connection points.
461 Internal connection points are used for connecting
462 the VNF components internal to the VNF. If a VNF
463 has only one VNFC, it may not have any internal
466 uses vnfd-base:common-connection-point;
470 "IP address assigned to the internal connection point";
471 type inet:ip-address;
476 "MAC address assigned to the internal connection point";
477 // type inet:mac-address;
481 leaf connection-point-id {
485 uses associated-virtual-cps;
490 "List of interfaces (internal and external) for the VNF";
495 "Name of the interface. Note that this
496 name has only local significance to the VDU.";
502 "Explicit Position of the interface within the list";
508 "Type of the Interface";
510 type vnfd-base:interface-type;
515 choice connection-point-type {
517 leaf internal-connection-point-ref {
519 "Leaf Ref to the particular internal connection point";
521 path "../../internal-connection-point/id";
526 leaf external-connection-point-ref {
528 "Leaf Ref to the particular external connection point";
530 path "../../../connection-point/name";
535 uses virtual-interface;
538 leaf operational-status {
540 "The operational status of the VDU
541 init : The VDU has just started.
542 vm-init-phase : The VDUs in the VNF is being created in VIM.
543 vm-alloc-pending : The VM alloc is pending in VIM
544 running : The VDU is active in VM
545 terminate : The VDU is being terminated
546 vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
547 terminated : The VDU is in the terminated state.
548 failed : The VDU instantiation failed.
550 type vdu-operational-status;
552 uses placement-group-info;
555 uses manotypes:monitoring-param;
557 leaf operational-status {
559 "The operational status of the VNFR instance
560 pre-init : The VNF before Input Param Substitution.
561 init : The VNF has just started.
562 vl-init-phase : The internal VLs in the VNF are being instantiated.
563 vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
564 running : The VNF is in running state.
565 terminate : The VNF is being terminated.
566 vm-terminate-phase : The VMs in the VNF are being terminated.
567 vl-terminate-phase : The internal VLs in the VNF are being terminated.
568 terminated : The VNF is in the terminated state.
569 failed : The VNF instantiation failed
571 type vnf-operational-status;
576 "The configuration status of the NS instance
577 configuring: At least one of the VNFs in this instance is in configuring state
578 configured: All the VNFs in this NS instance are configured or config-not-needed state
591 enum config-not-needed {
596 uses placement-group-info;
598 container cloud-config {
599 uses manotypes:cloud-config;
606 description "Create an alert for a running VDU";
608 uses manotypes:rpc-project-name;
613 path "/rw-project:project[rw-project:name=current()/../project-name]" +
614 "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
624 uses manotypes:alarm;
636 description "Destroy an alert that is associated with a running VDU";
638 uses manotypes:rpc-project-name;
643 path "/rw-project:project[rw-project:name=current()/../project-name]" +
644 "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";