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