Added list of exposed services per KDU
[osm/IM.git] / models / yang / vnfd-base.yang
1 /*
2  *
3  *   Copyright 2017 RIFT.IO Inc
4  *   Copyright 2018-2020 ETSI
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
21 module vnfd-base
22 {
23   namespace "urn:etsi:osm:yang: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;
67       default true;
68     }
69   }
70
71   typedef interface-type {
72     type enumeration {
73       enum INTERNAL;
74       enum EXTERNAL;
75     }
76   }
77
78   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
89   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              PARAVIRT        : Use the default paravirtualized interface for the VIM (virtio, vmxnet3, etc.).
99              VIRTIO          : Deprecated! Use the traditional VIRTIO interface.
100              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.
105              OM-MGMT         : Deprecated! Use PARAVIRT instead and set the VNF management interface at vnfd:mgmt-interface:cp";
106
107         type enumeration {
108           enum PARAVIRT;
109           enum OM-MGMT;
110           enum PCI-PASSTHROUGH;
111           enum SR-IOV;
112           enum VIRTIO;
113           enum E1000;
114           enum RTL8139;
115           enum PCNET;
116         }
117         default "PARAVIRT";
118       }
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
177       container vnf-configuration {
178         uses manotypes:vca-configuration;
179         uses manotypes:vca-relations;
180         uses manotypes:vca-config-access;
181       }
182
183       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
196       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
224                 "Use the ip address associated with this connection point. This cp is then considered as management.";
225             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 {
306             description "Reference to the internal connection point id";
307             type leafref {
308               path "../../../vdu/internal-connection-point/id";
309             }
310           }
311
312           leaf ip-address {
313             description "IP address of the internal connection point";
314             type inet:ip-address;
315           }
316         }
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;
355
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         }
368       }
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
389         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
399         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
422           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;
440         }
441
442         uses manotypes:image-properties;
443
444         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
463         container vdu-configuration {
464           uses manotypes:vca-configuration;
465           uses manotypes:vca-config-access;
466         }
467
468         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
492         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
553           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
561           leaf type {
562             description
563                 "Type of the Interface";
564             type interface-type;
565
566             default "EXTERNAL";
567           }
568
569           leaf mac-address {
570             description
571               "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.";
577             type string;
578           }
579
580           choice connection-point-type {
581             case internal {
582               leaf internal-connection-point-ref {
583                 description
584                   "Leaf Ref to the particular internal connection point";
585                 type leafref {
586                   path "../../internal-connection-point/id";
587                 }
588               }
589             }
590             case external {
591               leaf external-connection-point-ref {
592                 description
593                   "Leaf Ref to the particular external connection point";
594                 type leafref {
595                   path "../../../connection-point/name";
596                 }
597               }
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
617       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
680         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
712       }
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
761       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
803       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";
888               type decimal64{
889                 fraction-digits 10;
890              }
891             }
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";
904               type decimal64{
905                 fraction-digits 10;
906              }
907             }
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";
1010             container vdu-monitoring-param {
1011               leaf vdu-ref {
1012                 type leafref {
1013                   path "../../../vdu/id";
1014                 }
1015               }
1016               leaf vdu-monitoring-param-ref {
1017                 type leafref {
1018                   path "../../../vdu[id = current()/../vdu-ref]/monitoring-param/id";
1019                 }
1020               }
1021             }
1022           }
1023
1024           case vnf-metric {
1025             description "VNF-related metric (from VCA)";
1026             container vnf-metric {
1027               leaf vnf-metric-name-ref {
1028                 type leafref {
1029                   path "../../../vnf-configuration/metrics/name";
1030                 }
1031               }
1032             }
1033           }
1034
1035           case vdu-metric {
1036             description "VDU-related metric (from VCA)";
1037             container vdu-metric {
1038               leaf vdu-ref {
1039                 type leafref {
1040                   path "../../../vdu/id";
1041                 }
1042               }
1043               leaf vdu-metric-name-ref {
1044                 type leafref {
1045                   path "../../../vdu[id = current()/../vdu-ref]/vdu-configuration/metrics/name";
1046                 }
1047               }
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       }
1081
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