blob: aff7af4e8e88aedb6f76126030ddae966d58dce8 [file] [log] [blame]
velandy88a64f12017-06-07 23:32:49 -04001
2/*
Adam Israelcc14dd72017-06-28 14:31:45 -04003 *
Rajesh Velandye27e0b22017-09-18 17:21:48 -04004 * Copyright 2016-2017 RIFT.IO Inc
velandy88a64f12017-06-07 23:32:49 -04005 *
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
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
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.
17 *
18 *
19 */
20
21module vnfr
22{
23 namespace "urn:ietf:params:xml:ns:yang:nfvo:vnfr";
24 prefix "vnfr";
25
26 import mano-types {
27 prefix "manotypes";
28 }
29
Rajesh Velandye27e0b22017-09-18 17:21:48 -040030 import vnfd-base {
31 prefix "vnfd-base";
velandy88a64f12017-06-07 23:32:49 -040032 }
33
Rajesh Velandye27e0b22017-09-18 17:21:48 -040034 import project-vnfd {
35 prefix "project-vnfd";
36 }
37
38 import project-nsd {
39 prefix "project-nsd";
velandy88a64f12017-06-07 23:32:49 -040040 }
41
42 import vlr {
43 prefix "vlr";
44 }
45
46 import ietf-yang-types {
47 prefix "yang";
48 }
49
50 import ietf-inet-types {
51 prefix "inet";
52 }
53
Rajesh Velandye27e0b22017-09-18 17:21:48 -040054 import rw-project {
55 prefix "rw-project";
56 }
57
58 revision 2017-02-28 {
59 description
60 "Update model to support projects.";
61 }
62
velandy88a64f12017-06-07 23:32:49 -040063 revision 2015-09-10 {
64 description
65 "Initial revision. This YANG file defines
66 the Virtual Network Function Record (VNFR)";
67 reference
68 "Derived from earlier versions of base YANG files";
69 }
70
Rajesh989442e2017-10-08 04:13:32 +000071 typedef vdu-operational-status {
72 type enumeration {
73 enum init;
74 enum vm-init-phase;
75 enum vm-alloc-pending;
76 enum running;
Adam Israelfcfb1cb2017-10-10 12:12:30 -040077 enum upgrading;
Rajesh989442e2017-10-08 04:13:32 +000078 enum terminate;
79 enum vl-terminate-phase;
80 enum terminated;
81 enum failed;
82 }
83 }
84
85 typedef vnf-operational-status {
86 type enumeration {
87 enum pre-init;
88 enum init;
89 enum vl-init-phase;
90 enum vm-init-phase;
91 enum running;
Adam Israelfcfb1cb2017-10-10 12:12:30 -040092 enum upgrading; // Experimental
Rajesh989442e2017-10-08 04:13:32 +000093 enum terminate;
94 enum vm-terminate-phase;
95 enum vl-terminate-phase;
96 enum terminated;
97 enum failed;
98 }
99 }
100
velandy88a64f12017-06-07 23:32:49 -0400101 grouping placement-group-info {
102 list placement-groups-info {
103 description
104 "
105 Placement groups to which this VDU belongs and its
106 cloud construct
107 ";
108 key "name";
109 uses manotypes:placement-group-info;
110 uses manotypes:placement-group-input;
Adam Israelcc14dd72017-06-28 14:31:45 -0400111 }
velandy88a64f12017-06-07 23:32:49 -0400112 }
Adam Israelcc14dd72017-06-28 14:31:45 -0400113
velandy88a64f12017-06-07 23:32:49 -0400114 grouping virtual-interface {
115 container virtual-interface {
116 description
117 "Container for the virtual interface properties";
118
119 leaf type {
120 description
121 "Specifies the type of virtual interface
122 between VM and host.
123 VIRTIO : Use the traditional VIRTIO interface.
124 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
125 SR-IOV : Use SR-IOV interface.";
126 type enumeration {
127 enum VIRTIO;
128 enum PCI-PASSTHROUGH;
129 enum SR-IOV;
130 }
131 }
132
133 leaf bandwidth {
134 description
135 "Aggregate bandwidth of the NIC.";
136 type uint64;
137 }
138
139 leaf ovs-offload {
140 description
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.";
144 type enumeration {
145 enum MANDATORY;
146 enum PREFERRED;
147 }
148 }
149
150 leaf vendor-id {
151 description
152 "Specifies the vendor specific id for
153 the device. This is used when a NIC from
154 specific HW vendor is required.";
155 type string;
156 }
157
158 leaf datapath-library {
159 description
160 "Specifies the name and version of the datapath
161 library the NIC is expected to support.";
162 type string;
163 }
164
165 leaf provider-network-name {
166 description
167 "Name of the provider network to which this
168 NIC is attached.";
169 type string;
170 }
171 }
172 }
173
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400174 grouping associated-virtual-cps {
175 list virtual-cps {
176 key "name";
177 uses vnfd-base:common-connection-point;
velandy88a64f12017-06-07 23:32:49 -0400178
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400179 leaf ip-address {
180 description
181 "IP address assigned to the virtual connection point";
182 type inet:ip-address;
velandy88a64f12017-06-07 23:32:49 -0400183 }
184
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400185 leaf mac-address {
velandy88a64f12017-06-07 23:32:49 -0400186 description
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400187 "MAC address assigned to the virtual connection point";
188 type string;
189 }
190
191 leaf connection-point-id {
192 description "VIM identifier for connection point";
193 type string;
194 }
195 }
196 }
197
198 augment "/rw-project:project" {
199 container vnfr-catalog {
garciadeblas781fe342017-12-18 11:34:47 +0100200 leaf schema-version {
201 description "Schema version for the VNFR. If unspecified, it assumes v3.0";
202 type string;
203 default "v3.0";
204 }
205
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400206 config false;
207 list vnfr {
208 description
209 "Virtual Network Function Record (VNFR).";
210 key "id";
211 unique "name";
212
213 leaf id {
214 description "Identifier for the VNFR.";
215 type yang:uuid;
216 }
217
218 leaf nsr-id-ref {
219 description
velandy88a64f12017-06-07 23:32:49 -0400220 "NS instance identifier.
221 This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400222 type yang:uuid;
velandy88a64f12017-06-07 23:32:49 -0400223 }
velandy88a64f12017-06-07 23:32:49 -0400224
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400225 leaf member-vnf-index-ref {
226 description "Reference to member VNF index in Network service.";
227 type leafref {
228 path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index";
229 }
230 }
velandy88a64f12017-06-07 23:32:49 -0400231
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400232 leaf dashboard-url {
233 description "Dashboard URL";
234 type inet:uri;
235 }
velandy88a64f12017-06-07 23:32:49 -0400236
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400237 leaf name {
238 description "VNFR name.";
239 type string;
240 }
velandy88a64f12017-06-07 23:32:49 -0400241
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400242 leaf short-name {
243 description "VNFR short name.";
244 type string;
245 }
velandy88a64f12017-06-07 23:32:49 -0400246
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400247 leaf vendor {
248 description "Vendor of the VNFR.";
249 type string;
250 }
velandy88a64f12017-06-07 23:32:49 -0400251
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400252 leaf description {
253 description "Description of the VNFR.";
254 type string;
255 }
velandy88a64f12017-06-07 23:32:49 -0400256
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400257 leaf version {
258 description "Version of the VNFR";
259 type string;
260 }
261
262 leaf create-time {
263 description
264 "Creation timestamp of this Virtual Network
Adam Israelcc14dd72017-06-28 14:31:45 -0400265 Function. The timestamp is expressed as
velandy88a64f12017-06-07 23:32:49 -0400266 seconds since unix epoch - 1970-01-01T00:00:00Z";
267
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400268 type uint32;
269 }
velandy88a64f12017-06-07 23:32:49 -0400270
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400271 leaf uptime {
272 description
273 "Active period of this Virtual Network Function.
velandy88a64f12017-06-07 23:32:49 -0400274 Uptime is expressed in seconds";
275
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400276 type uint32;
277 }
velandy88a64f12017-06-07 23:32:49 -0400278
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400279 container vnfd {
280 description "VNF descriptor used to instantiate this VNF";
281 uses vnfd-base:vnfd-descriptor;
282 }
velandy88a64f12017-06-07 23:32:49 -0400283
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400284 leaf vnfd-ref {
285 description "Reference to VNFD";
286 type leafref {
287 path "../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
288 }
289 }
290
291 // Use parameters provided here to configure this VNF
garciadeblas0ec676d2017-12-18 18:22:27 +0100292 container vnf-configuration {
293 uses manotypes:vca-configuration;
294 }
velandy88a64f12017-06-07 23:32:49 -0400295
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400296 // Mainly used by Mon-params & dashboard url
297 container mgmt-interface {
298 leaf ip-address {
299 type inet:ip-address;
300 }
velandy88a64f12017-06-07 23:32:49 -0400301
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400302 leaf port {
303 type inet:port-number;
304 }
velandy88a64f12017-06-07 23:32:49 -0400305
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400306 container ssh-key {
307 description "SSH key pair used for this VNF";
308 leaf public-key {
309 description "Public key configured on this VNF";
310 type string;
311 }
312
313 leaf private-key-file {
314 description "Path to the private key file";
315 type string;
316 }
velandy88a64f12017-06-07 23:32:49 -0400317 }
318 }
319
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400320 list internal-vlr {
321 key "vlr-ref";
322
323 leaf vlr-ref {
324 description "Reference to a VLR record in the VLR catalog";
325 type leafref {
326 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
327 }
328 }
329
330 leaf-list internal-connection-point-ref {
331 type leafref {
332 path "../../vdur/internal-connection-point/id";
333 }
velandy88a64f12017-06-07 23:32:49 -0400334 }
335 }
velandy88a64f12017-06-07 23:32:49 -0400336
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400337 list connection-point {
338 key "name";
339 description
velandy88a64f12017-06-07 23:32:49 -0400340 "List for external connection points. Each VNF has one
341 or more external connection points. As the name
342 implies that external connection points are used for
343 connecting the VNF to other VNFs or to external networks.
344 Each VNF exposes these connection points to the
345 orchestrator. The orchestrator can construct network
346 services by connecting the connection points between
347 different VNFs. The NFVO will use VLDs and VNFFGs at
348 the network service level to construct network services.";
349
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400350 uses vnfd-base:common-connection-point;
velandy88a64f12017-06-07 23:32:49 -0400351
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400352 leaf vlr-ref {
353 description
velandy88a64f12017-06-07 23:32:49 -0400354 "Reference to the VLR associated with this connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400355 type leafref {
356 path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
357 }
velandy88a64f12017-06-07 23:32:49 -0400358 }
velandy88a64f12017-06-07 23:32:49 -0400359
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400360 leaf ip-address {
361 description
velandy88a64f12017-06-07 23:32:49 -0400362 "IP address assigned to the external connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400363 type inet:ip-address;
velandy88a64f12017-06-07 23:32:49 -0400364 }
Rajesh989442e2017-10-08 04:13:32 +0000365
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400366 leaf mac-address {
367 description
368 "MAC address assigned to the external connection point";
369 // type inet:mac-address;
370 type string;
371 }
372
373 leaf connection-point-id {
374 type string;
375 }
376
377 uses associated-virtual-cps;
velandy88a64f12017-06-07 23:32:49 -0400378 }
379
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400380 list vdur {
381 description "List of Virtual Deployment Units";
382 key "id";
383 unique "name";
velandy88a64f12017-06-07 23:32:49 -0400384
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400385 leaf id {
386 description "Unique id for the VDU";
387 type yang:uuid;
388 }
velandy88a64f12017-06-07 23:32:49 -0400389
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400390 leaf name {
391 description "name of the instantiated VDUR";
392 type string;
393 }
velandy88a64f12017-06-07 23:32:49 -0400394
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400395 leaf unique-short-name {
396 description "Short Unique name of the VDU
397 This will be of the format NSR name-ShortnedString-VDUname
398 NSR name and VDU name shall be constrained to 10 characters";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400399 type string;
400 }
velandy88a64f12017-06-07 23:32:49 -0400401
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400402 leaf vdu-id-ref {
403 type leafref {
404 path "../../vnfd/vdu/id";
405 }
406 }
velandy88a64f12017-06-07 23:32:49 -0400407
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400408 leaf vim-id {
409 description "Allocated VM resource id";
410 type string;
411 }
velandy88a64f12017-06-07 23:32:49 -0400412
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400413 leaf flavor-id {
414 description "VIM assigned flavor id";
415 type string;
416 }
velandy88a64f12017-06-07 23:32:49 -0400417
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400418 leaf image-id {
419 description "VIM assigned image id";
420 type string;
421 }
422
423 leaf management-ip {
424 description "Management IP address";
425 type inet:ip-address;
426 }
427
428 leaf vm-management-ip {
429 description "VM Private Management IP address";
430 type inet:ip-address;
431 }
432
433 leaf console-url {
434 description "Console URL for this VDU, if available";
435 type inet:uri;
436 }
437
438 uses manotypes:vm-flavor;
439 uses manotypes:guest-epa;
440 uses manotypes:vswitch-epa;
441 uses manotypes:hypervisor-epa;
442 uses manotypes:host-epa;
443
444 uses manotypes:supplemental-boot-data;
velandy88a64f12017-06-07 23:32:49 -0400445
garciadeblas0ec676d2017-12-18 18:22:27 +0100446 container vdu-configuration {
447 uses manotypes:vca-configuration;
448 }
Adam Israelcc14dd72017-06-28 14:31:45 -0400449
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400450 list volumes {
451 key "name";
velandy88a64f12017-06-07 23:32:49 -0400452
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400453 leaf name {
454 description "Name of the disk-volumes, e.g. vda, vdb etc";
455 type string;
456 }
457
458 leaf volume-id {
459 description "VIM assigned volume id";
460 type string;
461 }
462
463 uses manotypes:volume-info;
velandy88a64f12017-06-07 23:32:49 -0400464 }
465
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400466 list internal-connection-point {
467 key "id";
468 description
velandy88a64f12017-06-07 23:32:49 -0400469 "List for internal connection points. Each VNFC
470 has zero or more internal connection points.
471 Internal connection points are used for connecting
472 the VNF components internal to the VNF. If a VNF
473 has only one VNFC, it may not have any internal
474 connection points.";
475
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400476 uses vnfd-base:common-connection-point;
velandy88a64f12017-06-07 23:32:49 -0400477
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400478 leaf ip-address {
479 description
velandy88a64f12017-06-07 23:32:49 -0400480 "IP address assigned to the internal connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400481 type inet:ip-address;
482 }
Rajesh989442e2017-10-08 04:13:32 +0000483
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400484 leaf mac-address {
485 description
velandy88a64f12017-06-07 23:32:49 -0400486 "MAC address assigned to the internal connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400487 // type inet:mac-address;
488 type string;
489 }
velandy88a64f12017-06-07 23:32:49 -0400490
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400491 leaf connection-point-id {
492 type string;
493 }
494
495 uses associated-virtual-cps;
496 }
497
garciadeblas0ec676d2017-12-18 18:22:27 +0100498 list interface {
velandy88a64f12017-06-07 23:32:49 -0400499 description
garciadeblas0ec676d2017-12-18 18:22:27 +0100500 "List of interfaces (internal and external) for the VNF";
501 key name;
velandy88a64f12017-06-07 23:32:49 -0400502
garciadeblas0ec676d2017-12-18 18:22:27 +0100503 leaf name {
504 description
505 "Name of the interface. Note that this
506 name has only local significance to the VDU.";
507 type string;
508 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400509
garciadeblas0ec676d2017-12-18 18:22:27 +0100510 leaf position {
511 description
512 "Explicit Position of the interface within the list";
513 type uint32;
514 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400515
garciadeblas0ec676d2017-12-18 18:22:27 +0100516 leaf type {
517 description
518 "Type of the Interface";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400519
garciadeblas0ec676d2017-12-18 18:22:27 +0100520 type vnfd-base:interface-type;
521
522 default "EXTERNAL";
523 }
524 choice connection-point-type {
525 case internal {
526 leaf internal-connection-point-ref {
527 description
528 "Leaf Ref to the particular internal connection point";
529 type leafref {
530 path "../../internal-connection-point/id";
531 }
532 }
533 }
534 case external {
535 leaf external-connection-point-ref {
536 description
537 "Leaf Ref to the particular external connection point";
538 type leafref {
539 path "../../../connection-point/name";
540 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400541 }
542 }
543 }
garciadeblas0ec676d2017-12-18 18:22:27 +0100544 uses virtual-interface;
velandy88a64f12017-06-07 23:32:49 -0400545 }
velandy88a64f12017-06-07 23:32:49 -0400546
garciadeblas0ec676d2017-12-18 18:22:27 +0100547 leaf operational-status {
Rajesh989442e2017-10-08 04:13:32 +0000548 description
549 "The operational status of the VDU
550 init : The VDU has just started.
551 vm-init-phase : The VDUs in the VNF is being created in VIM.
552 vm-alloc-pending : The VM alloc is pending in VIM
553 running : The VDU is active in VM
Adam Israelfcfb1cb2017-10-10 12:12:30 -0400554 upgrading : The VDU is being upgraded (EXPERIMENTAL)
Rajesh989442e2017-10-08 04:13:32 +0000555 terminate : The VDU is being terminated
556 vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
557 terminated : The VDU is in the terminated state.
558 failed : The VDU instantiation failed.
559 ";
560 type vdu-operational-status;
garciadeblas0ec676d2017-12-18 18:22:27 +0100561 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400562
563 uses placement-group-info;
564 }
565
566 uses manotypes:monitoring-param;
567
568 leaf operational-status {
569 description
570 "The operational status of the VNFR instance
571 pre-init : The VNF before Input Param Substitution.
572 init : The VNF has just started.
573 vl-init-phase : The internal VLs in the VNF are being instantiated.
574 vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
575 running : The VNF is in running state.
576 terminate : The VNF is being terminated.
577 vm-terminate-phase : The VMs in the VNF are being terminated.
578 vl-terminate-phase : The internal VLs in the VNF are being terminated.
579 terminated : The VNF is in the terminated state.
580 failed : The VNF instantiation failed
581 ";
Rajesh989442e2017-10-08 04:13:32 +0000582 type vnf-operational-status;
velandy88a64f12017-06-07 23:32:49 -0400583 }
velandy88a64f12017-06-07 23:32:49 -0400584
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400585 leaf config-status {
586 description
587 "The configuration status of the NS instance
velandy88a64f12017-06-07 23:32:49 -0400588 configuring: At least one of the VNFs in this instance is in configuring state
589 configured: All the VNFs in this NS instance are configured or config-not-needed state
590 ";
591
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400592 type enumeration {
593 enum configuring {
594 value 1;
595 }
596 enum configured {
597 value 2;
598 }
599 enum failed {
600 value 3;
601 }
602 enum config-not-needed {
603 value 4;
604 }
velandy88a64f12017-06-07 23:32:49 -0400605 }
606 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400607 uses placement-group-info;
velandy88a64f12017-06-07 23:32:49 -0400608
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400609 container cloud-config {
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400610 uses manotypes:cloud-config;
611 }
velandy88a64f12017-06-07 23:32:49 -0400612 }
613 }
614 }
615}