diff --git a/src/cli/one_helper/oneprovision_helper.rb b/src/cli/one_helper/oneprovision_helper.rb index b3ec32827d..4e82eaa9ea 100644 --- a/src/cli/one_helper/oneprovision_helper.rb +++ b/src/cli/one_helper/oneprovision_helper.rb @@ -105,14 +105,18 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper # Helper host functions ####################################################################### - def hosts_operation(hosts, operation, options) + def hosts_operation(args, operation, options) parse_options(options) - host_helper = OneHostHelper.new - host_helper.set_client(options) - host_helper.perform_actions(hosts, - options, - operation[:message]) do |host| + pool = OneProvision::Host.new.pool + helper = OneHostHelper.new + + hosts = name_to_id(args[0], pool) + + helper.set_client(options) + helper.perform_actions(hosts, + options, + operation[:message]) do |host| host = OneProvision::Host.new(host['ID']) case operation[:operation] @@ -126,6 +130,62 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper host.delete when 'configure' host.configure((options.key? :force)) + when 'ssh' + host.ssh(args[1]) + end + end + end + + ####################################################################### + # Helper datastore functions + ####################################################################### + + def datastores_operation(args, operation, options) + parse_options(options) + + pool = OneProvision::Datastore.new.pool + helper = OneDatastoreHelper.new + + datastores = name_to_id(args[0], pool) + + helper.set_client(options) + helper.perform_actions(datastores, + options, + operation[:message]) do |datastore| + case operation[:operation] + when 'delete' + msg = "Deleting datastore #{datastore['ID']}" + + OneProvision::OneProvisionLogger.info(msg) + + datastore.delete + end + end + end + + ####################################################################### + # Helper vnet functions + ####################################################################### + + def vnets_operation(args, operation, options) + parse_options(options) + + pool = OneProvision::Vnet.new.pool + helper = OneVNetHelper.new + + vnets = name_to_id(args[0], pool) + + helper.set_client(options) + helper.perform_actions(vnets, + options, + operation[:message]) do |vnet| + case operation[:operation] + when 'delete' + msg = "Deleting vnet #{vnet['ID']}" + + OneProvision::OneProvisionLogger.info(msg) + + vnet.delete end end end @@ -157,6 +217,19 @@ class OneProvisionHelper < OpenNebulaHelper::OneHelper ids end + def name_to_id(objects, pool) + objects = [objects].flatten.map do |obj| + if obj.to_s =~ /^[0-9]+$/ + obj.to_i + else + pool.info + pool.select {|object| object.name == obj }.first.id + end + end + + objects + end + def get_list(columns, provision_list) ret = [] ids = provision_ids diff --git a/src/cli/oneprovision b/src/cli/oneprovision index b6f6e25488..5a9600d778 100755 --- a/src/cli/oneprovision +++ b/src/cli/oneprovision @@ -333,9 +333,9 @@ CommandParser::CmdParser.new(ARGV) do host_resume_desc, %i[range hostid_list], :options => [MODES] do - operation = { :operation => 'resume',:message => 'enabled' } + operation = { :operation => 'resume', :message => 'enabled' } - helper.hosts_operation(args[0], operation, options) + helper.hosts_operation(args, operation, options) end ### @@ -348,9 +348,9 @@ CommandParser::CmdParser.new(ARGV) do host_poweroff_desc, %i[range hostid_list], :options => [MODES] do - operation = { :operation => 'poweroff',:message => 'disabled' } + operation = { :operation => 'poweroff', :message => 'disabled' } - helper.hosts_operation(args[0],operation, options) + helper.hosts_operation(args, operation, options) end ### @@ -363,9 +363,9 @@ CommandParser::CmdParser.new(ARGV) do host_reboot_desc, %i[range hostid_list], :options => [MODES, HARD] do - operation = { :operation => 'reboot',:message => 'enabled' } + operation = { :operation => 'reboot', :message => 'enabled' } - helper.hosts_operation(args[0],operation, options) + helper.hosts_operation(args, operation, options) end ### @@ -378,9 +378,9 @@ CommandParser::CmdParser.new(ARGV) do host_delete_desc, %i[range hostid_list], :options => [MODES] do - operation = { :operation => 'delete',:message => 'deleted' } + operation = { :operation => 'delete', :message => 'deleted' } - helper.hosts_operation(args[0],operation, options) + helper.hosts_operation(args, operation, options) end ### @@ -393,9 +393,9 @@ CommandParser::CmdParser.new(ARGV) do host_configure_desc, %i[range hostid_list], :options => [MODES, FORCE] do - operation = { :operation => 'configure',:message => 'enabled' } + operation = { :operation => 'configure', :message => 'enabled' } - helper.hosts_operation(args[0],operation, options) + helper.hosts_operation(args, operation, options) end ### @@ -408,8 +408,9 @@ CommandParser::CmdParser.new(ARGV) do host_ssh_desc, :hostid, [:command, nil] do - host = OneProvision::Host.new(args[0]) - host.ssh(args[1]) + operation = { :operation => 'ssh', :message => 'enabled' } + + helper.hosts_operation(args, operation, options) end ### @@ -486,22 +487,9 @@ CommandParser::CmdParser.new(ARGV) do datastore_delete_desc, %i[range datastoreid_list], :options => [MODES, FORCE] do - helper.parse_options(options) + operation = { :operation => 'delete', :message => 'deleted' } - datastore_helper = OneDatastoreHelper.new - datastore_helper.set_client(options) - - datastore_helper.perform_actions(args[0], - options, - 'deleted') do |datastore| - msg = "Deleting datastore #{datastore['ID']}" - - OneProvision::OneProvisionLogger.info(msg) - - datastore.delete - end - - 0 + helper.datastores_operation(args, operation, options) end ######################################################################## @@ -533,17 +521,8 @@ CommandParser::CmdParser.new(ARGV) do vnet_delete_desc, %i[range vnetid_list], :options => [MODES, FORCE] do - helper.parse_options(options) + operation = { :operation => 'delete', :message => 'deleted' } - vnet_helper = OneVNetHelper.new - vnet_helper.set_client(options) - - vnet_helper.perform_actions(args[0], options, 'deleted') do |vnet| - OneProvision::OneProvisionLogger.info("Deleting vnet #{vnet['ID']}") - - vnet.delete - end - - 0 + helper.vnets_operation(args, operation, options) end end