Merge from OSM SO master
[osm/SO.git] / rwcal / plugins / yang / rwcal.yang
1
2 /*
3  * 
4  *   Copyright 2016-2017 RIFT.IO Inc
5  *
6  *   Licensed under the Apache License, Version 2.0 (the "License");
7  *   you may not use this file except in compliance with the License.
8  *   You may obtain a copy of the License at
9  *
10  *       http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *   Unless required by applicable law or agreed to in writing, software
13  *   distributed under the License is distributed on an "AS IS" BASIS,
14  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *   See the License for the specific language governing permissions and
16  *   limitations under the License.
17  *
18  *
19  */
20
21 module rwcal
22 {
23   namespace "http://riftio.com/ns/riftware-1.0/rwcal";
24   prefix "rwcal";
25
26   import rw-base {
27     prefix rwbase;
28   }
29
30   import rw-pb-ext {
31     prefix "rwpb";
32   }
33
34   import rw-yang-types {
35     prefix "rwt";
36   }
37
38   import rw-log {
39     prefix "rwlog";
40   }
41
42   import mano-types {
43     prefix "manotypes";
44   }
45
46   import rw-project {
47     prefix "rw-project";
48   }
49
50   revision 2017-02-08 {
51     description
52       "Update model to support projects.";
53   }
54
55   revision 2014-12-30 {
56     description
57         "Initial revision.";
58     reference
59         "RIFT RWCAL cloud data";
60   }
61
62
63   typedef connection-status {
64     description "Connection status for the cloud account";
65     type enumeration {
66       enum unknown;
67       enum validating;
68       enum success;
69       enum failure;
70     }
71   }
72
73   typedef disk-format {
74     type enumeration {
75       enum ami;
76       enum ari;
77       enum aki;
78       enum vhd;
79       enum vmdk;
80       enum raw;
81       enum qcow2;
82       enum vdi;
83       enum iso;
84     }
85   }
86
87   typedef container-format {
88     type enumeration{
89       enum ami;
90       enum ari;
91       enum aki;
92       enum bare;
93       enum ovf;
94     }
95   }
96
97   grouping connection-status {
98     container connection-status {
99       config false;
100       rwpb:msg-new CloudConnectionStatus;
101       leaf status {
102         type connection-status;
103       }
104       leaf details {
105         type string;
106       }
107     }
108   }
109
110   uses connection-status;
111
112   grouping provider-auth {
113     leaf account-type {
114       type manotypes:cloud-account-type;
115     }
116
117     choice provider-specific-info {
118       container mock {
119         leaf username {
120           type string;
121         }
122         leaf plugin-name {
123           type string;
124           default "rwcal_mock";
125         }
126         leaf dynamic-flavor-support {
127           type boolean;
128           default true;
129         }
130       }
131       container aws {
132         leaf key {
133           type string;
134         }
135
136         leaf secret {
137           type string;
138         }
139
140         leaf region {
141           type string;
142         }
143         leaf vpcid {
144           description "VPC ID to use to instantiate EC2 instances";
145           type string;
146         }
147         leaf ssh-key {
148           description "Key pair name to connect to EC2 instance";
149           type string;
150         }
151         leaf availability-zone {
152           description "Availability zone where EC2 instance should
153               be started";
154           type string;
155         }
156         leaf default-subnet-id {
157           description "Default subnet ID to create network
158               interface at instance creation time";
159           type string;
160         }
161         leaf plugin-name {
162           type string;
163           default "rwcal_aws";
164         }
165         leaf dynamic-flavor-support {
166           type boolean;
167           default true;
168         }
169       }
170
171       container openstack {
172         leaf key {
173           type string;
174           mandatory true;
175         }
176
177         leaf secret {
178           type string;
179           mandatory true;
180         }
181
182         leaf auth_url {
183           type string;
184           mandatory true;
185         }
186
187         leaf user-domain {
188           type string;
189           default "Default";
190           description "Domain of the OpenStack user";
191         }
192         leaf project-domain {
193           type string;
194           default "Default";
195           description "Domain of the OpenStack project";
196         }
197
198         leaf tenant {
199           type string;
200           mandatory true;
201         }
202
203         leaf region {
204           type string;
205           default "RegionOne";
206         }
207         
208         leaf admin {
209           type boolean;
210           default false;
211         }
212
213         leaf mgmt-network {
214           type string;
215           mandatory true;
216         }
217
218         leaf plugin-name {
219           type string;
220           default "rwcal_openstack";
221         }
222
223         leaf-list security-groups {
224           type string;
225           description "Names of the security groups for the VM";
226         }
227         
228         leaf dynamic-flavor-support {
229           type boolean;
230           default true;
231         }
232
233         leaf floating-ip-pool {
234           type string;
235           description "Name of floating IP pool to use for floating IP address assignement";
236         }
237
238         leaf cert-validate {
239           type boolean;
240           default false;
241           description "Certificate validatation policy in case of SSL/TLS connection";
242         }
243         
244       }
245
246       container openmano {
247         leaf host {
248           type string;
249           default "localhost";
250         }
251
252         leaf port {
253           type uint16;
254           default 9090;
255         }
256
257         leaf tenant-id {
258           type string {
259             length "36";
260           }
261           mandatory true;
262         }
263
264         leaf plugin-name {
265           type string;
266           default "rwcal_openmano";
267         }
268       }
269
270       container vsphere {
271         leaf username {
272           type string;
273         }
274
275         leaf password {
276           type string;
277         }
278
279         leaf url {
280           type string;
281         }
282
283         leaf plugin-name {
284           type string;
285           default "rwcal-python";
286         }
287
288         leaf dynamic-flavor-support {
289           type boolean;
290           default false;
291         }
292       }
293
294       container cloudsim {
295         leaf plugin-name {
296           type string;
297           default "rwcal_cloudsim";
298         }
299         leaf dynamic-flavor-support {
300           type boolean;
301           default true;
302         }
303       }
304
305       container cloudsim_proxy {
306         leaf host {
307           type string;
308           default "localhost";
309         }
310         leaf plugin-name {
311           type string;
312           default "rwcal_cloudsimproxy";
313         }
314         leaf dynamic-flavor-support {
315           type boolean;
316           default true;
317         }
318       }
319
320       container openvim {
321         leaf host {
322           type string;
323           mandatory true;
324         }
325         leaf port {
326           type uint16;
327           default 9080;
328         }
329         leaf tenant-name {
330           type string;
331           description "Mandatory parameter to indicate openvim tenant name";
332           mandatory true;
333         }
334         leaf mgmt-network {
335           type string;
336           mandatory true;
337         }
338         leaf plugin-name {
339           type string;
340           default "rwcal_openmano_vimconnector";
341         }
342         leaf dynamic-flavor-support {
343           type boolean;
344           default true;
345         }
346         container image-management {
347           description " Information required for OpenVim image upload operation";
348
349           leaf username {
350             description "Username for host access";
351             type string;
352           }
353           leaf password {
354             description "Password for host access";
355             type string;
356           }
357           leaf image-directory-path {
358             description "Name of the directory on the host where image needs to be copied";
359             type string;
360             default "/opt/VNF/images";
361           }
362         }
363       }
364     }
365   }
366   
367   grouping vm-info-item {
368     leaf vm-name {
369       rwpb:field-inline "true";
370       rwpb:field-string-max 255;
371       type string;
372     }
373
374     leaf vm-size {
375       rwpb:field-inline "true";
376       rwpb:field-string-max 64;
377       type string;
378     }
379
380     leaf vm-id {
381       rwpb:field-inline "true";
382       rwpb:field-string-max 64;
383       type string;
384     }
385
386     leaf flavor-id {
387       rwpb:field-inline "true";
388       rwpb:field-string-max 64;
389       type string;
390     }
391
392     leaf image-id {
393       rwpb:field-inline "true";
394       rwpb:field-string-max 64;
395       type string;
396     }
397
398     leaf state {
399       rwpb:field-inline "true";
400       rwpb:field-string-max 64;
401       type string;
402     }
403
404     leaf availability-zone {
405       rwpb:field-inline "true";
406       rwpb:field-string-max 64;
407       type string;
408     }
409
410     leaf tenant-name {
411       rwpb:field-inline "true";
412       rwpb:field-string-max 64;
413       type string;
414     }
415
416     leaf host-name {
417       rwpb:field-inline "true";
418       rwpb:field-string-max 64;
419       type string;
420     }
421
422     leaf management-ip {
423       rwpb:field-inline "true";
424       rwpb:field-string-max 64;
425       type string;
426     }
427
428     leaf public-ip {
429       rwpb:field-inline "true";
430       rwpb:field-string-max 64;
431       type string;
432     }
433
434     leaf allocate-public-address {
435       rwpb:field-inline "true";
436       description "If this VM should allocate a floating public IP address";
437       type boolean;
438       default false;
439     }
440
441     list private-ip-list {
442       key "ip-address";
443
444       leaf ip-address {
445         rwpb:field-inline "true";
446         rwpb:field-string-max 64;
447         type string;
448       }
449     }
450
451     list public-ip-list {
452       key "ip-address";
453
454       leaf ip-address {
455         rwpb:field-inline "true";
456         rwpb:field-string-max 64;
457         type string;
458       }
459     }
460
461     list port-list {
462       key "port-id";
463       leaf port-id {
464         rwpb:field-inline "true";
465         rwpb:field-string-max 64;
466         type string;
467       }
468     }
469
470     list network-list {
471       key "network-id";
472       leaf network-id {
473         rwpb:field-inline "true";
474         rwpb:field-string-max 64;
475         type string;
476       }
477     }
478
479     container cloud-init {
480       leaf userdata {
481         description
482             "The userdata field for cloud-init should contain
483              the contents of the script that cloud-init should
484              invoke when configuring the system. Note that this
485              script is expected to be in the cloud-config format";
486         type string;
487       }
488     }
489
490     container user_tags {
491
492       leaf node-id {
493         type string;
494       }
495
496       leaf pci_assignement {
497         type string;
498       }
499
500       leaf tag1 {
501         type string;
502       }
503     }
504
505     leaf server-group {
506       type string;
507     }
508   }
509
510   grouping image-info-item {
511     leaf id {
512       type string;
513     }
514
515     leaf name {
516       type string;
517     }
518
519     choice image_file {
520       leaf location {
521         description "Image URL location";
522         type string;
523       }
524
525       leaf fileno {
526         description "Image file descriptor";
527         type uint32;
528       }
529     }
530
531     leaf checksum {
532       type string;
533     }
534
535     leaf virtual_size_mbytes {
536       description "Virtual size of the image";
537       type uint64;
538     }
539
540     leaf disk_format {
541       description "Format of the Disk";
542       type disk-format;
543       default "qcow2";
544     }
545
546     leaf container_format {
547       description "Format of the container";
548       type container-format;
549       default "bare";
550     }
551
552     leaf state {
553       description "State of the Image object in CAL";
554       type enumeration {
555         enum active;
556         enum inactive;
557         enum failed;
558         enum unknown;
559       }
560       default "unknown";
561     }
562
563     container user-tags {
564       description "User tags associated with Image";
565       leaf checksum {
566         rwpb:field-inline "true";
567         rwpb:field-string-max 64;
568         type string;
569       }
570     }
571   }
572
573   grouping network-info-item {
574     leaf network-name {
575       rwpb:field-inline "true";
576       rwpb:field-string-max 64;
577       type string;
578     }
579
580     leaf network-id {
581       rwpb:field-inline "true";
582       rwpb:field-string-max 64;
583       type string;
584     }
585
586     leaf subnet {
587       rwpb:field-inline "true";
588       rwpb:field-string-max 64;
589       type string;
590     }
591
592     uses manotypes:provider-network;
593   }
594
595   grouping port-info-item {
596     leaf port-name {
597       rwpb:field-inline "true";
598       rwpb:field-string-max 255;
599       type string;
600     }
601
602     leaf port-id {
603       rwpb:field-inline "true";
604       rwpb:field-string-max 64;
605       type string;
606     }
607
608     leaf port-state {
609       rwpb:field-inline "true";
610       rwpb:field-string-max 64;
611       type string;
612     }
613
614     leaf network-id {
615       rwpb:field-inline "true";
616       rwpb:field-string-max 64;
617       type string;
618     }
619
620     leaf ip-address {
621       rwpb:field-inline "true";
622       rwpb:field-string-max 64;
623       type string;
624     }
625
626     leaf vm-id {
627       rwpb:field-inline "true";
628       rwpb:field-string-max 64;
629       type string;
630     }
631
632     leaf port-type {
633       description "Type of the port";
634       type enumeration {
635         enum normal;
636         enum macvtap;
637         enum direct;
638       }
639       default "normal";
640     }
641
642     choice provider-specific-info {
643       container lxc {
644         leaf veth-name {
645           type string;
646         }
647       }
648     }
649   }
650
651   augment "/rw-project:project" {
652     container cloud-accounts {
653       list cloud-account-list {
654         rwpb:msg-new CloudAccount;
655         key "name";
656
657         leaf name {
658           type string;
659         }
660         uses provider-auth;
661       }
662     }
663   }
664
665   augment "/rw-project:project" {
666     container vim-resources {
667       rwpb:msg-new VimResources;
668       config false;
669
670       list vminfo-list {
671         rwpb:msg-new VMInfoItem;
672         config false;
673         key "vm-id";
674
675         uses vm-info-item;
676       }
677
678       list imageinfo-list {
679         rwpb:msg-new ImageInfoItem;
680         config false;
681         key "id";
682
683         uses image-info-item;
684       }
685
686       list tenantinfo-list {
687         rwpb:msg-new TenantInfoItem;
688         config false;
689         key "tenant-id";
690
691         leaf tenant-name {
692           rwpb:field-inline "true";
693           rwpb:field-string-max 64;
694           type string;
695         }
696
697         leaf tenant-id {
698           rwpb:field-inline "true";
699           rwpb:field-string-max 64;
700           type string;
701         }
702       }
703
704       list userinfo-list {
705         rwpb:msg-new UserInfoItem;
706         config false;
707         key "user-id";
708
709         leaf user-name{
710           rwpb:field-inline "true";
711           rwpb:field-string-max 64;
712           type string;
713         }
714
715         leaf user-id {
716           rwpb:field-inline "true";
717           rwpb:field-string-max 64;
718           type string;
719         }
720       }
721
722       list roleinfo-list {
723         rwpb:msg-new RoleInfoItem;
724         config false;
725         key "role-id";
726
727         leaf role-name {
728           rwpb:field-inline "true";
729           rwpb:field-string-max 64;
730           type string;
731         }
732
733         leaf role-id {
734           rwpb:field-inline "true";
735           rwpb:field-string-max 64;
736           type string;
737         }
738       }
739
740       list hostinfo-list {
741         rwpb:msg-new HostInfoItem;
742         config false;
743         key "host-id";
744
745         leaf host-name {
746           rwpb:field-inline "true";
747           rwpb:field-string-max 64;
748           type string;
749         }
750
751         leaf host-id {
752           rwpb:field-inline "true";
753           rwpb:field-string-max 64;
754           type string;
755         }
756       }
757
758       list networkinfo-list {
759         rwpb:msg-new NetworkInfoItem;
760         config false;
761         key "network-id";
762
763         uses network-info-item;
764       }
765
766       list portinfo-list {
767         rwpb:msg-new PortInfoItem;
768         config false;
769         key "port-id";
770
771         uses port-info-item;
772       }
773
774       list flavorinfo-list {
775         rwpb:msg-new FlavorInfoItem;
776         config false;
777         key "id";
778
779         leaf id {
780           rwpb:field-inline "true";
781           rwpb:field-string-max 64;
782           type string;
783         }
784
785         leaf name {
786           rwpb:field-inline "true";
787           rwpb:field-string-max 255;
788           type string;
789         }
790
791         uses manotypes:vm-flavor;
792         uses manotypes:guest-epa;
793         uses manotypes:vswitch-epa;
794         uses manotypes:hypervisor-epa;
795         uses manotypes:host-epa;
796         uses manotypes:placement-group-input;
797       }
798     }
799   }
800
801   grouping virtual-link-create-params {
802     leaf name {
803       description "Name of the Virtual-Link";
804       rwpb:field-inline "true";
805       rwpb:field-string-max 255;
806       type string;
807     }
808
809     leaf subnet {
810       rwpb:field-inline "true";
811       rwpb:field-string-max 64;
812       type string;
813     }
814     leaf associate-public-ip {
815       type boolean;
816       default false;
817     }
818     leaf vim-network-name {
819       description
820           "Name of network in VIM account. This is used to indicate
821           pre-provisioned network name in cloud account.";
822       type string;
823     }
824
825     uses manotypes:provider-network;
826     uses manotypes:ip-profile-info;
827   }
828
829
830   augment "/rw-project:project" {
831     container virtual-link-req-params {
832       description "This object defines the parameters required to create a virtual-link";
833       rwpb:msg-new VirtualLinkReqParams;
834       uses virtual-link-create-params;
835     }
836   }
837
838   grouping connection-point-type {
839     leaf type {
840       description
841           "Specifies the type of connection point
842              VIRTIO          : Use the traditional VIRTIO interface.
843              PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
844              SR-IOV          : Use SR-IOV interface.
845              E1000           : Emulate E1000 interface.
846              RTL8139         : Emulate RTL8139 interface.
847              PCNET           : Emulate PCNET interface.";
848       type enumeration {
849         enum VIRTIO;
850         enum PCI-PASSTHROUGH;
851         enum SR-IOV;
852         enum E1000;
853         enum RTL8139;
854         enum PCNET;
855       }
856       default "VIRTIO";
857     }
858   }
859
860
861   grouping vdu-create-params {
862     leaf name {
863       description "Name of the VDU";
864       rwpb:field-inline "true";
865       rwpb:field-string-max 255;
866       type string;
867     }
868
869     leaf mgmt-vpci {
870       description
871           "Specifies the virtual PCI address. Expressed in
872            the following format dddd:dd:dd.d. For example
873            0000:00:12.0. This information can be used to
874            pass as metadata during the VM creation.";
875       type string;
876     }
877
878     uses manotypes:vm-flavor;
879     uses manotypes:guest-epa;
880     uses manotypes:vswitch-epa;
881     uses manotypes:hypervisor-epa;
882     uses manotypes:host-epa;
883
884     leaf node-id {
885       rwpb:field-inline "true";
886       rwpb:field-string-max 64;
887       type string;
888     }
889
890     leaf flavor-id {
891       description "CAL assigned flavor-id for the VDU image";
892       rwpb:field-inline "true";
893       rwpb:field-string-max 64;
894       type string;
895     }
896
897     leaf image-id {
898       description "CAL assigned image-id for the VDU image";
899       rwpb:field-inline "true";
900       rwpb:field-string-max 64;
901       type string;
902     }
903
904     leaf image-name {
905       description "Image name which can be used to lookup the image-id";
906       type string;
907       rwpb:field-inline "true";
908       rwpb:field-string-max 256;
909     }
910
911     leaf image-checksum {
912       description "Image md5sum checksum used in combination with image name to lookup image-id ";
913       type string;
914       rwpb:field-inline "true";
915       rwpb:field-string-max 32;
916     }
917
918     uses manotypes:placement-group-input;
919     
920     list connection-points {
921       key "name";
922       leaf name {
923         description "Name of the connection point";
924         type string;
925       }
926       leaf virtual-link-id {
927         description "CAL assigned resource Id for the Virtual Link";
928         type string;
929       }
930       leaf associate-public-ip {
931         type boolean;
932         default false;
933       }
934       
935       leaf vpci {
936         description
937             "Specifies the virtual PCI address. Expressed in
938              the following format dddd:dd:dd.d. For example
939              0000:00:12.0. This information can be used to
940              pass as metadata during the VM creation.";
941         type string;
942       }
943
944       leaf security-group {
945         description "Name of the security group";
946         type string;
947       }
948       leaf port-security-enabled {
949         description "Enables the port security";
950         type boolean;
951       }
952
953       uses connection-point-type;
954     }
955
956     leaf mgmt-network {
957       description 
958           "Explicit mgmt-network name, otherwise the mgmt-network from
959            Cloud account is used";
960       type string;
961     }
962
963     leaf allocate-public-address {
964       description "If this VDU needs public IP address";
965       type boolean;
966       default false;
967     }
968
969     container vdu-init {
970       leaf userdata {
971         description
972             "The userdata field for vdu-init should contain
973              the contents of the script that cloud-init should
974              invoke when configuring the system. Note that this
975              script is expected to be in the cloud-config format";
976         type string;
977       }
978     }
979  
980     uses manotypes:supplemental-boot-data;
981
982     list volumes {
983       key "name";
984
985       leaf name {
986         description "Name of the disk-volumes, e.g. vda, vdb etc";
987         type string;
988       }
989       uses manotypes:volume-info;
990     } 
991   }
992
993   augment "/rw-project:project" {
994     container vdu-init-params {
995       description "This object defines the parameters required to create a VDU";
996       rwpb:msg-new VDUInitParams;
997       uses vdu-create-params;
998     }
999   }
1000
1001   augment "/rw-project:project" {
1002     container vdu-modify-params {
1003       description "This object defines the parameters required to modify VDU";
1004       rwpb:msg-new VDUModifyParams;
1005
1006       leaf vdu-id {
1007         description "CAL assigned id for VDU to which this connection point belongs";
1008         rwpb:field-inline "true";
1009         rwpb:field-string-max 64;
1010         type string;
1011       }
1012
1013       leaf image-id {
1014         description "CAL assigned image-id for the VDU image";
1015         rwpb:field-inline "true";
1016         rwpb:field-string-max 64;
1017         type string;
1018       }
1019
1020       list connection-points-add {
1021         key "name";
1022         leaf name {
1023           description "Name of the connection point";
1024           type string;
1025         }
1026         leaf virtual-link-id {
1027           description "CAL assigned resource Id for the Virtual Link";
1028           type string;
1029         }
1030         leaf associate-public-ip {
1031           type boolean;
1032           default false;
1033         }
1034         leaf port-security-enabled {
1035           description "Enables the port security";
1036           type boolean;
1037         }
1038
1039         uses connection-point-type;
1040       }
1041
1042       list connection-points-remove {
1043         key "connection-point-id";
1044         leaf connection-point-id {
1045           rwpb:field-inline "true";
1046           rwpb:field-string-max 64;
1047           type string;
1048         }
1049       }
1050     }
1051   }
1052
1053   grouping connection-point-info-params {
1054     leaf connection-point-id {
1055       rwpb:field-inline "true";
1056       rwpb:field-string-max 64;
1057       type string;
1058     }
1059
1060     leaf name {
1061       description "Name of the connection point";
1062       type string;
1063     }
1064
1065     leaf virtual-link-id {
1066       description "CAL assigned resource ID of the Virtual-Link";
1067       rwpb:field-inline "true";
1068       rwpb:field-string-max 64;
1069       type string;
1070     }
1071
1072     leaf vdu-id {
1073       description "CAL assigned id for VDU to which this connection point belongs";
1074       rwpb:field-inline "true";
1075       rwpb:field-string-max 64;
1076       type string;
1077     }
1078
1079     leaf state {
1080       description "CMP agnostic generic state of the connection point";
1081       type enumeration {
1082         enum active;
1083         enum inactive;
1084         enum failed;
1085         enum unknown;
1086       }
1087     }
1088
1089     leaf ip-address {
1090       rwpb:field-inline "true";
1091       rwpb:field-string-max 64;
1092       type string;
1093     }
1094
1095     leaf public-ip {
1096       rwpb:field-inline "true";
1097       rwpb:field-string-max 64;
1098       type string;
1099     }
1100
1101     leaf mac-addr {
1102       rwpb:field-inline "true";
1103       rwpb:field-string-max 48;
1104       type string;
1105     }
1106   }
1107
1108   grouping virtual-link-info-params {
1109     leaf name {
1110       description "Name of the Virtual-Link";
1111       rwpb:field-inline "true";
1112       rwpb:field-string-max 255;
1113       type string;
1114     }
1115
1116     leaf state {
1117       description "State of the Virtual Link";
1118       type enumeration {
1119         enum active;
1120         enum inactive;
1121         enum failed;
1122         enum unknown;
1123       }
1124       default "unknown";
1125     }
1126
1127     leaf virtual-link-id {
1128       description "CAL assigned resource ID of the Virtual-Link";
1129       rwpb:field-inline "true";
1130       rwpb:field-string-max 64;
1131       type string;
1132     }
1133
1134     list connection-points {
1135       key connection-point-id;
1136       uses connection-point-info-params;
1137     }
1138
1139     leaf subnet {
1140       rwpb:field-inline "true";
1141       rwpb:field-string-max 64;
1142       type string;
1143     }
1144
1145     uses manotypes:provider-network;
1146
1147   }
1148
1149   grouping vdu-info-params {
1150     leaf vdu-id {
1151       description "CAL assigned id for VDU";
1152       rwpb:field-inline "true";
1153       rwpb:field-string-max 64;
1154       type string;
1155     }
1156     leaf name {
1157       description "Name of the VDU";
1158       rwpb:field-inline "true";
1159       rwpb:field-string-max 255;
1160       type string;
1161     }
1162
1163     leaf flavor-id {
1164       description "CAL assigned flavor-id for the VDU image";
1165       rwpb:field-inline "true";
1166       rwpb:field-string-max 64;
1167       type string;
1168     }
1169
1170     leaf image-id {
1171       description "CAL assigned image-id for the VDU image";
1172       rwpb:field-inline "true";
1173       rwpb:field-string-max 64;
1174       type string;
1175     }
1176
1177     leaf node-id {
1178       rwpb:field-inline "true";
1179       rwpb:field-string-max 64;
1180       type string;
1181     }
1182
1183     leaf state {
1184       description "State of the VDU";
1185       type enumeration {
1186         enum active;
1187         enum inactive;
1188         enum failed;
1189         enum unknown;
1190       }
1191       default "unknown";
1192     }
1193
1194     leaf management-ip {
1195       rwpb:field-inline "true";
1196       rwpb:field-string-max 64;
1197       type string;
1198     }
1199
1200     leaf public-ip {
1201       rwpb:field-inline "true";
1202       rwpb:field-string-max 64;
1203       type string;
1204     }
1205
1206     uses manotypes:vm-flavor;
1207     uses manotypes:guest-epa;
1208     uses manotypes:vswitch-epa;
1209     uses manotypes:hypervisor-epa;
1210     uses manotypes:host-epa;
1211     uses manotypes:placement-group-input;
1212     
1213     list connection-points {
1214       key connection-point-id;
1215       uses connection-point-info-params;
1216     }
1217     leaf console-url {
1218       type string;
1219       description "Console URL from the VIM, if available";
1220     }
1221
1222     uses manotypes:supplemental-boot-data;
1223
1224     list volumes {
1225       key "name";
1226
1227       leaf name {
1228         description "Name of the disk-volumes, e.g. vda, vdb etc";
1229         type string;
1230       }
1231
1232       leaf volume-id {
1233         description "CAL assigned volume-id ";
1234         rwpb:field-inline "true";
1235         rwpb:field-string-max 64;
1236         type string;
1237       }
1238     } 
1239   }
1240
1241
1242   augment "/rw-project:project" {
1243     container vnf-resources {
1244       rwpb:msg-new VNFResources;
1245       config false;
1246
1247       list virtual-link-info-list {
1248         rwpb:msg-new VirtualLinkInfoParams;
1249         config false;
1250         key virtual-link-id;
1251         uses virtual-link-info-params;
1252       }
1253
1254       list vdu-info-list {
1255         rwpb:msg-new VDUInfoParams;
1256         config false;
1257         key vdu-id;
1258         uses vdu-info-params;
1259       }
1260     }
1261   }
1262 }
1263
1264 /* vim: set ts=2:sw=2: */