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";
39 prefix "project-vnfd";
50 import ietf-yang-types {
54 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 grouping placement-group-info {
76 list placement-groups-info {
79 Placement groups to which this VDU belongs and its
83 uses manotypes:placement-group-info;
84 uses manotypes:placement-group-input;
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.";
103 enum PCI-PASSTHROUGH;
110 "Aggregate bandwidth of the NIC.";
116 "Defines if the NIC supports OVS offload.
117 MANDATORY : OVS offload support in the NIC is mandatory.
118 PREFERRED : OVS offload support in the NIC is preferred.";
127 "Specifies the vendor specific id for
128 the device. This is used when a NIC from
129 specific HW vendor is required.";
133 leaf datapath-library {
135 "Specifies the name and version of the datapath
136 library the NIC is expected to support.";
140 leaf provider-network-name {
142 "Name of the provider network to which this
149 grouping associated-virtual-cps {
152 uses vnfd-base:common-connection-point;
156 "IP address assigned to the virtual connection point";
157 type inet:ip-address;
162 "MAC address assigned to the virtual connection point";
166 leaf connection-point-id {
167 description "VIM identifier for connection point";
173 augment "/rw-project:project" {
174 container vnfr-catalog {
178 "Virtual Network Function Record (VNFR).";
183 description "Identifier for the VNFR.";
189 "NS instance identifier.
190 This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
194 leaf member-vnf-index-ref {
195 description "Reference to member VNF index in Network service.";
197 path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index";
202 description "Dashboard URL";
207 description "VNFR name.";
212 description "VNFR short name.";
217 description "Vendor of the VNFR.";
222 description "Description of the VNFR.";
227 description "Version of the VNFR";
233 "Creation timestamp of this Virtual Network
234 Function. The timestamp is expressed as
235 seconds since unix epoch - 1970-01-01T00:00:00Z";
242 "Active period of this Virtual Network Function.
243 Uptime is expressed in seconds";
249 description "VNF descriptor used to instantiate this VNF";
250 uses vnfd-base:vnfd-descriptor;
254 description "Reference to VNFD";
256 path "../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
260 // Use parameters provided here to configure this VNF
261 container vnf-configuration {
262 uses manotypes:vca-configuration;
265 // Mainly used by Mon-params & dashboard url
266 container mgmt-interface {
268 type inet:ip-address;
272 type inet:port-number;
276 description "SSH key pair used for this VNF";
278 description "Public key configured on this VNF";
282 leaf private-key-file {
283 description "Path to the private key file";
293 description "Reference to a VLR record in the VLR catalog";
295 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
299 leaf-list internal-connection-point-ref {
301 path "../../vdur/internal-connection-point/id";
306 list connection-point {
309 "List for external connection points. Each VNF has one
310 or more external connection points. As the name
311 implies that external connection points are used for
312 connecting the VNF to other VNFs or to external networks.
313 Each VNF exposes these connection points to the
314 orchestrator. The orchestrator can construct network
315 services by connecting the connection points between
316 different VNFs. The NFVO will use VLDs and VNFFGs at
317 the network service level to construct network services.";
319 uses vnfd-base:common-connection-point;
323 "Reference to the VLR associated with this connection point";
325 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
331 "IP address assigned to the external connection point";
332 type inet:ip-address;
336 "MAC address assigned to the external connection point";
337 // type inet:mac-address;
341 leaf connection-point-id {
345 uses associated-virtual-cps;
349 description "List of Virtual Deployment Units";
354 description "Unique id for the VDU";
359 description "name of the instantiated VDUR";
363 leaf unique-short-name {
364 description "Short Unique name of the VDU
365 This will be of the format NSR name-ShortnedString-VDUname
366 NSR name and VDU name shall be constrained to 10 characters";
367 rwpb:field-inline "true";
368 rwpb:field-string-max 64;
374 path "../../vnfd/vdu/id";
379 description "Allocated VM resource id";
384 description "VIM assigned flavor id";
389 description "VIM assigned image id";
394 description "Management IP address";
395 type inet:ip-address;
398 leaf vm-management-ip {
399 description "VM Private Management IP address";
400 type inet:ip-address;
404 description "Console URL for this VDU, if available";
408 uses manotypes:vm-flavor;
409 uses manotypes:guest-epa;
410 uses manotypes:vswitch-epa;
411 uses manotypes:hypervisor-epa;
412 uses manotypes:host-epa;
414 uses manotypes:supplemental-boot-data;
416 container vdu-configuration {
417 uses manotypes:vca-configuration;
424 description "Name of the disk-volumes, e.g. vda, vdb etc";
429 description "VIM assigned volume id";
433 uses manotypes:volume-info;
436 list internal-connection-point {
439 "List for internal connection points. Each VNFC
440 has zero or more internal connection points.
441 Internal connection points are used for connecting
442 the VNF components internal to the VNF. If a VNF
443 has only one VNFC, it may not have any internal
446 uses vnfd-base:common-connection-point;
450 "IP address assigned to the internal connection point";
451 type inet:ip-address;
455 "MAC address assigned to the internal connection point";
456 // type inet:mac-address;
460 leaf connection-point-id {
464 uses associated-virtual-cps;
469 "List of interfaces (internal and external) for the VNF";
474 "Name of the interface. Note that this
475 name has only local significance to the VDU.";
481 "Explicit Position of the interface within the list";
487 "Type of the Interface";
489 type vnfd-base:interface-type;
493 choice connection-point-type {
495 leaf internal-connection-point-ref {
497 "Leaf Ref to the particular internal connection point";
499 path "../../internal-connection-point/id";
504 leaf external-connection-point-ref {
506 "Leaf Ref to the particular external connection point";
508 path "../../../connection-point/name";
513 uses virtual-interface;
516 leaf operational-status {
518 "The operational status of the VDU
519 init : The VDU has just started.
520 vm-init-phase : The VDUs in the VNF is being created in VIM.
521 vm-alloc-pending : The VM alloc is pending in VIM
522 running : The VDU is active in VM
523 terminate : The VDU is being terminated
524 vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
525 terminated : The VDU is in the terminated state.
526 failed : The VDU instantiation failed.
530 rwpb:enum-type "VduOperationalStatus";
533 enum vm-alloc-pending;
536 enum vl-terminate-phase;
542 uses placement-group-info;
545 uses manotypes:monitoring-param;
547 leaf operational-status {
549 "The operational status of the VNFR instance
550 pre-init : The VNF before Input Param Substitution.
551 init : The VNF has just started.
552 vl-init-phase : The internal VLs in the VNF are being instantiated.
553 vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
554 running : The VNF is in running state.
555 terminate : The VNF is being terminated.
556 vm-terminate-phase : The VMs in the VNF are being terminated.
557 vl-terminate-phase : The internal VLs in the VNF are being terminated.
558 terminated : The VNF is in the terminated state.
559 failed : The VNF instantiation failed
563 rwpb:enum-type "VnfrOperationalStatus";
570 enum vm-terminate-phase;
571 enum vl-terminate-phase;
579 "The configuration status of the NS instance
580 configuring: At least one of the VNFs in this instance is in configuring state
581 configured: All the VNFs in this NS instance are configured or config-not-needed state
594 enum config-not-needed {
599 uses placement-group-info;
601 container cloud-config {
602 rwpb:msg-new VnfrCloudConfig;
603 uses manotypes:cloud-config;