blob: 1fd229583b68693ba4835a2078c80c88d7d701ae [file] [log] [blame]
Rajesh Velandye27e0b22017-09-18 17:21:48 -04001
2/*
3 *
4 * Copyright 2017 RIFT.IO Inc
5 *
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 vnfd-base
22{
23 namespace "http://riftio.com/ns/riftware-1.0/vnfd-base";
24 prefix "vnfd-base";
25
26 import mano-types {
27 prefix "manotypes";
28 }
29
30 import ietf-inet-types {
31 prefix "inet";
32 }
33
34 revision 2017-02-28 {
35 description
36 "Initial revision. This YANG file defines
37 the common types for Virtual Network Function
38 (VNF) descriptor";
39 reference
40 "Derived from earlier versions of base YANG files";
41 }
42
43 grouping common-connection-point {
44 leaf name {
45 description "Name of the connection point";
46 type string;
47 }
48
49 leaf id {
50 description "Identifier for the internal connection points";
51 type string;
52 }
53
54 leaf short-name {
55 description "Short name to appear as label in the UI";
56 type string;
57 }
58
59 leaf type {
60 description "Type of the connection point.";
61 type manotypes:connection-point-type;
62 }
63
64 leaf port-security-enabled {
65 description "Enables the port security for the port";
66 type boolean;
tiernod4f15a72017-10-14 14:28:30 +020067 default true;
Rajesh Velandye27e0b22017-09-18 17:21:48 -040068 }
69 }
70
71 typedef interface-type {
72 type enumeration {
73 enum INTERNAL;
74 enum EXTERNAL;
75 }
76 }
77
Adam Israelfcfb1cb2017-10-10 12:12:30 -040078 typedef vnf-operational-status {
79 type enumeration {
80 enum init;
81 enum running;
82 enum upgrading;
83 enum terminate;
84 enum terminated;
85 enum failed;
86 }
87 }
88
Rajesh Velandye27e0b22017-09-18 17:21:48 -040089 grouping virtual-interface {
90 container virtual-interface {
91 description
92 "Container for the virtual interface properties";
93
94 leaf type {
95 description
96 "Specifies the type of virtual interface
97 between VM and host.
98 VIRTIO : Use the traditional VIRTIO interface.
99 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
100 SR-IOV : Use SR-IOV interface.
101 E1000 : Emulate E1000 interface.
102 RTL8139 : Emulate RTL8139 interface.
103 PCNET : Emulate PCNET interface.
104 OM-MGMT : Used to specify openmano mgmt external-connection type";
105
106 type enumeration {
107 enum OM-MGMT;
108 enum PCI-PASSTHROUGH;
109 enum SR-IOV;
110 enum VIRTIO;
111 enum E1000;
112 enum RTL8139;
113 enum PCNET;
114 }
115 default "VIRTIO";
116 }
117
118 leaf vpci {
119 description
120 "Specifies the virtual PCI address. Expressed in
121 the following format dddd:dd:dd.d. For example
122 0000:00:12.0. This information can be used to
123 pass as metadata during the VM creation.";
124 type string;
125 }
126
127 leaf bandwidth {
128 description
129 "Aggregate bandwidth of the NIC.";
130 type uint64;
131 }
132 }
133 }
134
135 grouping vnfd-descriptor {
136 leaf id {
137 description "Identifier for the VNFD.";
138 type string {
139 length "1..63";
140 }
141 }
142
143 leaf name {
144 description "VNFD name.";
145 mandatory true;
146 type string;
147 }
148
149 leaf short-name {
150 description "Short name to appear as label in the UI";
151 type string;
152 }
153
154 leaf vendor {
155 description "Vendor of the VNFD.";
156 type string;
157 }
158
159 leaf logo {
160 description
161 "Vendor logo for the Virtual Network Function";
162 type string;
163 }
164
165 leaf description {
166 description "Description of the VNFD.";
167 type string;
168 }
169
170 leaf version {
171 description "Version of the VNFD";
172 type string;
173 }
174
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000175 container vnf-configuration {
176 uses manotypes:vca-configuration;
177 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400178
Adam Israelfcfb1cb2017-10-10 12:12:30 -0400179 leaf operational-status {
180 description
181 "The operational status of the VNF
182 init : The VNF has just started.
183 running : The VNF is active in VM
184 upgrading : The VNF is being upgraded (EXPERIMENTAL)
185 terminate : The VNF is being terminated
186 terminated : The VNF is in the terminated state.
187 failed : The VNF instantiation failed.
188 ";
189 type vnf-operational-status;
190 }
191
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400192 container mgmt-interface {
193 description
194 "Interface over which the VNF is managed.";
195
196 choice endpoint-type {
197 description
198 "Indicates the type of management endpoint.";
199
200 case ip {
201 description
202 "Specifies the static IP address for managing the VNF.";
203 leaf ip-address {
204 type inet:ip-address;
205 }
206 }
207
208 case vdu-id {
209 description
210 "Use the default management interface on this VDU.";
211 leaf vdu-id {
212 type leafref {
213 path "../../vdu/id";
214 }
215 }
216 }
217
218 case cp {
219 description
220 "Use the ip address associated with this connection point.";
221 leaf cp {
222 type leafref {
223 path "../../connection-point/name";
224 }
225 }
226 }
227 }
228
229 leaf port {
230 description
231 "Port for the management interface.";
232 type inet:port-number;
233 }
234
235 container dashboard-params {
236 description "Parameters for the VNF dashboard";
237
238 leaf path {
239 description "The HTTP path for the dashboard";
240 type string;
241 }
242
243 leaf https {
244 description "Pick HTTPS instead of HTTP , Default is false";
245 type boolean;
246 }
247
248 leaf port {
249 description "The HTTP port for the dashboard";
250 type inet:port-number;
251 }
252 }
253 }
254
255 list internal-vld {
256 key "id";
257 description
258 "List of Internal Virtual Link Descriptors (VLD).
259 The internal VLD describes the basic topology of
260 the connectivity such as E-LAN, E-Line, E-Tree.
261 between internal VNF components of the system.";
262
263 leaf id {
264 description "Identifier for the VLD";
265 type string;
266 }
267
268 leaf name {
269 description "Name of the internal VLD";
270 type string;
271 }
272
273 leaf short-name {
274 description "Short name to appear as label in the UI";
275 type string;
276 }
277
278 leaf description {
279 type string;
280 }
281
282 leaf type {
283 type manotypes:virtual-link-type;
284 }
285
286 leaf root-bandwidth {
287 description
288 "For ELAN this is the aggregate bandwidth.";
289 type uint64;
290 }
291
292 leaf leaf-bandwidth {
293 description
294 "For ELAN this is the bandwidth of branches.";
295 type uint64;
296 }
297
298 list internal-connection-point {
299 key "id-ref";
300 description "List of internal connection points in this VLD";
301 leaf id-ref {
302 description "reference to the internal connection point id";
303 type leafref {
304 path "../../../vdu/internal-connection-point/id";
305 }
306 }
307 }
308
309 uses manotypes:provider-network;
310 choice init-params {
311 description "Extra parameters for VLD instantiation";
312
313 case vim-network-ref {
314 leaf vim-network-name {
315 description
316 "Name of network in VIM account. This is used to indicate
317 pre-provisioned network name in cloud account.";
318 type string;
319 }
320 }
321
322 case vim-network-profile {
323 leaf ip-profile-ref {
324 description "Named reference to IP-profile object";
325 type string;
326 }
327 }
328
329 }
330 }
331
332 uses manotypes:ip-profile-list;
333
334 list connection-point {
335 key "name";
336 description
337 "List for external connection points. Each VNF has one
338 or more external connection points that connect the VNF
339 to other VNFs or to external networks. Each VNF exposes
340 connection points to the orchestrator, which can construct
341 network services by connecting the connection points
342 between different VNFs. The NFVO will use VLDs and VNFFGs
343 at the network service level to construct network services.";
344
345 uses common-connection-point;
346 }
347
348 list vdu {
349 description "List of Virtual Deployment Units";
350 key "id";
351
352 leaf id {
353 description "Unique id for the VDU";
354 type string;
355 }
356
357 leaf name {
358 description "Unique name for the VDU";
359 type string;
360 }
361
362 leaf description {
363 description "Description of the VDU.";
364 type string;
365 }
366
367 leaf count {
368 description "Number of instances of VDU";
369 type uint64;
370 }
371
372 leaf mgmt-vpci {
373 description
374 "Specifies the virtual PCI address. Expressed in
375 the following format dddd:dd:dd.d. For example
376 0000:00:12.0. This information can be used to
377 pass as metadata during the VM creation.";
378 type string;
379 }
380
381 uses manotypes:vm-flavor;
382 uses manotypes:guest-epa;
383 uses manotypes:vswitch-epa;
384 uses manotypes:hypervisor-epa;
385 uses manotypes:host-epa;
386
387 list alarm {
388 key "alarm-id";
389
390 uses manotypes:alarm;
391 }
392
393 uses manotypes:image-properties;
394
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000395 container vdu-configuration {
396 uses manotypes:vca-configuration;
397 }
398
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400399 choice cloud-init-input {
400 description
401 "Indicates how the contents of cloud-init script are provided.
402 There are 2 choices - inline or in a file";
403
404 case inline {
405 leaf cloud-init {
406 description
407 "Contents of cloud-init script, provided inline, in cloud-config format";
408 type string;
409 }
410 }
411
412 case filename {
413 leaf cloud-init-file {
414 description
415 "Name of file with contents of cloud-init script in cloud-config format";
416 type string;
417 }
418 }
419 }
420
421 uses manotypes:supplemental-boot-data;
422
423 list internal-connection-point {
424 key "id";
425 description
426 "List for internal connection points. Each VNFC
427 has zero or more internal connection points.
428 Internal connection points are used for connecting
429 the VNF with components internal to the VNF. If a VNF
430 has only one VNFC, it may not have any internal
431 connection points.";
432
433 uses common-connection-point;
434
435 leaf internal-vld-ref {
436 type leafref {
437 path "../../../internal-vld/id";
438 }
439 }
440 }
441
442 list interface {
443 description
444 "List of Interfaces (external and internal) for the VNF";
445 key name;
446
447 leaf name {
448 description
449 "Name of the interface. Note that this
450 name has only local significance to the VDU.";
451 type string;
452 }
453
454 leaf position {
455 description
456 "Explicit Position of the interface within the list";
457 type uint32;
458 }
459
460 leaf type {
461 description
462 "Type of the Interface";
463 type interface-type;
464
465 default "EXTERNAL";
466 }
467
468 choice connection-point-type {
469 case internal {
470 leaf internal-connection-point-ref {
471 description
472 "Leaf Ref to the particular internal connection point";
473 type leafref {
474 path "../../internal-connection-point/id";
475 }
476 }
477 }
478 case external {
479 leaf external-connection-point-ref {
480 description
481 "Leaf Ref to the particular external connection point";
482 type leafref {
483 path "../../../connection-point/name";
484 }
485 }
486 }
487 }
488
489 uses virtual-interface;
490 }
491
492
493 list volumes {
494 key "name";
495
496 leaf name {
497 description "Name of the disk-volumes, e.g. vda, vdb etc";
498 type string;
499 }
500
501 uses manotypes:volume-info;
502 }
503 }
504
505 list vdu-dependency {
506 description
507 "List of VDU dependencies.";
508
509 key vdu-source-ref;
510 leaf vdu-source-ref {
511 type leafref {
512 path "../../vdu/id";
513 }
514 }
515
516 leaf vdu-depends-on-ref {
517 description
518 "Reference to the VDU on which
519 the source VDU depends.";
520 type leafref {
521 path "../../vdu/id";
522 }
523 }
524 }
525
526 leaf service-function-chain {
527 description "Type of node in Service Function Chaining Architecture";
528
529 type enumeration {
530 enum UNAWARE;
531 enum CLASSIFIER;
532 enum SF;
533 enum SFF;
534 }
535 default "UNAWARE";
536 }
537
538 leaf service-function-type {
539 description
540 "Type of Service Function.
541 NOTE: This needs to map with Service Function Type in ODL to
542 support VNFFG. Service Function Type is mandatory param in ODL
543 SFC. This is temporarily set to string for ease of use";
544 type string;
545 }
546
547 uses manotypes:monitoring-param;
548
549 list placement-groups {
550 description "List of placement groups at VNF level";
551
552 key "name";
553 uses manotypes:placement-group-info;
554
555 list member-vdus {
556
557 description
558 "List of VDUs that are part of this placement group";
559 key "member-vdu-ref";
560
561 leaf member-vdu-ref {
562 type leafref {
563 path "../../../vdu/id";
564 }
565 }
566 }
567 }
568 }
569}
570
571// vim: sw=2