opennebula-cli 6.6.2 → 6.7.80.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/oneacl +1 -1
- data/bin/onebackupjob +373 -0
- data/bin/onecluster +1 -1
- data/bin/onedatastore +7 -4
- data/bin/oneflow-template +24 -6
- data/bin/onegroup +1 -1
- data/bin/onehook +1 -1
- data/bin/onehost +1 -1
- data/bin/oneimage +9 -4
- data/bin/onemarket +6 -4
- data/bin/onemarketapp +6 -2
- data/bin/onesecgroup +1 -1
- data/bin/onetemplate +16 -9
- data/bin/oneuser +1 -1
- data/bin/onevdc +1 -1
- data/bin/onevm +118 -152
- data/bin/onevmgroup +65 -2
- data/bin/onevnet +7 -4
- data/bin/onevntemplate +1 -1
- data/bin/onevrouter +22 -16
- data/bin/onezone +1 -1
- data/lib/command_parser.rb +2 -9
- data/lib/one_helper/oneacl_helper.rb +6 -4
- data/lib/one_helper/onebackupjob_helper.rb +284 -0
- data/lib/one_helper/onevm_helper.rb +42 -230
- data/lib/one_helper/onevmgroup_helper.rb +15 -0
- data/lib/one_helper.rb +622 -325
- data/share/schemas/xsd/acct.xsd +2 -19
- data/share/schemas/xsd/backupjob.xsd +42 -0
- data/share/schemas/xsd/backupjob_pool.xsd +12 -0
- data/share/schemas/xsd/index.xsd +3 -0
- data/share/schemas/xsd/opennebula_configuration.xsd +3 -0
- data/share/schemas/xsd/shared.xsd +46 -0
- data/share/schemas/xsd/vm.xsd +18 -47
- data/share/schemas/xsd/vm_group.xsd +1 -0
- data/share/schemas/xsd/vm_pool.xsd +1 -0
- metadata +12 -6
data/bin/onetemplate
CHANGED
@@ -149,6 +149,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
149
149
|
|
150
150
|
onetemplate create vm_description.tmpl
|
151
151
|
|
152
|
+
#{OpenNebulaHelper::TEMPLATE_INPUT}
|
153
|
+
|
152
154
|
- new VM Template named "arch vm" with a disk and a nic:
|
153
155
|
|
154
156
|
onetemplate create --name "arch vm" --memory 128 --cpu 1 \\
|
@@ -164,9 +166,10 @@ CommandParser::CmdParser.new(ARGV) do
|
|
164
166
|
command :create, create_desc, [:file, nil], :options =>
|
165
167
|
[OneTemplateHelper::VM_NAME] + OpenNebulaHelper::TEMPLATE_OPTIONS +
|
166
168
|
[OpenNebulaHelper::DRY] do
|
167
|
-
if args[0]
|
168
|
-
|
169
|
-
|
169
|
+
if (args[0] || STDIN.wait_readable(0)) &&
|
170
|
+
OpenNebulaHelper.create_template_options_used?(options)
|
171
|
+
|
172
|
+
STDERR.puts 'You can not use both template file and template creation options.'
|
170
173
|
next -1
|
171
174
|
end
|
172
175
|
|
@@ -174,6 +177,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
174
177
|
begin
|
175
178
|
if args[0]
|
176
179
|
template = File.read(args[0])
|
180
|
+
elsif STDIN.wait_readable(0)
|
181
|
+
template = STDIN.read
|
177
182
|
else
|
178
183
|
res = OpenNebulaHelper.create_template(options)
|
179
184
|
|
@@ -248,13 +253,13 @@ CommandParser::CmdParser.new(ARGV) do
|
|
248
253
|
EOT
|
249
254
|
|
250
255
|
command :instantiate, instantiate_desc, :templateid, [:file, nil],
|
251
|
-
:options => instantiate_options +
|
252
|
-
OpenNebulaHelper::TEMPLATE_OPTIONS do
|
256
|
+
:options => instantiate_options + OpenNebulaHelper::TEMPLATE_OPTIONS do
|
253
257
|
exit_code = 0
|
254
258
|
|
255
|
-
if args[1]
|
256
|
-
|
257
|
-
|
259
|
+
if (args[1] || STDIN.wait_readable(0)) &&
|
260
|
+
OpenNebulaHelper.create_template_options_used?(options)
|
261
|
+
|
262
|
+
STDERR.puts 'You cannot use both template and template creation options.'
|
258
263
|
next -1
|
259
264
|
end
|
260
265
|
|
@@ -300,6 +305,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
300
305
|
|
301
306
|
if args[1]
|
302
307
|
extra_template = File.read(args[1])
|
308
|
+
elsif STDIN.wait_readable(0)
|
309
|
+
extra_template = STDIN.read
|
303
310
|
else
|
304
311
|
res = OpenNebulaHelper.create_template(options, t)
|
305
312
|
|
@@ -404,7 +411,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
404
411
|
end
|
405
412
|
|
406
413
|
list_desc = <<-EOT.unindent
|
407
|
-
Lists Templates in the pool
|
414
|
+
Lists Templates in the pool. #{OneTemplateHelper.list_layout_help}
|
408
415
|
EOT
|
409
416
|
|
410
417
|
rename_desc = <<-EOT.unindent
|
data/bin/oneuser
CHANGED
data/bin/onevdc
CHANGED
data/bin/onevm
CHANGED
@@ -349,7 +349,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
349
349
|
number = options[:multiple] || 1
|
350
350
|
exit_code = nil
|
351
351
|
|
352
|
-
if args[0]
|
352
|
+
if (args[0] || STDIN.wait_readable(0)) &&
|
353
|
+
OpenNebulaHelper.create_template_options_used?(options)
|
354
|
+
|
353
355
|
STDERR.puts 'You can not use both template file and template'\
|
354
356
|
' creation options.'
|
355
357
|
exit(-1)
|
@@ -358,6 +360,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
358
360
|
begin
|
359
361
|
if args[0]
|
360
362
|
template = File.read(args[0])
|
363
|
+
elsif STDIN.wait_readable(0)
|
364
|
+
template = STDIN.read
|
361
365
|
else
|
362
366
|
res = OpenNebulaHelper.create_template(options)
|
363
367
|
|
@@ -422,12 +426,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
422
426
|
EOT
|
423
427
|
|
424
428
|
command :hold, hold_desc, [:range, :vmid_list],
|
425
|
-
:options =>
|
426
|
-
OneVMHelper::WEEKLY,
|
427
|
-
OneVMHelper::MONTHLY,
|
428
|
-
OneVMHelper::YEARLY,
|
429
|
-
OneVMHelper::HOURLY,
|
430
|
-
OneVMHelper::END_TIME] do
|
429
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
431
430
|
if !options[:schedule].nil?
|
432
431
|
helper.schedule_actions(args[0], options, @comm_name)
|
433
432
|
else
|
@@ -444,12 +443,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
444
443
|
EOT
|
445
444
|
|
446
445
|
command :release, release_desc, [:range, :vmid_list],
|
447
|
-
:options =>
|
448
|
-
OneVMHelper::WEEKLY,
|
449
|
-
OneVMHelper::MONTHLY,
|
450
|
-
OneVMHelper::YEARLY,
|
451
|
-
OneVMHelper::HOURLY,
|
452
|
-
OneVMHelper::END_TIME] do
|
446
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
453
447
|
if !options[:schedule].nil?
|
454
448
|
helper.schedule_actions(args[0], options, @comm_name)
|
455
449
|
else
|
@@ -512,13 +506,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
512
506
|
EOT
|
513
507
|
|
514
508
|
command :terminate, terminate_desc, [:range, :vmid_list],
|
515
|
-
:options =>
|
516
|
-
|
517
|
-
OneVMHelper::MONTHLY,
|
518
|
-
OneVMHelper::YEARLY,
|
519
|
-
OneVMHelper::HOURLY,
|
520
|
-
OneVMHelper::END_TIME,
|
521
|
-
OneVMHelper::HARD] do
|
509
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS +
|
510
|
+
[OneVMHelper::HARD] do
|
522
511
|
command_name = 'terminate'
|
523
512
|
command_name << '-hard' if options[:hard]
|
524
513
|
|
@@ -540,13 +529,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
540
529
|
EOT
|
541
530
|
|
542
531
|
command :undeploy, undeploy_desc, [:range, :vmid_list],
|
543
|
-
:options =>
|
544
|
-
|
545
|
-
OneVMHelper::MONTHLY,
|
546
|
-
OneVMHelper::YEARLY,
|
547
|
-
OneVMHelper::HOURLY,
|
548
|
-
OneVMHelper::END_TIME,
|
549
|
-
OneVMHelper::HARD] do
|
532
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS +
|
533
|
+
[OneVMHelper::HARD] do
|
550
534
|
command_name = 'undeploy'
|
551
535
|
command_name << '-hard' if options[:hard]
|
552
536
|
|
@@ -567,13 +551,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
567
551
|
EOT
|
568
552
|
|
569
553
|
command :poweroff, poweroff_desc, [:range, :vmid_list],
|
570
|
-
:options =>
|
571
|
-
|
572
|
-
OneVMHelper::MONTHLY,
|
573
|
-
OneVMHelper::YEARLY,
|
574
|
-
OneVMHelper::HOURLY,
|
575
|
-
OneVMHelper::END_TIME,
|
576
|
-
OneVMHelper::HARD] do
|
554
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS +
|
555
|
+
[OneVMHelper::HARD] do
|
577
556
|
command_name = 'poweroff'
|
578
557
|
command_name << '-hard' if options[:hard]
|
579
558
|
|
@@ -596,13 +575,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
596
575
|
EOT
|
597
576
|
|
598
577
|
command :reboot, reboot_desc, [:range, :vmid_list],
|
599
|
-
:options =>
|
600
|
-
|
601
|
-
OneVMHelper::MONTHLY,
|
602
|
-
OneVMHelper::YEARLY,
|
603
|
-
OneVMHelper::HOURLY,
|
604
|
-
OneVMHelper::END_TIME,
|
605
|
-
OneVMHelper::HARD] do
|
578
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS +
|
579
|
+
[OneVMHelper::HARD] do
|
606
580
|
command_name = 'reboot'
|
607
581
|
command_name << '-hard' if options[:hard]
|
608
582
|
|
@@ -620,6 +594,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
620
594
|
deployment, in a standard installation the Scheduler is in charge
|
621
595
|
of this decision
|
622
596
|
|
597
|
+
#{OpenNebulaHelper::TEMPLATE_INPUT}
|
598
|
+
|
623
599
|
States: PENDING, HOLD, STOPPED, UNDEPLOYED
|
624
600
|
EOT
|
625
601
|
|
@@ -628,7 +604,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
628
604
|
[:range, :vmid_list],
|
629
605
|
:hostid,
|
630
606
|
[:datastoreid, nil],
|
631
|
-
:options => [ENFORCE,
|
607
|
+
:options => [ENFORCE, OpenNebulaHelper::FILE] do
|
632
608
|
host_id = args[1]
|
633
609
|
verbose = "deploying in host #{host_id}"
|
634
610
|
|
@@ -639,6 +615,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
639
615
|
|
640
616
|
if options[:file]
|
641
617
|
extra_template = File.read(options[:file])
|
618
|
+
elsif STDIN.wait_readable(0)
|
619
|
+
extra_template = STDIN.read
|
642
620
|
end
|
643
621
|
|
644
622
|
helper.perform_actions(args[0], options, verbose) do |vm|
|
@@ -680,12 +658,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
680
658
|
EOT
|
681
659
|
|
682
660
|
command :stop, stop_desc, [:range, :vmid_list],
|
683
|
-
:options =>
|
684
|
-
OneVMHelper::WEEKLY,
|
685
|
-
OneVMHelper::MONTHLY,
|
686
|
-
OneVMHelper::YEARLY,
|
687
|
-
OneVMHelper::HOURLY,
|
688
|
-
OneVMHelper::END_TIME] do
|
661
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
689
662
|
if !options[:schedule].nil?
|
690
663
|
helper.schedule_actions(args[0], options, @comm_name)
|
691
664
|
else
|
@@ -705,12 +678,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
705
678
|
EOT
|
706
679
|
|
707
680
|
command :suspend, suspend_desc, [:range, :vmid_list],
|
708
|
-
:options =>
|
709
|
-
OneVMHelper::WEEKLY,
|
710
|
-
OneVMHelper::MONTHLY,
|
711
|
-
OneVMHelper::YEARLY,
|
712
|
-
OneVMHelper::HOURLY,
|
713
|
-
OneVMHelper::END_TIME] do
|
681
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
714
682
|
if !options[:schedule].nil?
|
715
683
|
helper.schedule_actions(args[0], options, @comm_name)
|
716
684
|
else
|
@@ -727,12 +695,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
727
695
|
EOT
|
728
696
|
|
729
697
|
command :resume, resume_desc, [:range, :vmid_list],
|
730
|
-
:options =>
|
731
|
-
OneVMHelper::WEEKLY,
|
732
|
-
OneVMHelper::MONTHLY,
|
733
|
-
OneVMHelper::YEARLY,
|
734
|
-
OneVMHelper::HOURLY,
|
735
|
-
OneVMHelper::END_TIME] do
|
698
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
736
699
|
if !options[:schedule].nil?
|
737
700
|
helper.schedule_actions(args[0], options, @comm_name)
|
738
701
|
else
|
@@ -799,25 +762,21 @@ CommandParser::CmdParser.new(ARGV) do
|
|
799
762
|
end
|
800
763
|
|
801
764
|
disk_attach_desc = <<-EOT.unindent
|
802
|
-
Attaches a disk to a running VM.
|
803
|
-
|
765
|
+
Attaches a disk to a running VM.
|
766
|
+
|
767
|
+
#{OneVMHelper.template_input_help('DISK')}
|
804
768
|
|
805
769
|
States: RUNNING, POWEROFF
|
806
770
|
EOT
|
807
771
|
|
808
772
|
command :"disk-attach", disk_attach_desc, :vmid,
|
809
|
-
:options => [
|
773
|
+
:options => [OpenNebulaHelper::FILE, OneVMHelper::IMAGE,
|
810
774
|
TARGET, CACHE, DISCARD, PREFIX] do
|
811
|
-
if options[:file].nil? && options[:image].nil?
|
812
|
-
STDERR.puts 'Provide a template file or an image:'
|
813
|
-
STDERR.puts '\t--file <file>'
|
814
|
-
STDERR.puts '\t--image <image>'
|
815
|
-
exit(-1)
|
816
|
-
end
|
817
|
-
|
818
775
|
if options[:file]
|
819
776
|
template = File.read(options[:file])
|
820
|
-
|
777
|
+
elsif STDIN.wait_readable(0)
|
778
|
+
template = STDIN.read
|
779
|
+
elsif options[:image]
|
821
780
|
image_id = options[:image]
|
822
781
|
target = options[:target]
|
823
782
|
prefix = options[:prefix]
|
@@ -839,6 +798,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
839
798
|
end
|
840
799
|
|
841
800
|
template << ' ]'
|
801
|
+
else
|
802
|
+
STDERR.puts 'Provide a template or an image:'
|
803
|
+
STDERR.puts '\t--file <file>'
|
804
|
+
STDERR.puts '\t--image <image>'
|
805
|
+
exit(-1)
|
842
806
|
end
|
843
807
|
|
844
808
|
helper.perform_action(args[0], options, 'Attaching disk') do |vm|
|
@@ -861,37 +825,35 @@ CommandParser::CmdParser.new(ARGV) do
|
|
861
825
|
end
|
862
826
|
|
863
827
|
nic_attach_desc = <<-EOT.unindent
|
864
|
-
Attaches a NIC to a VM.
|
828
|
+
Attaches a NIC to a VM.
|
829
|
+
|
830
|
+
To attach a nic alias
|
831
|
+
#{OneVMHelper.template_input_help('NIC')}
|
865
832
|
|
866
833
|
To hotplug a PCI device and use it as a NIC interface in the VM select
|
867
834
|
it with --pci (short_address) or --pci_device (device ID),
|
868
835
|
--pci_class (class ID) and/or --pci_vendor (vendor ID).
|
869
836
|
|
870
|
-
To attach a nic alias, use --file or --alias option.
|
871
|
-
|
872
837
|
States: RUNNING, POWEROFF
|
873
838
|
EOT
|
874
839
|
|
875
840
|
command :"nic-attach", nic_attach_desc, :vmid,
|
876
|
-
:options => [
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
STDERR.puts "\t--file <file>"
|
888
|
-
STDERR.puts "\t--network <network>"
|
889
|
-
exit(-1)
|
890
|
-
end
|
891
|
-
|
841
|
+
:options => [
|
842
|
+
OpenNebulaHelper::FILE,
|
843
|
+
OneVMHelper::NETWORK,
|
844
|
+
OneVMHelper::IP,
|
845
|
+
OneVMHelper::ALIAS,
|
846
|
+
OneVMHelper::NIC_NAME,
|
847
|
+
PCI,
|
848
|
+
PCI_CLASS,
|
849
|
+
PCI_VENDOR,
|
850
|
+
PCI_DEVICE
|
851
|
+
] do
|
892
852
|
if options[:file]
|
893
853
|
template = File.read(options[:file])
|
894
|
-
|
854
|
+
elsif STDIN.wait_readable(0)
|
855
|
+
template = STDIN.read
|
856
|
+
elsif options[:network]
|
895
857
|
network_id = options[:network]
|
896
858
|
ip = options[:ip]
|
897
859
|
nic_alias = options[:alias]
|
@@ -923,6 +885,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
923
885
|
template << ", IP = #{ip}" if ip
|
924
886
|
template << ", NAME = #{nic_name}" if nic_name
|
925
887
|
template << ']'
|
888
|
+
else
|
889
|
+
STDERR.puts 'Provide a network or a template:'
|
890
|
+
STDERR.puts "\t--file <file>"
|
891
|
+
STDERR.puts "\t--network <network>"
|
892
|
+
exit(-1)
|
926
893
|
end
|
927
894
|
|
928
895
|
helper.perform_action(args[0], options, 'Attaching NIC') do |vm|
|
@@ -1084,12 +1051,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1084
1051
|
EOT
|
1085
1052
|
|
1086
1053
|
command :"snapshot-create", snapshot_create_desc, [:range, :vmid_list],
|
1087
|
-
[:name, nil], :options =>
|
1088
|
-
OneVMHelper::WEEKLY,
|
1089
|
-
OneVMHelper::MONTHLY,
|
1090
|
-
OneVMHelper::YEARLY,
|
1091
|
-
OneVMHelper::HOURLY,
|
1092
|
-
OneVMHelper::END_TIME] do
|
1054
|
+
[:name, nil], :options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1093
1055
|
if !options[:schedule].nil?
|
1094
1056
|
# add name as an argument
|
1095
1057
|
options[:args] = args[1]
|
@@ -1108,12 +1070,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1108
1070
|
EOT
|
1109
1071
|
|
1110
1072
|
command :"snapshot-revert", snapshot_revert_desc, :vmid, :snapshot_id,
|
1111
|
-
:options =>
|
1112
|
-
OneVMHelper::WEEKLY,
|
1113
|
-
OneVMHelper::MONTHLY,
|
1114
|
-
OneVMHelper::YEARLY,
|
1115
|
-
OneVMHelper::HOURLY,
|
1116
|
-
OneVMHelper::END_TIME] do
|
1073
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1117
1074
|
if !options[:schedule].nil?
|
1118
1075
|
# add snap ID as an argument
|
1119
1076
|
options[:args] = args[1]
|
@@ -1132,12 +1089,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1132
1089
|
EOT
|
1133
1090
|
|
1134
1091
|
command :"snapshot-delete", snapshot_delete_desc, :vmid, :snapshot_id,
|
1135
|
-
:options =>
|
1136
|
-
OneVMHelper::WEEKLY,
|
1137
|
-
OneVMHelper::MONTHLY,
|
1138
|
-
OneVMHelper::YEARLY,
|
1139
|
-
OneVMHelper::HOURLY,
|
1140
|
-
OneVMHelper::END_TIME] do
|
1092
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1141
1093
|
if !options[:schedule].nil?
|
1142
1094
|
# add snap ID as an argument
|
1143
1095
|
options[:args] = args[1]
|
@@ -1159,12 +1111,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1159
1111
|
|
1160
1112
|
command :"disk-snapshot-create", disk_snapshot_create_desc,
|
1161
1113
|
:vmid, :diskid, :name,
|
1162
|
-
:options =>
|
1163
|
-
OneVMHelper::WEEKLY,
|
1164
|
-
OneVMHelper::MONTHLY,
|
1165
|
-
OneVMHelper::YEARLY,
|
1166
|
-
OneVMHelper::HOURLY,
|
1167
|
-
OneVMHelper::END_TIME] do
|
1114
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1168
1115
|
if !options[:schedule].nil?
|
1169
1116
|
# add disk ID and name as arguments
|
1170
1117
|
options[:args] = "#{args[1]},#{args[2]}"
|
@@ -1186,12 +1133,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1186
1133
|
|
1187
1134
|
command :"disk-snapshot-revert", disk_snapshot_revert_desc,
|
1188
1135
|
:vmid, :diskid, :disk_snapshot_id,
|
1189
|
-
:options =>
|
1190
|
-
OneVMHelper::WEEKLY,
|
1191
|
-
OneVMHelper::MONTHLY,
|
1192
|
-
OneVMHelper::YEARLY,
|
1193
|
-
OneVMHelper::HOURLY,
|
1194
|
-
OneVMHelper::END_TIME] do
|
1136
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1195
1137
|
if !options[:schedule].nil?
|
1196
1138
|
# add disk ID and snap ID as arguments
|
1197
1139
|
options[:args] = "#{args[1]},#{args[2]}"
|
@@ -1213,12 +1155,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1213
1155
|
|
1214
1156
|
command :"disk-snapshot-delete", disk_snapshot_delete_desc,
|
1215
1157
|
:vmid, :diskid, :disk_snapshot_id,
|
1216
|
-
:options =>
|
1217
|
-
OneVMHelper::WEEKLY,
|
1218
|
-
OneVMHelper::MONTHLY,
|
1219
|
-
OneVMHelper::YEARLY,
|
1220
|
-
OneVMHelper::HOURLY,
|
1221
|
-
OneVMHelper::END_TIME] do
|
1158
|
+
:options => OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1222
1159
|
if !options[:schedule].nil?
|
1223
1160
|
# add disk ID and snap ID as arguments
|
1224
1161
|
options[:args] = "#{args[1]},#{args[2]}"
|
@@ -1278,7 +1215,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1278
1215
|
end
|
1279
1216
|
|
1280
1217
|
list_desc = <<-EOT.unindent
|
1281
|
-
Lists VMs in the pool
|
1218
|
+
Lists VMs in the pool. #{OneVMHelper.list_layout_help}
|
1282
1219
|
EOT
|
1283
1220
|
|
1284
1221
|
command :list, list_desc, [:filterflag, nil],
|
@@ -1333,13 +1270,15 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1333
1270
|
Resizes the capacity of a Virtual Machine (offline, the VM cannot be
|
1334
1271
|
RUNNING)
|
1335
1272
|
|
1273
|
+
#{OpenNebulaHelper::TEMPLATE_INPUT}
|
1336
1274
|
EOT
|
1337
1275
|
|
1338
1276
|
command :resize, resize_desc, :vmid,
|
1339
|
-
:options => OpenNebulaHelper::CAPACITY_OPTIONS_VM +
|
1340
|
-
[ENFORCE, OneVMHelper::FILE] do
|
1277
|
+
:options => OpenNebulaHelper::CAPACITY_OPTIONS_VM + [ENFORCE, OpenNebulaHelper::FILE] do
|
1341
1278
|
if options[:file]
|
1342
1279
|
template = File.read(options[:file])
|
1280
|
+
elsif STDIN.wait_readable(0)
|
1281
|
+
template = STDIN.read
|
1343
1282
|
else
|
1344
1283
|
template = ''
|
1345
1284
|
|
@@ -1392,13 +1331,16 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1392
1331
|
In running state only changes in CONTEXT and BACKUP_CONFIG take effect
|
1393
1332
|
immediately, other values may need a VM restart.
|
1394
1333
|
|
1395
|
-
This command accepts a template
|
1396
|
-
|
1334
|
+
This command accepts a template or opens an editor.
|
1335
|
+
#{OpenNebulaHelper::TEMPLATE_INPUT}
|
1336
|
+
|
1337
|
+
The full list of configuration attributes are:
|
1397
1338
|
|
1398
1339
|
OS = ["ARCH", "MACHINE", "KERNEL", "INITRD", "BOOTLOADER", "BOOT", "UUID"]
|
1399
1340
|
FEATURES = ["ACPI", "PAE", "APIC", "LOCALTIME", "HYPERV", "GUEST_AGENT", "IOTHREADS"]
|
1400
1341
|
INPUT = ["TYPE", "BUS"]
|
1401
1342
|
GRAPHICS = ["TYPE", "LISTEN", "PASSWD", "KEYMAP" ]
|
1343
|
+
VIDEO = ["TYPE", "IOMMU", "ATS", "VRAM", "RESOLUTION"]
|
1402
1344
|
RAW = ["DATA", "DATA_VMX", "TYPE", "VALIDATE"]
|
1403
1345
|
CPU_MODEL = ["MODEL"]
|
1404
1346
|
BACKUP_CONFIG = ["FS_FREEZE", "KEEP_LAST", "BACKUP_VOLATILE", "MODE"]
|
@@ -1411,6 +1353,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1411
1353
|
|
1412
1354
|
begin
|
1413
1355
|
template = File.read(args[1]) if args[1]
|
1356
|
+
template = STDIN.read if STDIN.wait_readable(0)
|
1414
1357
|
rescue StandardError => e
|
1415
1358
|
STDERR.puts "Error reading template: #{e.message}."
|
1416
1359
|
exit(-1)
|
@@ -1430,8 +1373,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1430
1373
|
'BACKUP_CONFIG')
|
1431
1374
|
template = vm.template_like_str('TEMPLATE', true,
|
1432
1375
|
'OS | FEATURES | INPUT | '\
|
1433
|
-
'GRAPHICS |
|
1434
|
-
'CPU_MODEL')
|
1376
|
+
'GRAPHICS | VIDEO | RAW | '\
|
1377
|
+
'CONTEXT | CPU_MODEL')
|
1435
1378
|
|
1436
1379
|
template << "\n" << backup
|
1437
1380
|
|
@@ -1485,11 +1428,11 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1485
1428
|
create_chart_desc = <<-EOT.unindent
|
1486
1429
|
Adds a charter to the VM, these are some consecutive scheduled actions
|
1487
1430
|
|
1488
|
-
You can configure the actions in
|
1431
|
+
You can configure the actions in #{OneVMHelper.conf_file}
|
1489
1432
|
EOT
|
1490
1433
|
|
1491
1434
|
command :'create-chart', create_chart_desc, :vmid do
|
1492
|
-
charters = helper.
|
1435
|
+
charters = helper.charters
|
1493
1436
|
|
1494
1437
|
if charters.nil?
|
1495
1438
|
STDERR.puts 'No charters found on configuration file'
|
@@ -1512,10 +1455,7 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1512
1455
|
action.to_s,
|
1513
1456
|
time[:warning][:time] + acc_w)
|
1514
1457
|
|
1515
|
-
if
|
1516
|
-
STDERR.puts rc.message
|
1517
|
-
exit(-1)
|
1518
|
-
end
|
1458
|
+
exit(-1) if rc < 0
|
1519
1459
|
|
1520
1460
|
acc_t += time[:time].to_i
|
1521
1461
|
acc_w += time[:warning][:time].to_i
|
@@ -1551,7 +1491,38 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1551
1491
|
:vmid,
|
1552
1492
|
:sched_id,
|
1553
1493
|
[:file, nil] do
|
1554
|
-
helper.update_schedule_action(args[0], args[1], args[2])
|
1494
|
+
helper.update_schedule_action(args[0], args[1], args[2], options)
|
1495
|
+
|
1496
|
+
0
|
1497
|
+
end
|
1498
|
+
|
1499
|
+
sched_delete_desc = <<-EOT.unindent
|
1500
|
+
Deletes a Scheduled Action from the VM
|
1501
|
+
EOT
|
1502
|
+
|
1503
|
+
command :'sched-delete', sched_delete_desc, :vmid, :sched_id do
|
1504
|
+
helper.perform_action(args[0], {}, 'Scheduled Action deleted') do |vm|
|
1505
|
+
rc = vm.sched_action_delete(args[1])
|
1506
|
+
|
1507
|
+
if OpenNebula.is_error?(rc)
|
1508
|
+
STDERR.puts "Error deleting: #{rc.message}"
|
1509
|
+
exit(-1)
|
1510
|
+
end
|
1511
|
+
end
|
1512
|
+
|
1513
|
+
0
|
1514
|
+
end
|
1515
|
+
|
1516
|
+
sched_update_desc = <<-EOT.unindent
|
1517
|
+
Updates a Scheduled Action from a VM
|
1518
|
+
EOT
|
1519
|
+
|
1520
|
+
command :'sched-update',
|
1521
|
+
sched_update_desc,
|
1522
|
+
:vmid,
|
1523
|
+
:sched_id,
|
1524
|
+
[:file, nil] do
|
1525
|
+
helper.update_schedule_action(args[0], args[1], args[2], options)
|
1555
1526
|
|
1556
1527
|
0
|
1557
1528
|
end
|
@@ -1566,19 +1537,14 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1566
1537
|
backup_vm_desc,
|
1567
1538
|
:vmid,
|
1568
1539
|
:options => [RESET_BACKUP,
|
1569
|
-
OneDatastoreHelper::DATASTORE
|
1570
|
-
|
1571
|
-
OneVMHelper::WEEKLY,
|
1572
|
-
OneVMHelper::MONTHLY,
|
1573
|
-
OneVMHelper::YEARLY,
|
1574
|
-
OneVMHelper::HOURLY,
|
1575
|
-
OneVMHelper::END_TIME] do
|
1540
|
+
OneDatastoreHelper::DATASTORE] +
|
1541
|
+
OpenNebulaHelper::SCHEDULE_OPTIONS do
|
1576
1542
|
options[:datastore] = -1 if options[:datastore].nil?
|
1577
1543
|
|
1578
1544
|
reset = options[:reset] == true
|
1579
1545
|
|
1580
1546
|
if !options[:schedule].nil?
|
1581
|
-
options[:args] = options[:datastore]
|
1547
|
+
options[:args] = "#{options[:datastore]},#{reset ? 1 : 0}"
|
1582
1548
|
|
1583
1549
|
helper.schedule_actions([args[0]], options, @comm_name)
|
1584
1550
|
else
|
@@ -1716,8 +1682,8 @@ CommandParser::CmdParser.new(ARGV) do
|
|
1716
1682
|
end
|
1717
1683
|
end
|
1718
1684
|
|
1719
|
-
# Deprecated commands
|
1685
|
+
# Deprecated commands, remove these commands in release 8.x
|
1720
1686
|
|
1721
|
-
deprecated_command(:
|
1722
|
-
deprecated_command(:
|
1687
|
+
deprecated_command(:'delete-chart', 'sched-delete')
|
1688
|
+
deprecated_command(:'update-chart', 'sched-update')
|
1723
1689
|
end
|