diff --git a/src/sunstone/routes/vcenter.rb b/src/sunstone/routes/vcenter.rb index 72484eabba..668313cf7a 100644 --- a/src/sunstone/routes/vcenter.rb +++ b/src/sunstone/routes/vcenter.rb @@ -151,8 +151,11 @@ get '/vcenter/datastores' do begin client = one_client new_vcenter_importer("datastores", client) - - [200, $importer.retrieve_resources.to_json] + opts = { + :host => params["host"] + } + resources_list = $importer.retrieve_resources(opts).to_json + [200, resources_list] rescue Exception => e logger.error("[vCenter] " + e.message) error = Error.new(e.message) diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/datacenter.rb b/src/vmm_mad/remotes/lib/vcenter_driver/datacenter.rb index 4d49228eca..f2733968f1 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/datacenter.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/datacenter.rb @@ -159,11 +159,28 @@ module VCenterDriver host_objects end - def get_unimported_datastores(dpool, vcenter_instance_name, hpool) + # rubocop:disable Style/GlobalVars + def get_unimported_datastores(dpool, vcenter_instance_name, hpool, args) import_id = 0 ds_objects = {} vcenter_uuid = vcenter_instance_uuid + # Selected host in OpenNebula + if $conf.nil? + one_client = OpenNebula::Client.new + else + one_client = OpenNebula::Client.new( + nil, + $conf[:one_xmlrpc] + ) + end + one_host = OpenNebula::Host.new_with_id(args[:host], one_client) + + rc = one_host.info + raise rc.message if OpenNebula.is_error? rc + + cluster_id = one_host['CLUSTER_ID'].to_i + # Get datacenters fetch! if @items.empty? @@ -363,8 +380,15 @@ module VCenterDriver end end + ds_objects.keys.each do |key| + unless ds_objects[key][:cluster].include? cluster_id + ds_objects.delete key + end + end + { vcenter_instance_name => ds_objects } end + # rubocop:enable Style/GlobalVars def get_unimported_templates(vi_client, tpool) template_objects = {} diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb b/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb index 663258a659..45e127cc8c 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb @@ -881,7 +881,7 @@ module VCenterDriver @one_class = OpenNebula::Datastore end - def get_list(_args = {}) + def get_list(args = {}) dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client) # one pool creation @@ -908,7 +908,8 @@ module VCenterDriver .get_unimported_datastores( dpool, @vi_client.vc_name, - hpool + hpool, + args ) @list = rs end