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:vnfr";
46 import ietf-yang-types {
50 import ietf-inet-types {
56 "Initial revision. This YANG file defines
57 the Virtual Network Function Record (VNFR)";
59 "Derived from earlier versions of base YANG files";
62 grouping placement-group-info {
63 list placement-groups-info {
66 Placement groups to which this VDU belongs and its
70 uses manotypes:placement-group-info;
71 uses manotypes:placement-group-input;
76 grouping virtual-interface {
77 container virtual-interface {
79 "Container for the virtual interface properties";
83 "Specifies the type of virtual interface
85 VIRTIO : Use the traditional VIRTIO interface.
86 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
87 SR-IOV : Use SR-IOV interface.";
97 "Aggregate bandwidth of the NIC.";
103 "Defines if the NIC supports OVS offload.
104 MANDATORY : OVS offload support in the NIC is mandatory.
105 PREFERRED : OVS offload support in the NIC is preferred.";
114 "Specifies the vendor specific id for
115 the device. This is used when a NIC from
116 specific HW vendor is required.";
120 leaf datapath-library {
122 "Specifies the name and version of the datapath
123 library the NIC is expected to support.";
127 leaf provider-network-name {
129 "Name of the provider network to which this
136 container vnfr-catalog {
140 "Virtual Network Function Record (VNFR).";
145 description "Identifier for the VNFR.";
151 "NS instance identifier.
152 This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
156 leaf member-vnf-index-ref {
157 description "Reference to member VNF index in Network service.";
159 path "/nsd:nsd-catalog/nsd:nsd/nsd:constituent-vnfd/nsd:member-vnf-index";
164 description "Dashboard URL";
169 description "VNFR name.";
174 description "VNFR short name.";
179 description "Vendor of the VNFR.";
184 description "Description of the VNFR.";
189 description "Version of the VNFR";
195 "Creation timestamp of this Virtual Network
196 Function. The timestamp is expressed as
197 seconds since unix epoch - 1970-01-01T00:00:00Z";
204 "Active period of this Virtual Network Function.
205 Uptime is expressed in seconds";
211 description "VNF descriptor used to instantiate this VNF";
212 uses vnfd:vnfd-descriptor;
215 // Use parameters provided here to configure this VNF
216 container vnf-configuration {
217 uses manotypes:vca-configuration;
220 // Mainly used by Mon-params & dashboard url
221 container mgmt-interface {
223 type inet:ip-address;
226 type inet:port-number;
234 description "Reference to a VLR record in the VLR catalog";
236 path "/vlr:vlr-catalog/vlr:vlr/vlr:id";
240 leaf-list internal-connection-point-ref {
242 path "../../vdur/internal-connection-point/id";
247 list connection-point {
250 "List for external connection points. Each VNF has one
251 or more external connection points. As the name
252 implies that external connection points are used for
253 connecting the VNF to other VNFs or to external networks.
254 Each VNF exposes these connection points to the
255 orchestrator. The orchestrator can construct network
256 services by connecting the connection points between
257 different VNFs. The NFVO will use VLDs and VNFFGs at
258 the network service level to construct network services.";
260 uses vnfd:common-connection-point;
264 "Reference to the VLR associated with this connection point";
266 path "/vlr:vlr-catalog/vlr:vlr/vlr:id";
272 "IP address assigned to the external connection point";
273 type inet:ip-address;
277 "MAC address assigned to the external connection point";
278 // type inet:mac-address;
281 leaf connection-point-id {
282 rwpb:field-inline "true";
283 rwpb:field-string-max 64;
289 description "List of Virtual Deployment Units";
294 description "Unique id for the VDU";
299 description "name of the instantiated VDUR";
303 leaf unique-short-name {
304 description "Short Unique name of the VDU
305 This will be of the format NSR name-ShortnedString-VDUname
306 NSR name and VDU name shall be constrained to 10 characters";
307 rwpb:field-inline "true";
308 rwpb:field-string-max 64;
314 path "../../vnfd/vdu/id";
319 description "Allocated VM resource id";
324 description "VIM assigned flavor id";
329 description "VIM assigned image id";
334 description "Management IP address";
335 type inet:ip-address;
338 leaf vm-management-ip {
339 description "VM Private Management IP address";
340 type inet:ip-address;
344 description "Console URL for this VDU, if available";
348 uses manotypes:vm-flavor;
349 uses manotypes:guest-epa;
350 uses manotypes:vswitch-epa;
351 uses manotypes:hypervisor-epa;
352 uses manotypes:host-epa;
354 uses manotypes:supplemental-boot-data;
356 container vdu-configuration {
357 uses manotypes:vca-configuration;
364 description "Name of the disk-volumes, e.g. vda, vdb etc";
369 description "VIM assigned volume id";
373 uses manotypes:volume-info;
378 "A list of the alarms that have been created for this VDU";
381 uses manotypes:alarm;
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 vnfd:common-connection-point;
398 "IP address assigned to the internal connection point";
399 type inet:ip-address;
403 "MAC address assigned to the internal connection point";
404 // type inet:mac-address;
409 list internal-interface {
411 "List of internal interfaces for the VNF";
416 "Name of internal interface. Note that this
417 name has only local significance to the VDU.";
421 leaf vdur-internal-connection-point-ref {
423 path "../../internal-connection-point/id";
426 uses virtual-interface;
429 list external-interface {
431 "List of external interfaces for the VNF.
432 The external interfaces enable sending
433 traffic to and from VNF.";
438 "Name of the external interface. Note that
439 this name has only local significance.";
443 leaf vnfd-connection-point-ref {
445 "Name of the external connection point.";
447 path "../../../connection-point/name";
450 uses virtual-interface;
452 leaf operational-status {
454 "The operational status of the VDU
455 init : The VDU has just started.
456 vm-init-phase : The VDUs in the VNF is being created in VIM.
457 vm-alloc-pending : The VM alloc is pending in VIM
458 running : The VDU is active in VM
459 terminate : The VDU is being terminated
460 vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
461 terminated : The VDU is in the terminated state.
462 failed : The VDU instantiation failed.
466 rwpb:enum-type "VduOperationalStatus";
469 enum vm-alloc-pending;
472 enum vl-terminate-phase;
477 uses placement-group-info;
480 uses manotypes:monitoring-param;
482 leaf operational-status {
484 "The operational status of the VNFR instance
485 init : The VNF has just started.
486 vl-init-phase : The internal VLs in the VNF are being instantiated.
487 vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
488 running : The VNF is in running state.
489 terminate : The VNF is being terminated.
490 vm-terminate-phase : The VMs in the VNF are being terminated.
491 vl-terminate-phase : The internal VLs in the VNF are being terminated.
492 terminated : The VNF is in the terminated state.
493 failed : The VNF instantiation failed
497 rwpb:enum-type "VnfrOperationalStatus";
503 enum vm-terminate-phase;
504 enum vl-terminate-phase;
511 "The configuration status of the NS instance
512 configuring: At least one of the VNFs in this instance is in configuring state
513 configured: All the VNFs in this NS instance are configured or config-not-needed state
526 enum config-not-needed {
531 uses placement-group-info;
536 description "Create an alert for a running VDU";
549 uses manotypes:alarm;
561 description "Destroy an alert that is associated with a running VDU";