-
Notifications
You must be signed in to change notification settings - Fork 0
/
mano-types.yang
2245 lines (1968 loc) · 53.3 KB
/
mano-types.yang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
*
* Copyright 2016-2017 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
*/
module mano-types
{
namespace "urn:etsi:osm:yang:mano-types";
prefix "manotypes";
import ietf-inet-types {
prefix "inet";
}
import osm-project {
prefix "osm-project";
}
revision 2017-02-08 {
description
"Update model to support projects.";
}
revision 2015-04-23 {
description
"Initial revision. This YANG file defines
the reusable base types for VNF Management
and Orchestration (MANO).";
reference
"Derived from earlier versions of base YANG files";
}
typedef meta-data-type {
type enumeration {
enum STRING;
}
}
typedef package-type {
description "Type of descriptor being on-boarded";
type enumeration {
enum NSD;
enum VNFD;
}
}
typedef parameter-data-type {
type enumeration {
enum STRING;
enum INTEGER;
enum BOOLEAN;
}
}
grouping primitive-parameter-value {
list parameter {
description
"List of parameters to the configuration primitive.";
key "name";
leaf name {
description
"Name of the parameter.";
type string;
}
leaf data-type {
description
"Data type associated with the value.";
type manotypes:parameter-data-type;
}
leaf value {
description
"Value associated with the name.";
type string;
}
}
}
grouping primitive-parameter {
leaf name {
description
"Name of the parameter.";
type string;
}
leaf data-type {
description
"Data type associated with the name.";
type manotypes:parameter-data-type;
}
leaf mandatory {
description "Is this field mandatory";
type boolean;
default false;
}
leaf default-value {
description "The default value for this field";
type string;
}
leaf parameter-pool {
description "NSD parameter pool name to use for this parameter";
type string;
}
leaf read-only {
description
"The value should be dimmed by the UI.
Only applies to parameters with default values.";
type boolean;
default false;
}
leaf hidden {
description
"The value should be hidden by the UI.
Only applies to parameters with default values.";
type boolean;
default false;
}
}
grouping ui-primitive-group {
list parameter-group {
description
"Grouping of parameters which are logically grouped in UI";
key "name";
leaf name {
description
"Name of the parameter group";
type string;
}
list parameter {
description
"List of parameters for the service primitive.";
key "name";
uses manotypes:primitive-parameter;
}
leaf mandatory {
description "Is this parameter group mandatory";
type boolean;
default true;
}
}
}
grouping event-config {
leaf seq {
description
"Sequence number for the configuration primitive.";
type uint64;
}
leaf name {
description
"Name of the configuration primitive.";
type string;
mandatory true;
}
leaf user-defined-script {
description
"A user defined script.";
type string;
}
list parameter {
key "name";
leaf name {
type string;
}
leaf value {
description "Value of the configuration primitive.";
type string;
}
}
}
grouping image-properties {
leaf image {
description
"Image name for the software image.
If the image name is found within the VNF package it will
be uploaded to all VIM accounts during onboarding process.
Otherwise, the image must be added to the VIM account with
the same name as entered here.
";
type string;
}
leaf image-checksum {
description
"Image md5sum for the software image.
The md5sum, if provided, along with the image name uniquely
identifies an image uploaded to the CAL.
";
type string;
}
}
grouping vca-relations {
list relation {
description "List of relations between elements in this descriptor.";
key "name";
leaf name {
description
"Name of the relation.";
type string;
}
list entities {
description
"List of two elements to be related.
Elements to be related are identified by a pair (id, endpoint).
The relation will relate (id1, endpoint1) to (id2, endpoint2).";
key "id";
leaf id {
description
"A string, reference to the element id in the descriptor.
It could be a vnfd-id or a vdu-id in a VNFD,
or a nsd-id or member-vnf-index in a NSD.";
type string;
}
leaf endpoint {
description
"Endpoint name defining the relation.";
type string;
}
}
}
}
grouping vca-metrics {
description
"Information about the VNF or VDU metrics";
list metrics {
description "List of VCA related metrics";
key "name";
leaf name {
description
"Name of the metric, as defined in the Juju charm.";
type string;
}
}
} // END - grouping vca-metrics
grouping configuration-method {
choice config-method {
description
"Defines the configuration method for the VNF or VDU.";
case script {
description
"Use custom script for configuring the VNF or VDU.
This script is executed in the context of
Orchestrator (The same system and environment
as the Launchpad).";
container script {
leaf script-type {
description
"Script type - currently supported - Scripts confirming to Rift CA plugin";
type enumeration {
enum rift;
}
}
}
}
case juju {
description
"Configure the VNF or VDU through Juju.";
container juju {
leaf charm {
description "Juju charm to use with the VNF or VDU.";
type string;
}
leaf proxy {
description "Is this a proxy charm?";
type boolean;
default true;
}
}
}
}
}
grouping vca-config-access {
container config-access {
description
"Indicates the way to access to the xNF or xDU for VCA configuration.
For the moment there is a single way (ssh-access).";
container ssh-access {
description
"If the xNF requires ssh and this parameter is set, SSH keys
will be injected so that VCA can configure the xNF or xDU via ssh.";
leaf required {
description "whether ssh access is needed or not";
type boolean;
default false;
}
leaf default-user {
description "Default user for ssh";
type string;
}
}
}
} // END - grouping vca-config-access
grouping vca-configuration {
description
"Common information in the descriptors for NS, VNF or VDU configuration.
Note: If the NS contains multiple instances of the
same VNF or VDU, each instance could have a different
configuration.";
uses manotypes:configuration-method;
list config-primitive {
description
"List of config primitives supported by the
configuration agent for this VNF or VDU.";
key "name";
leaf name {
description
"Name of the config primitive.";
type string;
}
list parameter {
description
"List of parameters to the config primitive.";
key "name";
uses primitive-parameter;
}
leaf user-defined-script {
description
"A user defined script. If user defined script is defined,
the script will be executed using bash";
type string;
}
}
list initial-config-primitive {
description
"Initial set of configuration primitives.";
key "seq";
leaf seq {
description
"Sequence number for the configuration primitive.";
type uint64;
}
choice primitive-type {
case primitive-definition {
leaf name {
description
"Name of the configuration primitive.";
type string;
}
uses primitive-parameter-value;
leaf user-defined-script {
description
"A user defined script.";
type string;
}
}
}
}
list terminate-config-primitive {
description
"Terminate set of configuration primitives.";
key "seq";
leaf seq {
description
"Sequence number for the configuration primitive.";
type uint64;
}
leaf name {
description
"Name of the configuration primitive.";
type string;
}
uses primitive-parameter-value;
leaf user-defined-script {
description
"A user defined script.";
type string;
}
}
uses manotypes:vca-metrics;
} // END - grouping vca-configuration
typedef virtual-link-type {
description
"Type of virtual link
ELAN: A multipoint service connecting a set of elements
ELINE: A point-to-point service connecting two elements
L3: A service providing either Layer-3 visibility (IP) between
VDUs/VNFs or explicit interconnection between two ELAN VLDs.";
// ETREE: A multipoint service connecting one or
// more roots and a set of leaves, but
// preventing inter-leaf communication.";
type enumeration {
enum ELAN;
enum ELINE;
enum L3;
// enum ETREE;
}
}
grouping named-value {
leaf name {
type string;
}
leaf value {
type string;
}
}
typedef http-method {
description
"Type of HTTP operation";
type enumeration {
enum POST;
enum PUT;
enum GET;
enum DELETE;
enum OPTIONS;
enum PATCH;
}
}
typedef api-type {
description
"Type of API to fetch monitoring parameters";
type enumeration {
enum HTTP;
enum NETCONF;
enum SOAP;
}
}
typedef json-query-method {
description
"The method to extract a value from a JSON response
NAMEKEY - Use the name as the key for a non-nested value.
JSONPATH - Use jsonpath-rw implementation to extract a value.
OBJECTPATH - Use objectpath implementation to extract a value.";
type enumeration {
enum NAMEKEY;
enum JSONPATH;
enum OBJECTPATH;
}
}
typedef param-value-type {
description
"The type of the parameter value";
type enumeration {
enum INT;
enum DECIMAL;
enum STRING;
}
}
typedef connection-point-type {
description
"Type of connection point
VPORT: Virtual Port
// VNIC_ADDR: Virtual NIC Address
// PNIC_ADDR: Physical NIC Address
// PPORT: Physical Port.";
type enumeration {
enum VPORT;
}
}
typedef widget-type {
description
"Type of the widget, typically used by the UI.";
type enumeration {
enum COUNTER;
enum GAUGE;
enum TEXTBOX;
enum SLIDER;
enum HISTOGRAM;
enum BAR;
}
}
typedef cpu-feature-type {
description
"Enumeration for CPU features.
AES: CPU supports advanced instruction set for
AES (Advanced Encryption Standard).
CAT: Cache Allocation Technology (CAT) allows
an Operating System, Hypervisor, or similar
system management agent to specify the amount
of L3 cache (currently the last-level cache
in most server and client platforms) space an
application can fill (as a hint to hardware
functionality, certain features such as power
management may override CAT settings).
CMT: Cache Monitoring Technology (CMT) allows
an Operating System, Hypervisor, or similar
system management agent to determine the
usage of cache based on applications running
on the platform. The implementation is
directed at L3 cache monitoring (currently
the last-level cache in most server and
client platforms).
DDIO: Intel Data Direct I/O (DDIO) enables
Ethernet server NICs and controllers talk
directly to the processor cache without a
detour via system memory. This enumeration
specifies if the VM requires a DDIO
capable host.";
type enumeration {
enum PREFER_AES;
enum REQUIRE_AES;
enum PREFER_CAT;
enum REQUIRE_CAT;
enum PREFER_CMT;
enum REQUIRE_CMT;
enum PREFER_DDIO;
enum REQUIRE_DDIO;
enum REQUIRE_VME;
enum PREFER_VME;
enum REQUIRE_DE;
enum PREFER_DE;
enum REQUIRE_PSE;
enum PREFER_PSE;
enum REQUIRE_TSC;
enum PREFER_TSC;
enum REQUIRE_MSR;
enum PREFER_MSR;
enum REQUIRE_PAE;
enum PREFER_PAE;
enum REQUIRE_MCE;
enum PREFER_MCE;
enum REQUIRE_CX8;
enum PREFER_CX8;
enum REQUIRE_APIC;
enum PREFER_APIC;
enum REQUIRE_SEP;
enum PREFER_SEP;
enum REQUIRE_MTRR;
enum PREFER_MTRR;
enum REQUIRE_PGE;
enum PREFER_PGE;
enum REQUIRE_MCA;
enum PREFER_MCA;
enum REQUIRE_CMOV;
enum PREFER_CMOV;
enum REQUIRE_PAT;
enum PREFER_PAT;
enum REQUIRE_PSE36;
enum PREFER_PSE36;
enum REQUIRE_CLFLUSH;
enum PREFER_CLFLUSH;
enum REQUIRE_DTS;
enum PREFER_DTS;
enum REQUIRE_ACPI;
enum PREFER_ACPI;
enum REQUIRE_MMX;
enum PREFER_MMX;
enum REQUIRE_FXSR;
enum PREFER_FXSR;
enum REQUIRE_SSE;
enum PREFER_SSE;
enum REQUIRE_SSE2;
enum PREFER_SSE2;
enum REQUIRE_SS;
enum PREFER_SS;
enum REQUIRE_HT;
enum PREFER_HT;
enum REQUIRE_TM;
enum PREFER_TM;
enum REQUIRE_IA64;
enum PREFER_IA64;
enum REQUIRE_PBE;
enum PREFER_PBE;
enum REQUIRE_RDTSCP;
enum PREFER_RDTSCP;
enum REQUIRE_PNI;
enum PREFER_PNI;
enum REQUIRE_PCLMULQDQ;
enum PREFER_PCLMULQDQ;
enum REQUIRE_DTES64;
enum PREFER_DTES64;
enum REQUIRE_MONITOR;
enum PREFER_MONITOR;
enum REQUIRE_DS_CPL;
enum PREFER_DS_CPL;
enum REQUIRE_VMX;
enum PREFER_VMX;
enum REQUIRE_SMX;
enum PREFER_SMX;
enum REQUIRE_EST;
enum PREFER_EST;
enum REQUIRE_TM2;
enum PREFER_TM2;
enum REQUIRE_SSSE3;
enum PREFER_SSSE3;
enum REQUIRE_CID;
enum PREFER_CID;
enum REQUIRE_FMA;
enum PREFER_FMA;
enum REQUIRE_CX16;
enum PREFER_CX16;
enum REQUIRE_XTPR;
enum PREFER_XTPR;
enum REQUIRE_PDCM;
enum PREFER_PDCM;
enum REQUIRE_PCID;
enum PREFER_PCID;
enum REQUIRE_DCA;
enum PREFER_DCA;
enum REQUIRE_SSE4_1;
enum PREFER_SSE4_1;
enum REQUIRE_SSE4_2;
enum PREFER_SSE4_2;
enum REQUIRE_X2APIC;
enum PREFER_X2APIC;
enum REQUIRE_MOVBE;
enum PREFER_MOVBE;
enum REQUIRE_POPCNT;
enum PREFER_POPCNT;
enum REQUIRE_TSC_DEADLINE_TIMER;
enum PREFER_TSC_DEADLINE_TIMER;
enum REQUIRE_XSAVE;
enum PREFER_XSAVE;
enum REQUIRE_AVX;
enum PREFER_AVX;
enum REQUIRE_F16C;
enum PREFER_F16C;
enum REQUIRE_RDRAND;
enum PREFER_RDRAND;
enum REQUIRE_FSGSBASE;
enum PREFER_FSGSBASE;
enum REQUIRE_BMI1;
enum PREFER_BMI1;
enum REQUIRE_HLE;
enum PREFER_HLE;
enum REQUIRE_AVX2;
enum PREFER_AVX2;
enum REQUIRE_SMEP;
enum PREFER_SMEP;
enum REQUIRE_BMI2;
enum PREFER_BMI2;
enum REQUIRE_ERMS;
enum PREFER_ERMS;
enum REQUIRE_INVPCID;
enum PREFER_INVPCID;
enum REQUIRE_RTM;
enum PREFER_RTM;
enum REQUIRE_MPX;
enum PREFER_MPX;
enum REQUIRE_RDSEED;
enum PREFER_RDSEED;
enum REQUIRE_ADX;
enum PREFER_ADX;
enum REQUIRE_SMAP;
enum PREFER_SMAP;
}
}
typedef nfvi-metric-type {
description "Type of NFVI metric to be monitored";
type enumeration {
enum cpu_utilization;
enum average_memory_utilization;
enum disk_read_ops;
enum disk_write_ops;
enum disk_read_bytes;
enum disk_write_bytes;
enum packets_sent;
enum packets_received;
enum packets_in_dropped;
enum packets_out_dropped;
enum vm_status;
}
}
typedef scaling-trigger {
type enumeration {
enum pre-scale-in {
value 1;
}
enum post-scale-in {
value 2;
}
enum pre-scale-out {
value 3;
}
enum post-scale-out {
value 4;
}
}
}
typedef scaling-policy-type {
type enumeration {
enum manual {
value 1;
}
enum automatic {
value 2;
}
}
}
typedef scaling-criteria-operation {
type enumeration {
enum AND {
value 1;
}
enum OR {
value 2;
}
}
}
grouping vm-flavor {
container vm-flavor {
leaf vcpu-count {
description
"Number of VCPUs for the VM.";
type uint16;
}
leaf memory-mb {
description
"Amount of memory in MB.";
type uint64;
}
leaf storage-gb {
description
"Amount of disk space in GB.";
type uint64;
}
}
} //grouping vm-flavor
grouping vm-flavor-name {
leaf vm-flavor-name {
description "flavor name to be used while creating vm using cloud account";
type string;
}
}
grouping vswitch-epa {
container vswitch-epa {
leaf ovs-acceleration {
description
"Specifies Open vSwitch acceleration mode.
MANDATORY: OVS acceleration is required
PREFERRED: OVS acceleration is preferred";
type enumeration {
enum MANDATORY;
enum PREFERRED;
enum DISABLED;
}
}
leaf ovs-offload {
description
"Specifies Open vSwitch hardware offload mode.
MANDATORY: OVS offload is required
PREFERRED: OVS offload is preferred";
type enumeration {
enum MANDATORY;
enum PREFERRED;
enum DISABLED;
}
}
}
}
grouping hypervisor-epa {
container hypervisor-epa {
leaf type {
description
"Specifies the type of hypervisor.
KVM: KVM
XEN: XEN";
type enumeration {
enum PREFER_KVM;
enum REQUIRE_KVM;
}
}
leaf version {
type string;
}
}
}
grouping host-epa {
container host-epa {
description "Specifies the host level EPA attributes.";
leaf cpu-model {
description
"Host CPU model. Examples include: SandyBridge,
IvyBridge";
type enumeration {
enum PREFER_WESTMERE;
enum REQUIRE_WESTMERE;
enum PREFER_SANDYBRIDGE;
enum REQUIRE_SANDYBRIDGE;
enum PREFER_IVYBRIDGE;
enum REQUIRE_IVYBRIDGE;
enum PREFER_HASWELL;
enum REQUIRE_HASWELL;
enum PREFER_BROADWELL;
enum REQUIRE_BROADWELL;
enum PREFER_NEHALEM;
enum REQUIRE_NEHALEM;
enum PREFER_PENRYN;
enum REQUIRE_PENRYN;
enum PREFER_CONROE;
enum REQUIRE_CONROE;
enum PREFER_CORE2DUO;
enum REQUIRE_CORE2DUO;
}
}
leaf cpu-arch {
description "Host CPU architecture.";
type enumeration {
enum PREFER_X86;
enum REQUIRE_X86;
enum PREFER_X86_64;
enum REQUIRE_X86_64;
enum PREFER_I686;
enum REQUIRE_I686;
enum PREFER_IA64;
enum REQUIRE_IA64;
enum PREFER_ARMV7;
enum REQUIRE_ARMV7;
enum PREFER_ARMV8;
enum REQUIRE_ARMV8;
}
}
leaf cpu-vendor {
description "Host CPU Vendor.";
type enumeration {
enum PREFER_INTEL;
enum REQUIRE_INTEL;
enum PREFER_AMD;
enum REQUIRE_AMD;
}
}
leaf cpu-socket-count {
description "Number of sockets on the host.";
type uint64;
}
leaf cpu-core-count {
description "Number of cores on the host.";
type uint64;
}
leaf cpu-core-thread-count {
description "Number of threads per cores on the host.";
type uint64;
}
list cpu-feature {
key "feature";
description "List of CPU features.";
leaf feature {
description "CPU feature.";
type cpu-feature-type;
}
}
leaf om-cpu-model-string {
description "OpenMANO CPU model string";
type string;
}
list om-cpu-feature {
key "feature";
description "List of OpenMANO CPU features";
leaf feature {
description "CPU feature";
type string;
}
}
}
}
grouping guest-epa {
description "EPA attributes for the guest";
container guest-epa {
leaf trusted-execution {
description "This VM should be allocated from trusted pool";
type boolean;
}
leaf mempage-size {
description
"Memory page allocation size. If a VM requires
hugepages, it should choose LARGE or SIZE_2MB
or SIZE_1GB. If the VM prefers hugepages it
should choose PREFER_LARGE.
LARGE : Require hugepages (either 2MB or 1GB)
SMALL : Doesn't require hugepages
SIZE_2MB : Requires 2MB hugepages
SIZE_1GB : Requires 1GB hugepages
PREFER_LARGE : Application prefers hugepages";
type enumeration {
enum LARGE;
enum SMALL;
enum SIZE_2MB;
enum SIZE_1GB;
enum PREFER_LARGE;
}
}
choice cpu-policy {
case cpu-pinning {
leaf cpu-pinning-policy {
description
"CPU pinning policy describes association
between virtual CPUs in guest and the
physical CPUs in the host.
DEDICATED : Virtual CPUs are pinned to
physical CPUs
SHARED : Multiple VMs may share the
same physical CPUs.
ANY : Any policy is acceptable for the VM";
type enumeration {
enum DEDICATED;
enum SHARED;
enum ANY;
}
default "ANY";
}
leaf cpu-thread-pinning-policy {
description
"CPU thread pinning policy describes how to
place the guest CPUs when the host supports
hyper threads:
AVOID : Avoids placing a guest on a host
with threads.