opennebula-cli 3.9.80.beta → 3.9.90.rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/oneuser +1 -1
- data/bin/onevm +48 -10
- data/lib/cli_helper.rb +1 -1
- data/lib/command_parser.rb +32 -3
- data/lib/one_helper.rb +22 -5
- data/lib/one_helper/oneacct_helper.rb +5 -1
- data/lib/one_helper/onegroup_helper.rb +1 -1
- data/lib/one_helper/onehost_helper.rb +20 -10
- data/lib/one_helper/oneuser_helper.rb +1 -1
- data/lib/one_helper/onevm_helper.rb +13 -9
- metadata +5 -5
data/bin/oneuser
CHANGED
data/bin/onevm
CHANGED
|
@@ -204,7 +204,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
204
204
|
end
|
|
205
205
|
end
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
delete_desc = <<-EOT.unindent
|
|
208
208
|
Deletes the given VM. Using --recreate resubmits the VM.
|
|
209
209
|
|
|
210
210
|
Resubmits the VM to PENDING state. This is intended for VMs stuck in a
|
|
@@ -214,17 +214,17 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
214
214
|
States: ANY
|
|
215
215
|
EOT
|
|
216
216
|
|
|
217
|
-
command :
|
|
217
|
+
command :delete, delete_desc, [:range, :vmid_list],
|
|
218
218
|
:options => [OneVMHelper::SCHEDULE, OneVMHelper::RECREATE] do
|
|
219
219
|
|
|
220
|
-
command_name="
|
|
220
|
+
command_name="delete"
|
|
221
221
|
command_name<<"-recreate" if options[:recreate]
|
|
222
222
|
|
|
223
223
|
if (!options[:schedule].nil?)
|
|
224
224
|
helper.schedule_actions(args[0], options, command_name)
|
|
225
225
|
else
|
|
226
226
|
helper.perform_actions(args[0],options,"deleted") do |vm|
|
|
227
|
-
vm.
|
|
227
|
+
vm.delete(options[:recreate]==true)
|
|
228
228
|
end
|
|
229
229
|
end
|
|
230
230
|
end
|
|
@@ -268,7 +268,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
268
268
|
Sets the specified VM disk to be saved in a new Image. The Image is
|
|
269
269
|
created immediately, but the contents are saved only if the VM is
|
|
270
270
|
shut down gracefully (i.e., using 'onevm shutdown' and not
|
|
271
|
-
'onevm
|
|
271
|
+
'onevm delete')
|
|
272
272
|
|
|
273
273
|
If '--live' is specified, the Image will be saved immediately.
|
|
274
274
|
|
|
@@ -319,20 +319,47 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
319
319
|
end
|
|
320
320
|
end
|
|
321
321
|
|
|
322
|
+
undeploy_desc = <<-EOT.unindent
|
|
323
|
+
Shuts down the given VM. The VM is saved in the system Datastore.
|
|
324
|
+
|
|
325
|
+
With --hard it unplugs the VM.
|
|
326
|
+
|
|
327
|
+
States: RUNNING
|
|
328
|
+
EOT
|
|
329
|
+
|
|
330
|
+
command :undeploy, undeploy_desc, [:range,:vmid_list],
|
|
331
|
+
:options => [OneVMHelper::SCHEDULE, OneVMHelper::HARD] do
|
|
332
|
+
|
|
333
|
+
command_name='undeploy'
|
|
334
|
+
command_name<<'-hard' if options[:hard]
|
|
335
|
+
|
|
336
|
+
if (!options[:schedule].nil?)
|
|
337
|
+
helper.schedule_actions(args[0], options, command_name)
|
|
338
|
+
else
|
|
339
|
+
helper.perform_actions(args[0],options,"shutting down") do |vm|
|
|
340
|
+
vm.undeploy(options[:hard]==true)
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
322
345
|
poweroff_desc = <<-EOT.unindent
|
|
323
346
|
Powers off the given VM. The VM will remain in the poweroff state, and
|
|
324
|
-
can be powered on with the 'onevm
|
|
347
|
+
can be powered on with the 'onevm resume' command.
|
|
325
348
|
|
|
326
349
|
States: RUNNING
|
|
327
350
|
EOT
|
|
328
351
|
|
|
329
352
|
command :poweroff, poweroff_desc, [:range,:vmid_list],
|
|
330
|
-
:options => [OneVMHelper::SCHEDULE] do
|
|
353
|
+
:options => [OneVMHelper::SCHEDULE, OneVMHelper::HARD] do
|
|
354
|
+
|
|
355
|
+
command_name='poweroff'
|
|
356
|
+
command_name<<'-hard' if options[:hard]
|
|
357
|
+
|
|
331
358
|
if (!options[:schedule].nil?)
|
|
332
359
|
helper.schedule_actions(args[0], options, @comm_name)
|
|
333
360
|
else
|
|
334
361
|
helper.perform_actions(args[0],options,"shutting down") do |vm|
|
|
335
|
-
vm.poweroff
|
|
362
|
+
vm.poweroff(options[:hard]==true)
|
|
336
363
|
end
|
|
337
364
|
end
|
|
338
365
|
end
|
|
@@ -405,7 +432,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
405
432
|
boot_desc = <<-EOT.unindent
|
|
406
433
|
Boots the given VM.
|
|
407
434
|
|
|
408
|
-
States: UNKNOWN, BOOT
|
|
435
|
+
States: UNKNOWN, BOOT
|
|
409
436
|
EOT
|
|
410
437
|
|
|
411
438
|
command :boot, boot_desc, [:range,:vmid_list],
|
|
@@ -460,7 +487,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
460
487
|
resume_desc = <<-EOT.unindent
|
|
461
488
|
Resumes the execution of the a saved VM
|
|
462
489
|
|
|
463
|
-
States: STOPPED, SUSPENDED
|
|
490
|
+
States: STOPPED, SUSPENDED, UNDEPLOYED, POWEROFF
|
|
464
491
|
EOT
|
|
465
492
|
|
|
466
493
|
command :resume, resume_desc, [:range,:vmid_list],
|
|
@@ -746,4 +773,15 @@ cmd=CommandParser::CmdParser.new(ARGV) do
|
|
|
746
773
|
vm.resize(template, enforce)
|
|
747
774
|
end
|
|
748
775
|
end
|
|
776
|
+
|
|
777
|
+
# Deprecated commands
|
|
778
|
+
|
|
779
|
+
deprecated_command(:attachdisk, 'disk-attach')
|
|
780
|
+
deprecated_command(:detachdisk, 'disk-detach')
|
|
781
|
+
deprecated_command(:saveas, 'disk-snapshot')
|
|
782
|
+
deprecated_command(:livemigrate, 'migrate --live')
|
|
783
|
+
deprecated_command(:cancel, 'shutdown --hard')
|
|
784
|
+
deprecated_command(:reset, 'reboot --hard')
|
|
785
|
+
deprecated_command(:restart, 'boot')
|
|
786
|
+
deprecated_command(:resubmit, 'destroy --recreate')
|
|
749
787
|
end
|
data/lib/cli_helper.rb
CHANGED
data/lib/command_parser.rb
CHANGED
|
@@ -56,6 +56,7 @@ module CommandParser
|
|
|
56
56
|
def initialize(args=[], &block)
|
|
57
57
|
@available_options = Array.new
|
|
58
58
|
@commands = Hash.new
|
|
59
|
+
@command_list = Array.new
|
|
59
60
|
@formats = Hash.new
|
|
60
61
|
|
|
61
62
|
@main = nil
|
|
@@ -288,6 +289,21 @@ module CommandParser
|
|
|
288
289
|
end
|
|
289
290
|
}
|
|
290
291
|
cmd[:proc] = block
|
|
292
|
+
@command_list << name.to_sym
|
|
293
|
+
@commands[name.to_sym] = cmd
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
def deprecated_command(name, new_command)
|
|
297
|
+
cmd = Hash.new
|
|
298
|
+
cmd[:desc] = "Deprecated, use #{new_command} instead"
|
|
299
|
+
cmd[:arity] = 0
|
|
300
|
+
cmd[:options] = []
|
|
301
|
+
cmd[:args_format] = [[:string, nil]] * 20
|
|
302
|
+
cmd[:deprecated] = new_command
|
|
303
|
+
cmd[:proc] = lambda do
|
|
304
|
+
print_deprecated(new_command)
|
|
305
|
+
end
|
|
306
|
+
|
|
291
307
|
@commands[name.to_sym] = cmd
|
|
292
308
|
end
|
|
293
309
|
|
|
@@ -418,6 +434,10 @@ module CommandParser
|
|
|
418
434
|
exit -1
|
|
419
435
|
end
|
|
420
436
|
|
|
437
|
+
if comm[:deprecated]
|
|
438
|
+
print_deprecated(comm[:deprecated])
|
|
439
|
+
end
|
|
440
|
+
|
|
421
441
|
extra_options = comm[:options] if comm
|
|
422
442
|
parse(extra_options)
|
|
423
443
|
|
|
@@ -617,7 +637,9 @@ module CommandParser
|
|
|
617
637
|
puts "## OPTIONS"
|
|
618
638
|
|
|
619
639
|
shown_opts = Array.new
|
|
620
|
-
@
|
|
640
|
+
@command_list.each do |key|
|
|
641
|
+
value = @commands[key]
|
|
642
|
+
|
|
621
643
|
value[:options].flatten.each do |o|
|
|
622
644
|
if shown_opts.include?(o[:name])
|
|
623
645
|
next
|
|
@@ -659,11 +681,12 @@ module CommandParser
|
|
|
659
681
|
else
|
|
660
682
|
puts "## COMMANDS"
|
|
661
683
|
|
|
662
|
-
@
|
|
684
|
+
@command_list.each do |key|
|
|
685
|
+
value = @commands[key]
|
|
663
686
|
printf cmd_format5, "* #{key} "
|
|
664
687
|
|
|
665
688
|
print_command(value)
|
|
666
|
-
|
|
689
|
+
end
|
|
667
690
|
end
|
|
668
691
|
end
|
|
669
692
|
|
|
@@ -713,6 +736,12 @@ module CommandParser
|
|
|
713
736
|
}
|
|
714
737
|
end
|
|
715
738
|
|
|
739
|
+
def print_deprecated(new_command)
|
|
740
|
+
puts "This command is deprecated, use instead:"
|
|
741
|
+
puts " $ #{File.basename $0} #{new_command}"
|
|
742
|
+
exit(-1)
|
|
743
|
+
end
|
|
744
|
+
|
|
716
745
|
def word_wrap(size, text, first_size=nil)
|
|
717
746
|
output=[]
|
|
718
747
|
line=""
|
data/lib/one_helper.rb
CHANGED
|
@@ -130,7 +130,9 @@ EOT
|
|
|
130
130
|
{
|
|
131
131
|
:name => 'memory',
|
|
132
132
|
:large => '--memory memory',
|
|
133
|
-
:description => 'Memory
|
|
133
|
+
:description => 'Memory amount given to the VM. By default the '<<
|
|
134
|
+
"unit is megabytes. To use gigabytes add a 'g', floats "<<
|
|
135
|
+
"can be used: 8g=8192, 0.5g=512",
|
|
134
136
|
:format => String,
|
|
135
137
|
:proc => lambda do |o,options|
|
|
136
138
|
m=o.strip.match(/^(\d+(?:\.\d+)?)(m|mb|g|gb)?$/i)
|
|
@@ -608,6 +610,18 @@ EOT
|
|
|
608
610
|
end
|
|
609
611
|
end
|
|
610
612
|
|
|
613
|
+
def OpenNebulaHelper.short_period_to_str(time, print_seconds=true)
|
|
614
|
+
seconds=time.to_i
|
|
615
|
+
minutes, seconds=seconds.divmod(60)
|
|
616
|
+
hours, minutes=minutes.divmod(60)
|
|
617
|
+
|
|
618
|
+
if print_seconds
|
|
619
|
+
"%3dh%02dm%02ds" % [hours, minutes, seconds]
|
|
620
|
+
else
|
|
621
|
+
"%3dh%02dm" % [hours, minutes]
|
|
622
|
+
end
|
|
623
|
+
end
|
|
624
|
+
|
|
611
625
|
BinarySufix = ["K", "M", "G", "T" ]
|
|
612
626
|
|
|
613
627
|
def OpenNebulaHelper.unit_to_str(value, options, unit="K")
|
|
@@ -729,8 +743,8 @@ EOT
|
|
|
729
743
|
end
|
|
730
744
|
end
|
|
731
745
|
|
|
732
|
-
if options[:net_context] && options[:
|
|
733
|
-
nets=options[:
|
|
746
|
+
if options[:net_context] && options[:nic]
|
|
747
|
+
nets=options[:nic].map {|n| parse_user_object(n).last }
|
|
734
748
|
|
|
735
749
|
if nets!=nets.uniq
|
|
736
750
|
STDERR.puts "Network context generation from command "<<
|
|
@@ -745,6 +759,9 @@ EOT
|
|
|
745
759
|
lines<<"ETH#{index}_MASK = \"$NETWORK[NETWORK_MASK, NETWORK=\\\"#{name}\\\"]\""
|
|
746
760
|
lines<<"ETH#{index}_GATEWAY = \"$NETWORK[GATEWAY, NETWORK=\\\"#{name}\\\"]\""
|
|
747
761
|
lines<<"ETH#{index}_DNS = \"$NETWORK[DNS, NETWORK=\\\"#{name}\\\"]\""
|
|
762
|
+
lines<<"ETH#{index}_IPV6 = \"$NIC[IP6_GLOBAL, NETWORK=\\\"#{name}\\\"]\""
|
|
763
|
+
lines<<"ETH#{index}_GATEWAY6 = \"$NETWORK[GATEWAY6, NETWORK=\\\"#{name}\\\"]\""
|
|
764
|
+
lines<<"ETH#{index}_CONTEXT_FORCE_IPV4 = \"$NETWORK[CONTEXT_FORCE_IPV4, NETWORK=\\\"#{name}\\\"]\""
|
|
748
765
|
end
|
|
749
766
|
end
|
|
750
767
|
|
|
@@ -789,8 +806,8 @@ EOT
|
|
|
789
806
|
template<<res.last
|
|
790
807
|
end
|
|
791
808
|
|
|
792
|
-
if options[:
|
|
793
|
-
res=create_disk_net(options[:
|
|
809
|
+
if options[:nic]
|
|
810
|
+
res=create_disk_net(options[:nic], 'NIC', 'NETWORK')
|
|
794
811
|
return res if res.first!=0
|
|
795
812
|
|
|
796
813
|
template<<res.last
|
|
@@ -112,6 +112,10 @@ class AcctHelper < OpenNebulaHelper::OneHelper
|
|
|
112
112
|
d["HOSTNAME"]
|
|
113
113
|
end
|
|
114
114
|
|
|
115
|
+
column :"ACTION", "VM state change action", :left, :size=>16 do |d|
|
|
116
|
+
VirtualMachine.get_history_action d["ACTION"]
|
|
117
|
+
end
|
|
118
|
+
|
|
115
119
|
column :REASON, "VM state change reason", :left, :size=>4 do |d|
|
|
116
120
|
VirtualMachine.get_reason d["REASON"]
|
|
117
121
|
end
|
|
@@ -142,7 +146,7 @@ class AcctHelper < OpenNebulaHelper::OneHelper
|
|
|
142
146
|
OpenNebulaHelper.unit_to_str(d["VM"]["NET_TX"].to_i / 1024.0, {})
|
|
143
147
|
end
|
|
144
148
|
|
|
145
|
-
default :VID, :HOSTNAME, :REASON, :START_TIME, :END_TIME, :MEMORY, :CPU, :NET_RX, :NET_TX
|
|
149
|
+
default :VID, :HOSTNAME, :ACTION, :REASON, :START_TIME, :END_TIME, :MEMORY, :CPU, :NET_RX, :NET_TX
|
|
146
150
|
end
|
|
147
151
|
|
|
148
152
|
def self.print_start_end_time_header(start_time, end_time)
|
|
@@ -109,7 +109,7 @@ class OneGroupHelper < OpenNebulaHelper::OneHelper
|
|
|
109
109
|
limit = "0" if limit.nil? || limit == ""
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
"%
|
|
112
|
+
"%3.1f / %3.0f" % [d['VM_QUOTA']['VM']["CPU_USED"], limit]
|
|
113
113
|
else
|
|
114
114
|
"-"
|
|
115
115
|
end
|
|
@@ -102,13 +102,19 @@ class OneHostHelper < OpenNebulaHelper::OneHelper
|
|
|
102
102
|
|
|
103
103
|
column :ALLOCATED_CPU, "Allocated CPU)", :size=>18 do |d|
|
|
104
104
|
max_cpu = d["HOST_SHARE"]["MAX_CPU"].to_i
|
|
105
|
+
cpu_usage = d["HOST_SHARE"]["CPU_USAGE"].to_i
|
|
105
106
|
|
|
106
|
-
if max_cpu
|
|
107
|
-
cpu_usage = d["HOST_SHARE"]["CPU_USAGE"].to_i
|
|
108
|
-
ratio = (cpu_usage*100) / max_cpu
|
|
109
|
-
"#{cpu_usage} / #{max_cpu} (#{ratio}%)"
|
|
110
|
-
else
|
|
107
|
+
if max_cpu == 0 && cpu_usage == 0
|
|
111
108
|
'-'
|
|
109
|
+
else
|
|
110
|
+
cpu_usage = d["HOST_SHARE"]["CPU_USAGE"].to_i
|
|
111
|
+
|
|
112
|
+
if max_cpu != 0
|
|
113
|
+
ratio = (cpu_usage*100) / max_cpu
|
|
114
|
+
"#{cpu_usage} / #{max_cpu} (#{ratio}%)"
|
|
115
|
+
else
|
|
116
|
+
"#{cpu_usage} / -"
|
|
117
|
+
end
|
|
112
118
|
end
|
|
113
119
|
end
|
|
114
120
|
|
|
@@ -126,13 +132,17 @@ class OneHostHelper < OpenNebulaHelper::OneHelper
|
|
|
126
132
|
|
|
127
133
|
column :ALLOCATED_MEM, "Allocated MEM", :size=>18 do |d|
|
|
128
134
|
max_mem = d["HOST_SHARE"]["MAX_MEM"].to_i
|
|
135
|
+
mem_usage = d["HOST_SHARE"]["MEM_USAGE"].to_i
|
|
129
136
|
|
|
130
|
-
if max_mem
|
|
131
|
-
mem_usage = d["HOST_SHARE"]["MEM_USAGE"].to_i
|
|
132
|
-
ratio = (mem_usage*100) / max_mem
|
|
133
|
-
"#{OpenNebulaHelper.unit_to_str(mem_usage,options)} / #{OpenNebulaHelper.unit_to_str(max_mem,options)} (#{ratio}%)"
|
|
134
|
-
else
|
|
137
|
+
if max_mem == 0 && mem_usage == 0
|
|
135
138
|
'-'
|
|
139
|
+
else
|
|
140
|
+
if max_mem != 0
|
|
141
|
+
ratio = (mem_usage*100) / max_mem
|
|
142
|
+
"#{OpenNebulaHelper.unit_to_str(mem_usage,options)} / #{OpenNebulaHelper.unit_to_str(max_mem,options)} (#{ratio}%)"
|
|
143
|
+
else
|
|
144
|
+
"#{OpenNebulaHelper.unit_to_str(mem_usage,options)} / -"
|
|
145
|
+
end
|
|
136
146
|
end
|
|
137
147
|
end
|
|
138
148
|
|
|
@@ -209,7 +209,7 @@ class OneUserHelper < OpenNebulaHelper::OneHelper
|
|
|
209
209
|
limit = "0" if limit.nil? || limit == ""
|
|
210
210
|
end
|
|
211
211
|
|
|
212
|
-
"%
|
|
212
|
+
"%3.1f / %3.0f" % [d['VM_QUOTA']['VM']["CPU_USED"], limit]
|
|
213
213
|
else
|
|
214
214
|
"-"
|
|
215
215
|
end
|
|
@@ -247,7 +247,7 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
|
|
|
247
247
|
puts str % ["RESCHED", OpenNebulaHelper.boolean_to_str(vm['RESCHED'])]
|
|
248
248
|
puts str % ["HOST",
|
|
249
249
|
vm['/VM/HISTORY_RECORDS/HISTORY[last()]/HOSTNAME']] if
|
|
250
|
-
%w{ACTIVE SUSPENDED}.include? vm.state_str
|
|
250
|
+
%w{ACTIVE SUSPENDED POWEROFF}.include? vm.state_str
|
|
251
251
|
puts str % ["START TIME",
|
|
252
252
|
OpenNebulaHelper.time_to_str(vm['/VM/STIME'])]
|
|
253
253
|
puts str % ["END TIME",
|
|
@@ -531,15 +531,19 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
|
|
|
531
531
|
|
|
532
532
|
def format_history(vm)
|
|
533
533
|
table=CLIHelper::ShowTable.new(nil, self) do
|
|
534
|
-
column :SEQ, "Sequence number", :size=>
|
|
534
|
+
column :SEQ, "Sequence number", :size=>3 do |d|
|
|
535
535
|
d["SEQ"]
|
|
536
536
|
end
|
|
537
537
|
|
|
538
|
-
column :HOST, "Host name of the VM container", :left, :size=>
|
|
538
|
+
column :HOST, "Host name of the VM container", :left, :size=>15 do |d|
|
|
539
539
|
d["HOSTNAME"]
|
|
540
540
|
end
|
|
541
541
|
|
|
542
|
-
column :
|
|
542
|
+
column :"ACTION", "VM state change action", :left, :size=>16 do |d|
|
|
543
|
+
VirtualMachine.get_history_action d["ACTION"]
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
column :REASON, "VM state change reason", :left, :size=>4 do |d|
|
|
543
547
|
VirtualMachine.get_reason d["REASON"]
|
|
544
548
|
end
|
|
545
549
|
|
|
@@ -547,14 +551,14 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
|
|
|
547
551
|
OpenNebulaHelper.time_to_str(d['STIME'])
|
|
548
552
|
end
|
|
549
553
|
|
|
550
|
-
column :TIME, "Total time in this state", :size=>
|
|
554
|
+
column :TIME, "Total time in this state", :size=>11 do |d|
|
|
551
555
|
stime = d["STIME"].to_i
|
|
552
556
|
etime = d["ETIME"]=="0" ? Time.now.to_i : d["ETIME"].to_i
|
|
553
557
|
dtime = etime-stime
|
|
554
|
-
OpenNebulaHelper.period_to_str(dtime)
|
|
558
|
+
OpenNebulaHelper.period_to_str(dtime, false)
|
|
555
559
|
end
|
|
556
560
|
|
|
557
|
-
column :
|
|
561
|
+
column :PROLOG, "Prolog time for this state", :size=>10 do |d|
|
|
558
562
|
stime = d["PSTIME"].to_i
|
|
559
563
|
if d["PSTIME"]=="0"
|
|
560
564
|
etime=0
|
|
@@ -562,10 +566,10 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
|
|
|
562
566
|
etime = d["PETIME"]=="0" ? Time.now.to_i: d["PETIME"].to_i
|
|
563
567
|
end
|
|
564
568
|
dtime = etime-stime
|
|
565
|
-
OpenNebulaHelper.
|
|
569
|
+
OpenNebulaHelper.short_period_to_str(dtime)
|
|
566
570
|
end
|
|
567
571
|
|
|
568
|
-
default :SEQ, :HOST, :REASON, :START, :TIME, :
|
|
572
|
+
default :SEQ, :HOST, :ACTION, :REASON, :START, :TIME, :PROLOG
|
|
569
573
|
end
|
|
570
574
|
|
|
571
575
|
vm_hash=vm.to_hash
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opennebula-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.9.
|
|
4
|
+
version: 3.9.90.rc
|
|
5
5
|
prerelease: 7
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-04-19 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: opennebula
|
|
@@ -18,7 +18,7 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - '='
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 3.9.
|
|
21
|
+
version: 3.9.90.rc
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - '='
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 3.9.
|
|
29
|
+
version: 3.9.90.rc
|
|
30
30
|
description: Commands used to talk to OpenNebula
|
|
31
31
|
email: contact@opennebula.org
|
|
32
32
|
executables:
|
|
@@ -95,6 +95,6 @@ rubyforge_project:
|
|
|
95
95
|
rubygems_version: 1.8.25
|
|
96
96
|
signing_key:
|
|
97
97
|
specification_version: 3
|
|
98
|
-
summary: OpenNebula
|
|
98
|
+
summary: OpenNebula Command Line Interface
|
|
99
99
|
test_files: []
|
|
100
100
|
has_rdoc:
|