1
0
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:
Carlos J. Herrera 2021-03-17 15:14:40 -04:00 committed by GitHub
parent c54fef3df0
commit 52fce14ac7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 6 deletions

View File

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

View File

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

View File

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