blob: ffeaf4b519b1f0cccadb2e3b5aa0e9b20ee3e7c4 [file] [log] [blame]
Rajesh Velandye27e0b22017-09-18 17:21:48 -04001/*
2 *
3 * Copyright 2017 RIFT.IO Inc
garciadeblas7c7f6822020-04-06 07:48:39 +00004 * Copyright 2018-2020 ETSI
Rajesh Velandye27e0b22017-09-18 17:21:48 -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 vnfd-base
22{
garciadeblasc038a8d2019-04-03 13:35:27 +020023 namespace "urn:etsi:osm:yang:vnfd-base";
Rajesh Velandye27e0b22017-09-18 17:21:48 -040024 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 {
garciadeblas0ec676d2017-12-18 18:22:27 +010065 description "Enables the port security for the port.";
Rajesh Velandye27e0b22017-09-18 17:21:48 -040066 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.
garciadeblasc0a20492018-10-11 16:26:04 +020098 PARAVIRT : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
99 VIRTIO : Deprecated! Use the traditional VIRTIO interface.
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400100 PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
101 SR-IOV : Use SR-IOV interface.
102 E1000 : Emulate E1000 interface.
103 RTL8139 : Emulate RTL8139 interface.
104 PCNET : Emulate PCNET interface.
garciadeblasc0a20492018-10-11 16:26:04 +0200105 OM-MGMT : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400106
107 type enumeration {
garciadeblasc0a20492018-10-11 16:26:04 +0200108 enum PARAVIRT;
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400109 enum OM-MGMT;
110 enum PCI-PASSTHROUGH;
111 enum SR-IOV;
112 enum VIRTIO;
113 enum E1000;
114 enum RTL8139;
115 enum PCNET;
116 }
garciadeblasc0a20492018-10-11 16:26:04 +0200117 default "PARAVIRT";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400118 }
119
120 leaf vpci {
121 description
122 "Specifies the virtual PCI address. Expressed in
123 the following format dddd:dd:dd.d. For example
124 0000:00:12.0. This information can be used to
125 pass as metadata during the VM creation.";
126 type string;
127 }
128
129 leaf bandwidth {
130 description
131 "Aggregate bandwidth of the NIC.";
132 type uint64;
133 }
134 }
135 }
136
137 grouping vnfd-descriptor {
138 leaf id {
139 description "Identifier for the VNFD.";
140 type string {
141 length "1..63";
142 }
143 }
144
145 leaf name {
146 description "VNFD name.";
147 mandatory true;
148 type string;
149 }
150
151 leaf short-name {
152 description "Short name to appear as label in the UI";
153 type string;
154 }
155
156 leaf vendor {
157 description "Vendor of the VNFD.";
158 type string;
159 }
160
161 leaf logo {
162 description
163 "Vendor logo for the Virtual Network Function";
164 type string;
165 }
166
167 leaf description {
168 description "Description of the VNFD.";
169 type string;
170 }
171
172 leaf version {
173 description "Version of the VNFD";
174 type string;
175 }
176
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000177 container vnf-configuration {
178 uses manotypes:vca-configuration;
garciadeblasd13a7492019-10-08 15:55:16 +0200179 uses manotypes:vca-relations;
garciadeblasc9004902019-05-24 15:56:30 +0200180 uses manotypes:vca-config-access;
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000181 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400182
Adam Israelfcfb1cb2017-10-10 12:12:30 -0400183 leaf operational-status {
184 description
185 "The operational status of the VNF
186 init : The VNF has just started.
187 running : The VNF is active in VM
188 upgrading : The VNF is being upgraded (EXPERIMENTAL)
189 terminate : The VNF is being terminated
190 terminated : The VNF is in the terminated state.
191 failed : The VNF instantiation failed.
192 ";
193 type vnf-operational-status;
194 }
195
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400196 container mgmt-interface {
197 description
198 "Interface over which the VNF is managed.";
199
200 choice endpoint-type {
201 description
202 "Indicates the type of management endpoint.";
203
204 case ip {
205 description
206 "Specifies the static IP address for managing the VNF.";
207 leaf ip-address {
208 type inet:ip-address;
209 }
210 }
211
212 case vdu-id {
213 description
214 "Use the default management interface on this VDU.";
215 leaf vdu-id {
216 type leafref {
217 path "../../vdu/id";
218 }
219 }
220 }
221
222 case cp {
223 description
tierno19a20de2017-11-03 16:29:05 +0100224 "Use the ip address associated with this connection point. This cp is then considered as management.";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400225 leaf cp {
226 type leafref {
227 path "../../connection-point/name";
228 }
229 }
230 }
231 }
232
233 leaf port {
234 description
235 "Port for the management interface.";
236 type inet:port-number;
237 }
238
239 container dashboard-params {
240 description "Parameters for the VNF dashboard";
241
242 leaf path {
243 description "The HTTP path for the dashboard";
244 type string;
245 }
246
247 leaf https {
248 description "Pick HTTPS instead of HTTP , Default is false";
249 type boolean;
250 }
251
252 leaf port {
253 description "The HTTP port for the dashboard";
254 type inet:port-number;
255 }
256 }
257 }
258
259 list internal-vld {
260 key "id";
261 description
262 "List of Internal Virtual Link Descriptors (VLD).
263 The internal VLD describes the basic topology of
264 the connectivity such as E-LAN, E-Line, E-Tree.
265 between internal VNF components of the system.";
266
267 leaf id {
268 description "Identifier for the VLD";
269 type string;
270 }
271
272 leaf name {
273 description "Name of the internal VLD";
274 type string;
275 }
276
277 leaf short-name {
278 description "Short name to appear as label in the UI";
279 type string;
280 }
281
282 leaf description {
283 type string;
284 }
285
286 leaf type {
287 type manotypes:virtual-link-type;
288 }
289
290 leaf root-bandwidth {
291 description
292 "For ELAN this is the aggregate bandwidth.";
293 type uint64;
294 }
295
296 leaf leaf-bandwidth {
297 description
298 "For ELAN this is the bandwidth of branches.";
299 type uint64;
300 }
301
302 list internal-connection-point {
303 key "id-ref";
304 description "List of internal connection points in this VLD";
305 leaf id-ref {
garciadeblas0ec676d2017-12-18 18:22:27 +0100306 description "Reference to the internal connection point id";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400307 type leafref {
308 path "../../../vdu/internal-connection-point/id";
309 }
310 }
garciadeblas0ec676d2017-12-18 18:22:27 +0100311
garciadeblas1edb98c2017-12-05 13:47:09 +0100312 leaf ip-address {
313 description "IP address of the internal connection point";
314 type inet:ip-address;
315 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400316 }
317
318 uses manotypes:provider-network;
319 choice init-params {
320 description "Extra parameters for VLD instantiation";
321
322 case vim-network-ref {
323 leaf vim-network-name {
324 description
325 "Name of network in VIM account. This is used to indicate
326 pre-provisioned network name in cloud account.";
327 type string;
328 }
329 }
330
331 case vim-network-profile {
332 leaf ip-profile-ref {
333 description "Named reference to IP-profile object";
334 type string;
335 }
336 }
337
338 }
339 }
340
341 uses manotypes:ip-profile-list;
342
343 list connection-point {
344 key "name";
345 description
346 "List for external connection points. Each VNF has one
347 or more external connection points that connect the VNF
348 to other VNFs or to external networks. Each VNF exposes
349 connection points to the orchestrator, which can construct
350 network services by connecting the connection points
351 between different VNFs. The NFVO will use VLDs and VNFFGs
352 at the network service level to construct network services.";
353
354 uses common-connection-point;
garciadeblasa75e0bb2017-12-12 13:33:33 +0100355
356 leaf internal-vld-ref {
357 description
358 "Reference to an internal VLD of the VNF. This field is
359 optional. It allows exposing an internal VLD through a
360 connection point. When building a NS, this VNF CP might be
361 connected to a NS VLD, then both VLDs (the i-VLD of the VNF and the
362 VLD of the NS) will become the same network and the IP profile will
363 be the one configured at NS level.";
364 type leafref {
365 path "../../internal-vld/id";
366 }
367 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400368 }
369
370 list vdu {
371 description "List of Virtual Deployment Units";
372 key "id";
373
374 leaf id {
375 description "Unique id for the VDU";
376 type string;
377 }
378
379 leaf name {
380 description "Unique name for the VDU";
381 type string;
382 }
383
384 leaf description {
385 description "Description of the VDU.";
386 type string;
387 }
388
garciadeblas0ec676d2017-12-18 18:22:27 +0100389 leaf pdu-type {
390 description
391 "Type of PDU. If this field exists, the deployment unit must be
392 understood as a PDU, not as a VDU. This field is used to identify
393 the category of PDU instances to be used at instantiation time. For
394 the instantiation to be successful, there must be available
395 PDU instances of this type in the selected datacenter.";
396 type string;
397 }
398
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400399 leaf count {
400 description "Number of instances of VDU";
401 type uint64;
402 }
403
404 leaf mgmt-vpci {
405 description
406 "Specifies the virtual PCI address. Expressed in
407 the following format dddd:dd:dd.d. For example
408 0000:00:12.0. This information can be used to
409 pass as metadata during the VM creation.";
410 type string;
411 }
412
413 uses manotypes:vm-flavor;
414 uses manotypes:guest-epa;
415 uses manotypes:vswitch-epa;
416 uses manotypes:hypervisor-epa;
417 uses manotypes:host-epa;
418
419 list alarm {
420 key "alarm-id";
421
Benjamin Diaz46dfea52019-03-20 14:42:53 -0300422 leaf alarm-id {
423 description
424 "This field is reserved for the identifier assigned by the VIM provider";
425
426 type string;
427 }
428
429
430 leaf vnf-monitoring-param-ref {
431 description
432 "Reference to the VNF level monitoring parameter
433 that is aggregated";
434 type leafref {
435 path "../../monitoring-param/id";
436 }
437 }
438
439 uses manotypes:alarm-properties;
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400440 }
441
442 uses manotypes:image-properties;
443
garciadeblase304a4d2017-12-05 12:30:17 +0100444 list alternative-images {
445 key "vim-type";
446 description
447 "List of alternative images per VIM type.
448 Different images can be used for specific types of VIMs instead
449 of the default image. This allows deployments in sites where the
450 image identifier in the VIM is given by the VIM provider and
451 cannot be modified.
452 If an alternative image is specified for a VIM type, it will prevail
453 over the default image";
454
455 leaf vim-type {
456 description "VIM type: openvim, openstack, vmware, aws, etc.";
457 type string;
458 }
459
460 uses manotypes:image-properties;
461 }
462
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000463 container vdu-configuration {
464 uses manotypes:vca-configuration;
garciadeblasc9004902019-05-24 15:56:30 +0200465 uses manotypes:vca-config-access;
Rajesh Velandyce30ffe2017-09-25 15:15:25 +0000466 }
467
garciadeblas8efd85e2018-04-02 17:29:08 +0200468 list monitoring-param {
469 description
470 "List of VDU-related monitoring parameters at NFVI level";
471 key id;
472 leaf id {
473 description "The unique id of the monitoring param at VDU level";
474 type string;
475 }
476
477 leaf nfvi-metric {
478 description "The associated NFVI metric to be monitored";
479 type manotypes:nfvi-metric-type;
480 }
481
482 leaf interface-name-ref {
483 description
484 "Reference to a VDU interface name. Applicable only when the nfvi-metric
485 refers to an interface and not to the VM";
486 type leafref {
487 path "../../interface/name";
488 }
489 }
490 }
491
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400492 choice cloud-init-input {
493 description
494 "Indicates how the contents of cloud-init script are provided.
495 There are 2 choices - inline or in a file";
496
497 case inline {
498 leaf cloud-init {
499 description
500 "Contents of cloud-init script, provided inline, in cloud-config format";
501 type string;
502 }
503 }
504
505 case filename {
506 leaf cloud-init-file {
507 description
508 "Name of file with contents of cloud-init script in cloud-config format";
509 type string;
510 }
511 }
512 }
513
514 uses manotypes:supplemental-boot-data;
515
516 list internal-connection-point {
517 key "id";
518 description
519 "List for internal connection points. Each VNFC
520 has zero or more internal connection points.
521 Internal connection points are used for connecting
522 the VNF with components internal to the VNF. If a VNF
523 has only one VNFC, it may not have any internal
524 connection points.";
525
526 uses common-connection-point;
527
528 leaf internal-vld-ref {
529 type leafref {
530 path "../../../internal-vld/id";
531 }
532 }
533 }
534
535 list interface {
536 description
537 "List of Interfaces (external and internal) for the VNF";
538 key name;
539
540 leaf name {
541 description
542 "Name of the interface. Note that this
543 name has only local significance to the VDU.";
544 type string;
545 }
546
547 leaf position {
548 description
549 "Explicit Position of the interface within the list";
550 type uint32;
551 }
552
garciadeblas0f6bb772018-04-13 00:58:00 +0200553 leaf mgmt-interface {
554 description
555 "Flag to indicate that this is the mgmt interface
556 to be used for VDU configuration";
557 type boolean;
558 default false;
559 }
560
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400561 leaf type {
562 description
563 "Type of the Interface";
564 type interface-type;
565
566 default "EXTERNAL";
567 }
568
garciadeblas98048d22017-12-05 10:30:26 +0100569 leaf mac-address {
570 description
garciadeblas2320b252019-10-23 16:56:01 +0200571 "MAC address of the interface.
572 Some VNFs require a specific MAC address to be configured
573 in the interface. While this is not recommended at all in
574 NFV environments, this parameter exists to allow those
575 scenarios.
576 This parameter will be likely deprecated in the future.";
garciadeblas98048d22017-12-05 10:30:26 +0100577 type string;
578 }
579
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400580 choice connection-point-type {
581 case internal {
582 leaf internal-connection-point-ref {
583 description
garciadeblas2320b252019-10-23 16:56:01 +0200584 "Leaf Ref to the particular internal connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400585 type leafref {
garciadeblas2320b252019-10-23 16:56:01 +0200586 path "../../internal-connection-point/id";
587 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400588 }
589 }
590 case external {
591 leaf external-connection-point-ref {
592 description
garciadeblas2320b252019-10-23 16:56:01 +0200593 "Leaf Ref to the particular external connection point";
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400594 type leafref {
garciadeblas2320b252019-10-23 16:56:01 +0200595 path "../../../connection-point/name";
596 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400597 }
598 }
599 }
600
601 uses virtual-interface;
602 }
603
604
605 list volumes {
606 key "name";
607
608 leaf name {
609 description "Name of the disk-volumes, e.g. vda, vdb etc";
610 type string;
611 }
612
613 uses manotypes:volume-info;
614 }
615 }
616
garciadeblas54409a22019-10-23 16:50:16 +0200617 list kdu {
618 description "List of K8s Deployment Units";
619 key "name";
620
621 leaf name {
622 description "Unique name for the KDU";
623 type string;
624 }
625
626 leaf description {
627 description "Description of the KDU.";
628 type string;
629 }
630
631 container kdu-configuration {
632 uses manotypes:vca-configuration;
633 uses manotypes:vca-config-access;
634
635 leaf-list blacklist-config-primitive {
636 description
637 "List of blacklisted config primitives from the list of
638 default kdu config primitives";
639
640 type enumeration {
641 enum upgrade;
642 enum rollback;
643 }
644
645 }
646
647 }
648
649 choice kdu-model {
650 description
651 "Indicates the KDU model, either as a helm-chart or as a juju-bundle.";
652
653 case helm-chart {
654 leaf helm-chart {
655 description
656 "Helm chart that models the KDU, in any of the following ways:
657 - <helm-repo>/<helm-chart>
658 - <helm-chart folder under k8s_models folder in the package>
659 - <helm-chart tgz file (w/ or w/o extension) under k8s_models folder in the package>
660 - <URL_where_to_fetch_chart>
661 ";
662 type string;
663 }
tierno38b3b7a2020-10-26 10:37:29 +0000664 leaf helm-version {
665 description
666 "Helm version to use for this helm-chart, v3 by default";
667 type enumeration {
668 enum "v2";
669 enum "v3";
670 }
671 default "v3";
672 }
garciadeblas54409a22019-10-23 16:50:16 +0200673 }
674
675 case juju-bundle {
676 leaf juju-bundle {
677 description
678 "Juju bundle that models the KDU, in any of the following ways:
679 - <juju-repo>/<juju-bundle>
680 - <juju-bundle folder under k8s_models folder in the package>
681 - <juju-bundle tgz file (w/ or w/o extension) under k8s_models folder in the package>
682 - <URL_where_to_fetch_juju_bundle>
683 ";
684 type string;
685 }
686 }
687 }
688
garciadeblas7c7f6822020-04-06 07:48:39 +0000689 list service {
690 description
691 "List of Kubernetes services exposed by the KDU.
692 If empty, all services are assumed to be exposed in the CP associated to the first network
693 in k8s-cluster.nets.";
694 key name;
695
696 leaf name {
697 description "Name of the Kubernetes service exposed by he KDU model";
698 type string;
699 }
700
701 leaf mgmt-service {
702 description
703 "Flag to indicate that this Kubernetes service is a mgmt service
704 to be used for KDU configuration. Defaults to false (if no present).
705 All services with mgmt-service set to true will be passed to the execution
706 environment in charge of the KDU configuration.";
707 type boolean;
708 default false;
709 }
710
711 leaf external-connection-point-ref {
712 description
713 "Leaf Ref to the particular external connection point";
714 type leafref {
715 path "../../../connection-point/name";
716 }
717 }
718
719 }
720
garciadeblas54409a22019-10-23 16:50:16 +0200721 }
722
723 container k8s-cluster {
724 leaf-list version {
725 description
726 "List of supported K8s versions.
727 The cluster where the KDUs will be deployed will have to match
728 one of these versions.";
729
730 type string;
731 }
732
733 leaf-list cni {
734 description
735 "List of supported CNI plugins.
736 The cluster where the KDUs will be deployed will have to use
737 one of these CNI plugins.";
738
739 type enumeration {
740 enum calico;
741 enum flannel;
742 enum multus;
743 }
744 }
745
746 list nets {
747 description
748 "List of required networks in the K8s cluster.
749 The cluster where the KDUs will be deployed will have to use
750 one of these CNI plugins.";
751
752 key "id";
753
754 leaf id {
755 description "Internal identifier for the K8s cluster network in this VNF";
756 type string;
757 }
758
759 leaf external-connection-point-ref {
760 description
761 "Leaf Ref to the particular external connection point";
762 type leafref {
763 path "../../../connection-point/name";
764 }
765 }
766
767 }
768 }
769
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400770 list vdu-dependency {
771 description
772 "List of VDU dependencies.";
773
774 key vdu-source-ref;
775 leaf vdu-source-ref {
776 type leafref {
777 path "../../vdu/id";
778 }
779 }
780
781 leaf vdu-depends-on-ref {
782 description
783 "Reference to the VDU on which
784 the source VDU depends.";
785 type leafref {
786 path "../../vdu/id";
787 }
788 }
789 }
790
791 leaf service-function-chain {
792 description "Type of node in Service Function Chaining Architecture";
793
794 type enumeration {
795 enum UNAWARE;
796 enum CLASSIFIER;
797 enum SF;
798 enum SFF;
799 }
800 default "UNAWARE";
801 }
802
803 leaf service-function-type {
804 description
805 "Type of Service Function.
806 NOTE: This needs to map with Service Function Type in ODL to
807 support VNFFG. Service Function Type is mandatory param in ODL
808 SFC. This is temporarily set to string for ease of use";
809 type string;
810 }
811
garciadeblas8efd85e2018-04-02 17:29:08 +0200812 uses manotypes:http-endpoints;
813
814 list scaling-group-descriptor {
815 description
816 "scaling group descriptor within the VNF.
817 The scaling group defines a group of VDUs,
818 and the ratio of VDUs in the VNF
819 that is used as target for scaling action";
820
821 key "name";
822
823 leaf name {
824 description "Name of this scaling group.";
825 type string;
826 }
827
828 list scaling-policy {
829
830 key "name";
831
832 leaf name {
833 description
834 "Name of the scaling policy";
835 type string;
836 }
837
838 leaf scaling-type {
839 description
840 "Type of scaling";
841 type manotypes:scaling-policy-type;
842 }
843
844 leaf enabled {
845 description
846 "Specifies if the scaling policy can be applied";
847 type boolean;
848 default true;
849 }
850
851 leaf scale-in-operation-type {
852 description
853 "Operation to be applied to check between scaling criterias to
854 check if the scale in threshold condition has been met.
855 Defaults to AND";
856 type manotypes:scaling-criteria-operation;
857 default AND;
858 }
859
860 leaf scale-out-operation-type {
861 description
862 "Operation to be applied to check between scaling criterias to
863 check if the scale out threshold condition has been met.
864 Defauls to OR";
865 type manotypes:scaling-criteria-operation;
866 default OR;
867 }
868
869 leaf threshold-time {
870 description
871 "The duration for which the criteria must hold true";
872 type uint32;
873 mandatory true;
874 }
875
876 leaf cooldown-time {
877 description
878 "The duration after a scaling-in/scaling-out action has been
879 triggered, for which there will be no further optional";
880 type uint32;
881 mandatory true;
882 }
883
884 list scaling-criteria {
885 description
886 "list of conditions to be met for generating scaling
887 requests";
888 key "name";
889
890 leaf name {
891 type string;
892 }
893
894 leaf scale-in-threshold {
895 description
896 "Value below which scale-in requests are generated";
vijay.r64a85fd2019-01-23 16:32:10 +0530897 type decimal64{
898 fraction-digits 10;
899 }
garciadeblas8efd85e2018-04-02 17:29:08 +0200900 }
901
902 leaf scale-in-relational-operation {
903 description
904 "The relational operator used to compare the monitoring param
905 against the scale-in-threshold.";
906 type manotypes:relational-operation-type;
907 default LE;
908 }
909
910 leaf scale-out-threshold {
911 description
912 "Value above which scale-out requests are generated";
vijay.r64a85fd2019-01-23 16:32:10 +0530913 type decimal64{
914 fraction-digits 10;
915 }
garciadeblas8efd85e2018-04-02 17:29:08 +0200916 }
917
918 leaf scale-out-relational-operation {
919 description
920 "The relational operator used to compare the monitoring param
921 against the scale-out-threshold.";
922 type manotypes:relational-operation-type;
923 default GE;
924 }
925
926 leaf vnf-monitoring-param-ref {
927 description
928 "Reference to the VNF level monitoring parameter
929 that is aggregated";
930 type leafref {
931 path "../../../../monitoring-param/id";
932 }
933 }
934 }
935 }
936
937 list vdu {
938 description "List of VDUs in this scaling group";
939 key "vdu-id-ref";
940
941 leaf vdu-id-ref {
942 description "Reference to the VDU id";
943 type leafref {
944 path "../../../vdu/id";
945 }
946 }
947
948 leaf count {
949 description
950 "count of this VDU id within this scaling group.
951 The count allows to define the number of instances
952 when a scaling action targets this scaling group";
953 type uint32;
954 default 1;
955 }
956 }
957
958 leaf min-instance-count {
959 description
960 "Minimum instances of the scaling group which are allowed.
961 These instances are created by default when the network service
962 is instantiated.";
963 type uint32;
964 default 0;
965 }
966
967 leaf max-instance-count {
968 description
969 "Maximum instances of this scaling group that are allowed
970 in a single network service. The network service scaling
971 will fail, when the number of service group instances
972 exceed the max-instance-count specified.";
973 type uint32;
974 default 10;
975 }
976
977 list scaling-config-action {
978 description "List of scaling config actions";
979 key "trigger";
980
981 leaf trigger {
982 description "scaling trigger";
983 type manotypes:scaling-trigger;
984 }
985
986 leaf vnf-config-primitive-name-ref {
987 description "Reference to the VNF config primitive";
988 type leafref {
989 path "../../../vnf-configuration/config-primitive/name";
990 }
991 }
992 }
993 }
994
995 list monitoring-param {
996 description
997 "List of monitoring parameters at the network service level";
998 key id;
999 leaf id {
1000 type string;
1001 }
1002
1003 leaf name {
1004 type string;
1005 }
1006
1007 uses manotypes:monitoring-param-aggregation;
1008
1009 choice monitoring-type {
1010 description
1011 "Defines the type of monitoring param to be used:
1012 * vdu-monitorin-param: VDU-related metric (from NFVI)
1013 * vnf-metric: VNF-related metric (from VCA)
1014 * vdu-metric: VDU-related metric (from VCA)
1015 ";
1016
1017 case vdu-monitoring-param {
1018 description "VDU-related metric from the infrastructure";
garciadeblas18e4ca52018-06-12 15:42:01 +02001019 container vdu-monitoring-param {
1020 leaf vdu-ref {
1021 type leafref {
1022 path "../../../vdu/id";
1023 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001024 }
garciadeblas18e4ca52018-06-12 15:42:01 +02001025 leaf vdu-monitoring-param-ref {
1026 type leafref {
1027 path "../../../vdu[id = current()/../vdu-ref]/monitoring-param/id";
1028 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001029 }
1030 }
1031 }
1032
1033 case vnf-metric {
1034 description "VNF-related metric (from VCA)";
garciadeblas18e4ca52018-06-12 15:42:01 +02001035 container vnf-metric {
1036 leaf vnf-metric-name-ref {
1037 type leafref {
1038 path "../../../vnf-configuration/metrics/name";
1039 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001040 }
1041 }
1042 }
1043
1044 case vdu-metric {
1045 description "VDU-related metric (from VCA)";
garciadeblas18e4ca52018-06-12 15:42:01 +02001046 container vdu-metric {
1047 leaf vdu-ref {
1048 type leafref {
1049 path "../../../vdu/id";
1050 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001051 }
garciadeblas18e4ca52018-06-12 15:42:01 +02001052 leaf vdu-metric-name-ref {
1053 type leafref {
1054 path "../../../vdu[id = current()/../vdu-ref]/vdu-configuration/metrics/name";
1055 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001056 }
1057 }
1058 }
1059
1060 }
1061
1062 leaf http-endpoint-ref {
1063 type leafref {
1064 path "../../http-endpoint/path";
1065 }
1066 }
1067
1068 leaf json-query-method {
1069 type manotypes:json-query-method;
1070 default "NAMEKEY";
1071 }
1072
1073 container json-query-params {
1074 leaf json-path {
1075 description
1076 "The jsonpath to use to extract value from JSON structure";
1077 type string;
1078 }
1079 leaf object-path {
1080 description
1081 "The objectpath to use to extract value from JSON structure";
1082 type string;
1083 }
1084 }
1085
1086 uses manotypes:monitoring-param-ui-data;
1087 uses manotypes:monitoring-param-value;
1088
1089 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -04001090
1091 list placement-groups {
1092 description "List of placement groups at VNF level";
1093
1094 key "name";
1095 uses manotypes:placement-group-info;
1096
1097 list member-vdus {
1098
1099 description
1100 "List of VDUs that are part of this placement group";
1101 key "member-vdu-ref";
1102
1103 leaf member-vdu-ref {
1104 type leafref {
1105 path "../../../vdu/id";
1106 }
1107 }
1108 }
1109 }
1110 }
1111}
1112
1113// vim: sw=2