opennebula-cli 5.11.80.pre → 5.12.0.2
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.
- checksums.yaml +4 -4
- data/bin/oneacct +3 -2
- data/bin/oneacl +3 -2
- data/bin/onecluster +3 -2
- data/bin/onedatastore +3 -2
- data/bin/oneflow +3 -2
- data/bin/oneflow-template +3 -2
- data/bin/onegroup +3 -2
- data/bin/onehook +3 -2
- data/bin/onehost +70 -2
- data/bin/oneimage +3 -2
- data/bin/onemarket +3 -2
- data/bin/onemarketapp +16 -4
- data/bin/onesecgroup +3 -2
- data/bin/oneshowback +3 -2
- data/bin/onetemplate +3 -2
- data/bin/oneuser +3 -2
- data/bin/onevcenter +3 -2
- data/bin/onevdc +3 -2
- data/bin/onevm +89 -3
- data/bin/onevmgroup +3 -2
- data/bin/onevnet +6 -39
- data/bin/onevntemplate +3 -2
- data/bin/onevrouter +3 -2
- data/bin/onezone +6 -2
- data/lib/cli_helper.rb +50 -29
- data/lib/command_parser.rb +21 -6
- data/lib/one_helper.rb +65 -4
- data/lib/one_helper/oneacl_helper.rb +1 -3
- data/lib/one_helper/onecluster_helper.rb +3 -3
- data/lib/one_helper/oneflow_helper.rb +13 -3
- data/lib/one_helper/oneflowtemplate_helper.rb +8 -2
- data/lib/one_helper/onehook_helper.rb +6 -4
- data/lib/one_helper/onehost_helper.rb +122 -46
- data/lib/one_helper/oneimage_helper.rb +1 -3
- data/lib/one_helper/oneprovision_helper.rb +2 -6
- data/lib/one_helper/onevcenter_helper.rb +3 -3
- data/lib/one_helper/onevm_helper.rb +107 -16
- data/lib/one_helper/onevnet_helper.rb +65 -1
- data/lib/one_helper/onezone_helper.rb +2 -0
- metadata +17 -17
data/bin/onevmgroup
CHANGED
@@ -27,8 +27,9 @@ else
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if File.directory?(GEMS_LOCATION)
|
30
|
-
|
31
|
-
|
30
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
31
|
+
require 'rubygems'
|
32
|
+
Gem.use_paths(File.realpath(GEMS_LOCATION))
|
32
33
|
end
|
33
34
|
|
34
35
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
data/bin/onevnet
CHANGED
@@ -27,8 +27,9 @@ else
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if File.directory?(GEMS_LOCATION)
|
30
|
-
|
31
|
-
|
30
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
31
|
+
require 'rubygems'
|
32
|
+
Gem.use_paths(File.realpath(GEMS_LOCATION))
|
32
33
|
end
|
33
34
|
|
34
35
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
@@ -350,43 +351,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
350
351
|
Update Address Range variables. SIZE, IP, MAC and TYPE cannot be updated
|
351
352
|
EOT
|
352
353
|
|
353
|
-
command :updatear, update_ar_desc, :vnetid, :ar_id, [:file, nil]
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
if OpenNebula.is_error?(rc)
|
358
|
-
puts rc.message
|
359
|
-
exit(-1)
|
360
|
-
end
|
361
|
-
|
362
|
-
obj.delete_element("AR_POOL/AR[AR_ID!=#{args[1]}]")
|
363
|
-
obj.delete_element('AR_POOL/AR/LEASES')
|
364
|
-
obj.delete_element('AR_POOL/AR/USED_LEASES')
|
365
|
-
obj.delete_element('AR_POOL/AR/MAC_END')
|
366
|
-
obj.delete_element('AR_POOL/AR/IP_END')
|
367
|
-
obj.delete_element('AR_POOL/AR/IP6_ULA')
|
368
|
-
obj.delete_element('AR_POOL/AR/IP6_ULA_END')
|
369
|
-
obj.delete_element('AR_POOL/AR/IP6_GLOBAL')
|
370
|
-
obj.delete_element('AR_POOL/AR/IP6_GLOBAL_END')
|
371
|
-
|
372
|
-
if obj.template_like_str('AR_POOL').empty?
|
373
|
-
puts "Address Range #{args[1]} does not exist for " \
|
374
|
-
"Virtual Network #{args[0]}"
|
375
|
-
exit(-1)
|
376
|
-
end
|
377
|
-
|
378
|
-
str = OpenNebulaHelper.update_template_helper(false,
|
379
|
-
args[0],
|
380
|
-
obj,
|
381
|
-
args[2],
|
382
|
-
'AR_POOL',
|
383
|
-
false)
|
384
|
-
|
385
|
-
helper.set_client(options)
|
386
|
-
obj = helper.retrieve_resource(obj.id)
|
387
|
-
|
388
|
-
obj.update_ar(str)
|
389
|
-
end
|
354
|
+
command :updatear, update_ar_desc, :vnetid, :ar_id, [:file, nil],
|
355
|
+
:options => OpenNebulaHelper::APPEND do
|
356
|
+
helper.update_ar(args[0], args[1], args[2], options)
|
390
357
|
end
|
391
358
|
|
392
359
|
rename_desc = <<-EOT.unindent
|
data/bin/onevntemplate
CHANGED
@@ -27,8 +27,9 @@ else
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if File.directory?(GEMS_LOCATION)
|
30
|
-
|
31
|
-
|
30
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
31
|
+
require 'rubygems'
|
32
|
+
Gem.use_paths(File.realpath(GEMS_LOCATION))
|
32
33
|
end
|
33
34
|
|
34
35
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
data/bin/onevrouter
CHANGED
@@ -27,8 +27,9 @@ else
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if File.directory?(GEMS_LOCATION)
|
30
|
-
|
31
|
-
|
30
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
31
|
+
require 'rubygems'
|
32
|
+
Gem.use_paths(File.realpath(GEMS_LOCATION))
|
32
33
|
end
|
33
34
|
|
34
35
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
data/bin/onezone
CHANGED
@@ -27,8 +27,9 @@ else
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if File.directory?(GEMS_LOCATION)
|
30
|
-
|
31
|
-
|
30
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
31
|
+
require 'rubygems'
|
32
|
+
Gem.use_paths(File.realpath(GEMS_LOCATION))
|
32
33
|
end
|
33
34
|
|
34
35
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
@@ -231,6 +232,9 @@ CommandParser::CmdParser.new(ARGV) do
|
|
231
232
|
|
232
233
|
command :serversync, sync_desc, :server, :options => [DATABASE] do
|
233
234
|
begin
|
235
|
+
# Suppress augeas require warning message
|
236
|
+
$VERBOSE = nil
|
237
|
+
|
234
238
|
gem 'augeas', '~> 0.6'
|
235
239
|
require 'augeas'
|
236
240
|
rescue Gem::LoadError
|
data/lib/cli_helper.rb
CHANGED
@@ -325,9 +325,10 @@ module CLIHelper
|
|
325
325
|
column[:size] = 5
|
326
326
|
|
327
327
|
conf.each do |c|
|
328
|
-
|
328
|
+
case c
|
329
|
+
when Symbol
|
329
330
|
column[c] = true
|
330
|
-
|
331
|
+
when Hash
|
331
332
|
c.each do |key, value|
|
332
333
|
column[key] = value
|
333
334
|
end
|
@@ -356,6 +357,12 @@ module CLIHelper
|
|
356
357
|
# @param options [Hash] Object with CLI user options
|
357
358
|
# @param top [Boolean] True to not update columns again
|
358
359
|
def show(data, options = {}, top = false)
|
360
|
+
if options[:list]
|
361
|
+
@cli_columns = options[:list].collect {|o| o.upcase.to_sym }
|
362
|
+
else
|
363
|
+
@cli_columns = @default_columns
|
364
|
+
end
|
365
|
+
|
359
366
|
update_columns(options) unless top
|
360
367
|
|
361
368
|
if data.is_a? Hash
|
@@ -477,7 +484,7 @@ module CLIHelper
|
|
477
484
|
|
478
485
|
# Get header in string format
|
479
486
|
def header_str
|
480
|
-
@
|
487
|
+
@cli_columns.collect do |c|
|
481
488
|
if @columns[c]
|
482
489
|
format_str(c, c.to_s)
|
483
490
|
else
|
@@ -495,12 +502,12 @@ module CLIHelper
|
|
495
502
|
|
496
503
|
update_columns_size(options)
|
497
504
|
|
505
|
+
options[:csv_del] ? del = options[:csv_del] : del = ','
|
506
|
+
|
498
507
|
if !options[:csv] && (!options.key? :no_header)
|
499
508
|
CLIHelper.print_header(header_str)
|
500
|
-
|
501
|
-
|
502
|
-
if options[:csv] && (!options.key? :no_header)
|
503
|
-
print_csv_data([@default_columns], options[:csv_del])
|
509
|
+
elsif options[:csv] && (!options.key? :no_header)
|
510
|
+
puts CSV.generate_line(@cli_columns, :col_sep => del)
|
504
511
|
end
|
505
512
|
|
506
513
|
@res_data ? print_data(@res_data, options) : puts
|
@@ -528,7 +535,13 @@ module CLIHelper
|
|
528
535
|
del ? del = del : del = ','
|
529
536
|
|
530
537
|
data.each do |l|
|
531
|
-
|
538
|
+
result = []
|
539
|
+
|
540
|
+
@cli_columns.each do |col|
|
541
|
+
result << l[@default_columns.index(col)]
|
542
|
+
end
|
543
|
+
|
544
|
+
puts CSV.generate_line(result, :col_sep => del)
|
532
545
|
end
|
533
546
|
end
|
534
547
|
|
@@ -537,25 +550,26 @@ module CLIHelper
|
|
537
550
|
# @param data [Array] Array with data to show
|
538
551
|
# @param stat_column [String] Name of the state column
|
539
552
|
def print_normal_data(data, stat_column)
|
540
|
-
ncolumns = @default_columns.length
|
541
|
-
|
542
553
|
if stat_column
|
543
|
-
stat
|
544
|
-
stat_column = @default_columns.index(stat)
|
554
|
+
stat = stat_column.upcase.to_sym
|
545
555
|
else
|
546
|
-
|
556
|
+
stat = :STAT
|
547
557
|
end
|
548
558
|
|
549
559
|
data.each do |l|
|
550
560
|
result = []
|
551
561
|
|
552
|
-
|
562
|
+
@cli_columns.each do |col|
|
563
|
+
i = @default_columns.index(col)
|
564
|
+
|
565
|
+
# Column might not exist
|
566
|
+
next unless i
|
567
|
+
|
553
568
|
dat = l[i]
|
554
|
-
col = @default_columns[i]
|
555
569
|
|
556
570
|
str = format_str(col, dat)
|
557
571
|
|
558
|
-
str = CLIHelper.color_state(str) if
|
572
|
+
str = CLIHelper.color_state(str) if col == stat
|
559
573
|
|
560
574
|
result << str
|
561
575
|
end
|
@@ -570,8 +584,17 @@ module CLIHelper
|
|
570
584
|
#
|
571
585
|
# @return [Array] Array with selected columns information
|
572
586
|
def data_array(data, options)
|
587
|
+
# Take default table columns and desired ones by the user
|
588
|
+
cols = @default_columns
|
589
|
+
|
590
|
+
@cli_columns.each do |col|
|
591
|
+
next if @default_columns.include?(col)
|
592
|
+
|
593
|
+
@default_columns.insert(@cli_columns.index(col) + 1, col)
|
594
|
+
end
|
595
|
+
|
573
596
|
res_data = data.collect do |d|
|
574
|
-
|
597
|
+
cols.collect do |c|
|
575
598
|
@columns[c][:proc].call(d).to_s if @columns[c]
|
576
599
|
end
|
577
600
|
end
|
@@ -608,7 +631,7 @@ module CLIHelper
|
|
608
631
|
def config_expand_data
|
609
632
|
ret = []
|
610
633
|
|
611
|
-
@
|
634
|
+
@cli_columns.each do |column|
|
612
635
|
expand_c = @columns[column][:expand]
|
613
636
|
|
614
637
|
next unless expand_c
|
@@ -629,7 +652,7 @@ module CLIHelper
|
|
629
652
|
def config_adjust_data
|
630
653
|
ret = []
|
631
654
|
|
632
|
-
@
|
655
|
+
@cli_columns.each do |column|
|
633
656
|
next unless @columns[column][:adjust]
|
634
657
|
|
635
658
|
ret << column.to_s.downcase
|
@@ -645,7 +668,9 @@ module CLIHelper
|
|
645
668
|
def expand_columns(expand_columns, all = false)
|
646
669
|
return if expand_columns.empty?
|
647
670
|
|
648
|
-
if $stdout.
|
671
|
+
if $stdout.isatty
|
672
|
+
terminal_size = $stdout.winsize[1]
|
673
|
+
elsif IO.console && IO.console.tty?
|
649
674
|
terminal_size = IO.console.winsize[1]
|
650
675
|
else
|
651
676
|
terminal_size = nil
|
@@ -653,13 +678,13 @@ module CLIHelper
|
|
653
678
|
|
654
679
|
return if terminal_size.nil?
|
655
680
|
|
656
|
-
default_columns = columns_info(@
|
681
|
+
default_columns = columns_info(@cli_columns)
|
657
682
|
expand_columns = columns_info(expand_columns)
|
658
683
|
|
659
684
|
total_size = total_columns_size(default_columns)
|
660
685
|
columns_size = total_columns_size(expand_columns)
|
661
686
|
|
662
|
-
terminal_size -= (@
|
687
|
+
terminal_size -= (@cli_columns.size - 1)
|
663
688
|
left_size = terminal_size - total_size
|
664
689
|
remaining_size = left_size
|
665
690
|
|
@@ -731,7 +756,7 @@ module CLIHelper
|
|
731
756
|
expand_data = []
|
732
757
|
|
733
758
|
if expand_all
|
734
|
-
expand_data = @
|
759
|
+
expand_data = @cli_columns
|
735
760
|
elsif expand
|
736
761
|
expand_data += options[:expand]
|
737
762
|
end
|
@@ -745,7 +770,7 @@ module CLIHelper
|
|
745
770
|
unless expand_all
|
746
771
|
adjust.each do |column|
|
747
772
|
column = column.upcase.to_sym
|
748
|
-
size = max_size(@
|
773
|
+
size = max_size(@cli_columns.index(column))
|
749
774
|
|
750
775
|
if size && size > @columns[column][:size]
|
751
776
|
@columns[column][:adjust] = true
|
@@ -797,10 +822,6 @@ module CLIHelper
|
|
797
822
|
rescue StandardError => e
|
798
823
|
CLIHelper.fail(e.message)
|
799
824
|
end
|
800
|
-
|
801
|
-
return unless options[:list]
|
802
|
-
|
803
|
-
@default_columns = options[:list].collect {|o| o.upcase.to_sym }
|
804
825
|
end
|
805
826
|
|
806
827
|
# Filter data
|
@@ -821,7 +842,7 @@ module CLIHelper
|
|
821
842
|
m = s.match(/^(.*?)#{operators}(.*?)$/)
|
822
843
|
|
823
844
|
if m
|
824
|
-
index = @default_columns.index(m[1].to_sym)
|
845
|
+
index = @default_columns.index(m[1].upcase.to_sym)
|
825
846
|
|
826
847
|
if index
|
827
848
|
{
|
data/lib/command_parser.rb
CHANGED
@@ -295,6 +295,11 @@ module CommandParser
|
|
295
295
|
cmd[:arity]+=1 unless args.include?(nil)
|
296
296
|
cmd[:args_format] << args
|
297
297
|
elsif args.instance_of?(Hash) && args[:options]
|
298
|
+
if args[:options].is_a? Array
|
299
|
+
args[:options].flatten!
|
300
|
+
args[:options] = args[:options].sort_by {|o| o[:name] }
|
301
|
+
end
|
302
|
+
|
298
303
|
cmd[:options] << args[:options]
|
299
304
|
else
|
300
305
|
cmd[:arity]+=1
|
@@ -649,7 +654,7 @@ module CommandParser
|
|
649
654
|
print_formatters
|
650
655
|
puts
|
651
656
|
if @version
|
652
|
-
puts "##
|
657
|
+
puts "## VERSION"
|
653
658
|
puts @version
|
654
659
|
end
|
655
660
|
end
|
@@ -679,7 +684,9 @@ module CommandParser
|
|
679
684
|
def print_options
|
680
685
|
puts "## OPTIONS"
|
681
686
|
|
682
|
-
shown_opts =
|
687
|
+
shown_opts = []
|
688
|
+
options = []
|
689
|
+
|
683
690
|
@command_list.each do |key|
|
684
691
|
value = @commands[key]
|
685
692
|
|
@@ -688,14 +695,17 @@ module CommandParser
|
|
688
695
|
next
|
689
696
|
else
|
690
697
|
shown_opts << o[:name]
|
691
|
-
|
692
|
-
print_option(o)
|
698
|
+
options << o
|
693
699
|
end
|
694
700
|
end
|
695
701
|
end
|
696
702
|
|
697
|
-
@available_options
|
698
|
-
|
703
|
+
options << @available_options
|
704
|
+
options.flatten!
|
705
|
+
options = options.sort_by {|o| o[:name] }
|
706
|
+
|
707
|
+
options.each do |o|
|
708
|
+
print_option(o)
|
699
709
|
end
|
700
710
|
end
|
701
711
|
|
@@ -724,6 +734,8 @@ module CommandParser
|
|
724
734
|
else
|
725
735
|
puts "## COMMANDS"
|
726
736
|
|
737
|
+
@command_list.sort! if @command_list
|
738
|
+
|
727
739
|
@command_list.each do |key|
|
728
740
|
value = @commands[key]
|
729
741
|
printf cmd_format5, "* #{key} "
|
@@ -766,6 +778,9 @@ module CommandParser
|
|
766
778
|
|
767
779
|
cmd_format5 = "#{' '*3}%s"
|
768
780
|
cmd_format10 = "#{' '*8}%s"
|
781
|
+
|
782
|
+
@formats = @formats.sort_by {|key, _| key } if @formats
|
783
|
+
|
769
784
|
@formats.each{ |key,value|
|
770
785
|
printf cmd_format5, "* #{key}"
|
771
786
|
puts
|
data/lib/one_helper.rb
CHANGED
@@ -31,10 +31,6 @@ module OpenNebulaHelper
|
|
31
31
|
ONE_VERSION=<<-EOT
|
32
32
|
OpenNebula #{OpenNebula::VERSION}
|
33
33
|
Copyright 2002-2020, OpenNebula Project, OpenNebula Systems
|
34
|
-
|
35
|
-
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
36
|
-
not use this file except in compliance with the License. You may obtain
|
37
|
-
a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
38
34
|
EOT
|
39
35
|
|
40
36
|
if ONE_LOCATION
|
@@ -1203,6 +1199,18 @@ EOT
|
|
1203
1199
|
end
|
1204
1200
|
end
|
1205
1201
|
|
1202
|
+
def OpenNebulaHelper.bytes_to_unit(value, unit = 'K')
|
1203
|
+
j = 0
|
1204
|
+
i = BinarySufix.index(unit).to_i
|
1205
|
+
|
1206
|
+
while j < i do
|
1207
|
+
value /= 1024.0
|
1208
|
+
j += 1
|
1209
|
+
end
|
1210
|
+
|
1211
|
+
value
|
1212
|
+
end
|
1213
|
+
|
1206
1214
|
# If the cluster name is empty, returns a '-' char.
|
1207
1215
|
#
|
1208
1216
|
# @param str [String || Hash] Cluster name, or empty Hash (when <CLUSTER/>)
|
@@ -1887,4 +1895,57 @@ EOT
|
|
1887
1895
|
answers
|
1888
1896
|
end
|
1889
1897
|
|
1898
|
+
# Returns plot object to print it on the CLI
|
1899
|
+
#
|
1900
|
+
# @param x [Array] Data to x axis (Time axis)
|
1901
|
+
# @param y [Array] Data to y axis
|
1902
|
+
# @param attr [String] Parameter to y axis
|
1903
|
+
# @param title [String] Plot title
|
1904
|
+
#
|
1905
|
+
# @return Gnuplot plot object
|
1906
|
+
def OpenNebulaHelper.get_plot(x, y, attr, title)
|
1907
|
+
# Require gnuplot gem only here
|
1908
|
+
begin
|
1909
|
+
require 'gnuplot'
|
1910
|
+
rescue LoadError, Gem::LoadError
|
1911
|
+
STDERR.puts(
|
1912
|
+
'Gnuplot gem is not installed, run `gem install gnuplot` '\
|
1913
|
+
'to install it'
|
1914
|
+
)
|
1915
|
+
exit(-1)
|
1916
|
+
end
|
1917
|
+
|
1918
|
+
# Check if gnuplot is installed on the system
|
1919
|
+
unless system('gnuplot --version')
|
1920
|
+
STDERR.puts(
|
1921
|
+
'Gnuplot is not installed, install it depending on your distro'
|
1922
|
+
)
|
1923
|
+
exit(-1)
|
1924
|
+
end
|
1925
|
+
|
1926
|
+
Gnuplot.open do |gp|
|
1927
|
+
Gnuplot::Plot.new(gp) do |p|
|
1928
|
+
p.title title
|
1929
|
+
|
1930
|
+
p.xlabel 'Time'
|
1931
|
+
p.ylabel attr
|
1932
|
+
|
1933
|
+
p.xdata 'time'
|
1934
|
+
p.timefmt "'%H:%M'"
|
1935
|
+
p.format "x '%H:%M'"
|
1936
|
+
|
1937
|
+
p.style 'data lines'
|
1938
|
+
p.terminal 'dumb'
|
1939
|
+
|
1940
|
+
p.data << Gnuplot::DataSet.new([x, y]) do |ds|
|
1941
|
+
ds.with = 'linespoints'
|
1942
|
+
ds.linewidth = '3'
|
1943
|
+
ds.using = '1:2'
|
1944
|
+
|
1945
|
+
ds.notitle
|
1946
|
+
end
|
1947
|
+
end
|
1948
|
+
end
|
1949
|
+
end
|
1950
|
+
|
1890
1951
|
end
|