mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-16 22:50:10 +03:00
F #~: improve import network time (#994)
Signed-off-by: Carlos Herrera <cherrera@opennebula.io>
This commit is contained in:
parent
c54fef3df0
commit
52fce14ac7
@ -239,7 +239,7 @@ CommandParser::CmdParser.new(ARGV) do
|
||||
" this input: #{args.first}"
|
||||
end
|
||||
|
||||
importer.process_import(indexes) do |object_info|
|
||||
importer.process_import(indexes, options) do |object_info|
|
||||
helper.cli_dialogue(object_info)
|
||||
end
|
||||
|
||||
@ -260,10 +260,8 @@ CommandParser::CmdParser.new(ARGV) do
|
||||
importer = VCenterDriver::VcImporter.new_child(helper.client,
|
||||
vi_client,
|
||||
options[:object])
|
||||
importer.retrieve_resources(helper.parse_opts(options))
|
||||
indexes = importer.get_indexes(args.first)
|
||||
|
||||
importer.process_import(indexes)
|
||||
importer.process_import(args.first, options)
|
||||
|
||||
importer.stdout
|
||||
rescue StandardError => e
|
||||
|
@ -200,8 +200,13 @@ get '/vcenter/networks' do
|
||||
begin
|
||||
client = one_client
|
||||
new_vcenter_importer("networks", client)
|
||||
opts = {:host => params["host"], :filter => true}
|
||||
[200, $importer.retrieve_resources(opts).to_json]
|
||||
opts = {
|
||||
:host => params["host"],
|
||||
:filter => true,
|
||||
:short => true
|
||||
}
|
||||
resources_list = $importer.retrieve_resources(opts).to_json
|
||||
[200, resources_list]
|
||||
rescue Exception => e
|
||||
logger.error("[vCenter] " + e.message)
|
||||
error = Error.new(e.message)
|
||||
|
@ -486,6 +486,71 @@ module VCenterDriver
|
||||
@defaults = { :size => '255', :type => 'ether' }
|
||||
end
|
||||
|
||||
def process_import(indexes, opts = {}, &block)
|
||||
indexes = indexes.gsub(/\s*\,\s*/, ',').strip.split(',')
|
||||
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client)
|
||||
vcenter_instance_name = @vi_client.vc_name
|
||||
vcenter_uuid = @vi_client.vim.serviceContent.about.instanceUuid
|
||||
hpool = VCenterDriver::VIHelper.one_pool(
|
||||
OpenNebula::HostPool,
|
||||
false
|
||||
)
|
||||
|
||||
one_client = OpenNebula::Client.new
|
||||
one_host = OpenNebula::Host.new_with_id(opts[:host], one_client)
|
||||
|
||||
indexes.each do |index|
|
||||
begin
|
||||
@rollback = []
|
||||
@info[index] = {}
|
||||
|
||||
vc_cluster_network = VCenterDriver::Network.new_from_ref(
|
||||
index,
|
||||
@vi_client
|
||||
)
|
||||
|
||||
vc_cluster_network = vc_cluster_network.item
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
raise 'Could not get OpenNebula HostPool: ' \
|
||||
"#{hpool.message}"
|
||||
end
|
||||
|
||||
opts = {}
|
||||
|
||||
params = {}
|
||||
params[:vc_network] = vc_cluster_network
|
||||
params[:vcenter_instance_name] = vcenter_instance_name
|
||||
params[:vcenter_uuid] = vcenter_uuid
|
||||
params[:_hpool] = hpool
|
||||
params[:one_host] = one_host
|
||||
params[:args] = opts
|
||||
params[:short] = !opts[:short]
|
||||
|
||||
selected = dc_folder.process_network(params)
|
||||
|
||||
selected = selected[index]
|
||||
|
||||
if block_given?
|
||||
@info[index][:opts] = block.call(selected)
|
||||
elsif opts[index]
|
||||
@info[index][:opts] = opts[index]
|
||||
else
|
||||
@info[index][:opts] = defaults
|
||||
end
|
||||
|
||||
# import the object
|
||||
@info[:success] << import(selected)
|
||||
rescue StandardError => e
|
||||
@info[:error] << { index => e.message }
|
||||
@info[index][:e] = e
|
||||
|
||||
apply_rollback
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def get_list(args = {})
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user