blob: aae9b2b551583328c6cf3939c5f9520137744548 [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 }
664 }
665
666 case juju-bundle {
667 leaf juju-bundle {
668 description
669 "Juju bundle that models the KDU, in any of the following ways:
670 - <juju-repo>/<juju-bundle>
671 - <juju-bundle folder under k8s_models folder in the package>
672 - <juju-bundle tgz file (w/ or w/o extension) under k8s_models folder in the package>
673 - <URL_where_to_fetch_juju_bundle>
674 ";
675 type string;
676 }
677 }
678 }
679
garciadeblas7c7f6822020-04-06 07:48:39 +0000680 list service {
681 description
682 "List of Kubernetes services exposed by the KDU.
683 If empty, all services are assumed to be exposed in the CP associated to the first network
684 in k8s-cluster.nets.";
685 key name;
686
687 leaf name {
688 description "Name of the Kubernetes service exposed by he KDU model";
689 type string;
690 }
691
692 leaf mgmt-service {
693 description
694 "Flag to indicate that this Kubernetes service is a mgmt service
695 to be used for KDU configuration. Defaults to false (if no present).
696 All services with mgmt-service set to true will be passed to the execution
697 environment in charge of the KDU configuration.";
698 type boolean;
699 default false;
700 }
701
702 leaf external-connection-point-ref {
703 description
704 "Leaf Ref to the particular external connection point";
705 type leafref {
706 path "../../../connection-point/name";
707 }
708 }
709
710 }
711
garciadeblas54409a22019-10-23 16:50:16 +0200712 }
713
714 container k8s-cluster {
715 leaf-list version {
716 description
717 "List of supported K8s versions.
718 The cluster where the KDUs will be deployed will have to match
719 one of these versions.";
720
721 type string;
722 }
723
724 leaf-list cni {
725 description
726 "List of supported CNI plugins.
727 The cluster where the KDUs will be deployed will have to use
728 one of these CNI plugins.";
729
730 type enumeration {
731 enum calico;
732 enum flannel;
733 enum multus;
734 }
735 }
736
737 list nets {
738 description
739 "List of required networks in the K8s cluster.
740 The cluster where the KDUs will be deployed will have to use
741 one of these CNI plugins.";
742
743 key "id";
744
745 leaf id {
746 description "Internal identifier for the K8s cluster network in this VNF";
747 type string;
748 }
749
750 leaf external-connection-point-ref {
751 description
752 "Leaf Ref to the particular external connection point";
753 type leafref {
754 path "../../../connection-point/name";
755 }
756 }
757
758 }
759 }
760
Rajesh Velandye27e0b22017-09-18 17:21:48 -0400761 list vdu-dependency {
762 description
763 "List of VDU dependencies.";
764
765 key vdu-source-ref;
766 leaf vdu-source-ref {
767 type leafref {
768 path "../../vdu/id";
769 }
770 }
771
772 leaf vdu-depends-on-ref {
773 description
774 "Reference to the VDU on which
775 the source VDU depends.";
776 type leafref {
777 path "../../vdu/id";
778 }
779 }
780 }
781
782 leaf service-function-chain {
783 description "Type of node in Service Function Chaining Architecture";
784
785 type enumeration {
786 enum UNAWARE;
787 enum CLASSIFIER;
788 enum SF;
789 enum SFF;
790 }
791 default "UNAWARE";
792 }
793
794 leaf service-function-type {
795 description
796 "Type of Service Function.
797 NOTE: This needs to map with Service Function Type in ODL to
798 support VNFFG. Service Function Type is mandatory param in ODL
799 SFC. This is temporarily set to string for ease of use";
800 type string;
801 }
802
garciadeblas8efd85e2018-04-02 17:29:08 +0200803 uses manotypes:http-endpoints;
804
805 list scaling-group-descriptor {
806 description
807 "scaling group descriptor within the VNF.
808 The scaling group defines a group of VDUs,
809 and the ratio of VDUs in the VNF
810 that is used as target for scaling action";
811
812 key "name";
813
814 leaf name {
815 description "Name of this scaling group.";
816 type string;
817 }
818
819 list scaling-policy {
820
821 key "name";
822
823 leaf name {
824 description
825 "Name of the scaling policy";
826 type string;
827 }
828
829 leaf scaling-type {
830 description
831 "Type of scaling";
832 type manotypes:scaling-policy-type;
833 }
834
835 leaf enabled {
836 description
837 "Specifies if the scaling policy can be applied";
838 type boolean;
839 default true;
840 }
841
842 leaf scale-in-operation-type {
843 description
844 "Operation to be applied to check between scaling criterias to
845 check if the scale in threshold condition has been met.
846 Defaults to AND";
847 type manotypes:scaling-criteria-operation;
848 default AND;
849 }
850
851 leaf scale-out-operation-type {
852 description
853 "Operation to be applied to check between scaling criterias to
854 check if the scale out threshold condition has been met.
855 Defauls to OR";
856 type manotypes:scaling-criteria-operation;
857 default OR;
858 }
859
860 leaf threshold-time {
861 description
862 "The duration for which the criteria must hold true";
863 type uint32;
864 mandatory true;
865 }
866
867 leaf cooldown-time {
868 description
869 "The duration after a scaling-in/scaling-out action has been
870 triggered, for which there will be no further optional";
871 type uint32;
872 mandatory true;
873 }
874
875 list scaling-criteria {
876 description
877 "list of conditions to be met for generating scaling
878 requests";
879 key "name";
880
881 leaf name {
882 type string;
883 }
884
885 leaf scale-in-threshold {
886 description
887 "Value below which scale-in requests are generated";
vijay.r64a85fd2019-01-23 16:32:10 +0530888 type decimal64{
889 fraction-digits 10;
890 }
garciadeblas8efd85e2018-04-02 17:29:08 +0200891 }
892
893 leaf scale-in-relational-operation {
894 description
895 "The relational operator used to compare the monitoring param
896 against the scale-in-threshold.";
897 type manotypes:relational-operation-type;
898 default LE;
899 }
900
901 leaf scale-out-threshold {
902 description
903 "Value above which scale-out requests are generated";
vijay.r64a85fd2019-01-23 16:32:10 +0530904 type decimal64{
905 fraction-digits 10;
906 }
garciadeblas8efd85e2018-04-02 17:29:08 +0200907 }
908
909 leaf scale-out-relational-operation {
910 description
911 "The relational operator used to compare the monitoring param
912 against the scale-out-threshold.";
913 type manotypes:relational-operation-type;
914 default GE;
915 }
916
917 leaf vnf-monitoring-param-ref {
918 description
919 "Reference to the VNF level monitoring parameter
920 that is aggregated";
921 type leafref {
922 path "../../../../monitoring-param/id";
923 }
924 }
925 }
926 }
927
928 list vdu {
929 description "List of VDUs in this scaling group";
930 key "vdu-id-ref";
931
932 leaf vdu-id-ref {
933 description "Reference to the VDU id";
934 type leafref {
935 path "../../../vdu/id";
936 }
937 }
938
939 leaf count {
940 description
941 "count of this VDU id within this scaling group.
942 The count allows to define the number of instances
943 when a scaling action targets this scaling group";
944 type uint32;
945 default 1;
946 }
947 }
948
949 leaf min-instance-count {
950 description
951 "Minimum instances of the scaling group which are allowed.
952 These instances are created by default when the network service
953 is instantiated.";
954 type uint32;
955 default 0;
956 }
957
958 leaf max-instance-count {
959 description
960 "Maximum instances of this scaling group that are allowed
961 in a single network service. The network service scaling
962 will fail, when the number of service group instances
963 exceed the max-instance-count specified.";
964 type uint32;
965 default 10;
966 }
967
968 list scaling-config-action {
969 description "List of scaling config actions";
970 key "trigger";
971
972 leaf trigger {
973 description "scaling trigger";
974 type manotypes:scaling-trigger;
975 }
976
977 leaf vnf-config-primitive-name-ref {
978 description "Reference to the VNF config primitive";
979 type leafref {
980 path "../../../vnf-configuration/config-primitive/name";
981 }
982 }
983 }
984 }
985
986 list monitoring-param {
987 description
988 "List of monitoring parameters at the network service level";
989 key id;
990 leaf id {
991 type string;
992 }
993
994 leaf name {
995 type string;
996 }
997
998 uses manotypes:monitoring-param-aggregation;
999
1000 choice monitoring-type {
1001 description
1002 "Defines the type of monitoring param to be used:
1003 * vdu-monitorin-param: VDU-related metric (from NFVI)
1004 * vnf-metric: VNF-related metric (from VCA)
1005 * vdu-metric: VDU-related metric (from VCA)
1006 ";
1007
1008 case vdu-monitoring-param {
1009 description "VDU-related metric from the infrastructure";
garciadeblas18e4ca52018-06-12 15:42:01 +02001010 container vdu-monitoring-param {
1011 leaf vdu-ref {
1012 type leafref {
1013 path "../../../vdu/id";
1014 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001015 }
garciadeblas18e4ca52018-06-12 15:42:01 +02001016 leaf vdu-monitoring-param-ref {
1017 type leafref {
1018 path "../../../vdu[id = current()/../vdu-ref]/monitoring-param/id";
1019 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001020 }
1021 }
1022 }
1023
1024 case vnf-metric {
1025 description "VNF-related metric (from VCA)";
garciadeblas18e4ca52018-06-12 15:42:01 +02001026 container vnf-metric {
1027 leaf vnf-metric-name-ref {
1028 type leafref {
1029 path "../../../vnf-configuration/metrics/name";
1030 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001031 }
1032 }
1033 }
1034
1035 case vdu-metric {
1036 description "VDU-related metric (from VCA)";
garciadeblas18e4ca52018-06-12 15:42:01 +02001037 container vdu-metric {
1038 leaf vdu-ref {
1039 type leafref {
1040 path "../../../vdu/id";
1041 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001042 }
garciadeblas18e4ca52018-06-12 15:42:01 +02001043 leaf vdu-metric-name-ref {
1044 type leafref {
1045 path "../../../vdu[id = current()/../vdu-ref]/vdu-configuration/metrics/name";
1046 }
garciadeblas8efd85e2018-04-02 17:29:08 +02001047 }
1048 }
1049 }
1050
1051 }
1052
1053 leaf http-endpoint-ref {
1054 type leafref {
1055 path "../../http-endpoint/path";
1056 }
1057 }
1058
1059 leaf json-query-method {
1060 type manotypes:json-query-method;
1061 default "NAMEKEY";
1062 }
1063
1064 container json-query-params {
1065 leaf json-path {
1066 description
1067 "The jsonpath to use to extract value from JSON structure";
1068 type string;
1069 }
1070 leaf object-path {
1071 description
1072 "The objectpath to use to extract value from JSON structure";
1073 type string;
1074 }
1075 }
1076
1077 uses manotypes:monitoring-param-ui-data;
1078 uses manotypes:monitoring-param-value;
1079
1080 }
Rajesh Velandye27e0b22017-09-18 17:21:48 -04001081
1082 list placement-groups {
1083 description "List of placement groups at VNF level";
1084
1085 key "name";
1086 uses manotypes:placement-group-info;
1087
1088 list member-vdus {
1089
1090 description
1091 "List of VDUs that are part of this placement group";
1092 key "member-vdu-ref";
1093
1094 leaf member-vdu-ref {
1095 type leafref {
1096 path "../../../vdu/id";
1097 }
1098 }
1099 }
1100 }
1101 }
1102}
1103
1104// vim: sw=2