1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

F #2645: Add option to use object name in subcomands (#2960)

This commit is contained in:
Alejandro Huertas Herrero 2019-02-18 17:40:55 +01:00 committed by Tino Vázquez
parent 2bbdcd656f
commit 81414b24a6
2 changed files with 96 additions and 44 deletions

View File

@ -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

View File

@ -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