mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-25 02:50:08 +03:00
F #4913: Fix importer only one pool per call. Remove remnants of vlan_id in network importer
This commit is contained in:
parent
82d72d93d8
commit
93f85d82a5
@ -78,7 +78,17 @@ end
|
||||
get '/vcenter' do
|
||||
begin
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vcenter_client)
|
||||
rs = dc_folder.get_unimported_hosts
|
||||
|
||||
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
msg = "Could not get OpenNebula HostPool: #{hpool.message}"
|
||||
logger.error("[vCenter] " + msg)
|
||||
error = Error.new(msg)
|
||||
error 404, error.to_json
|
||||
end
|
||||
|
||||
rs = dc_folder.get_unimported_hosts(hpool)
|
||||
[200, rs.to_json]
|
||||
rescue Exception => e
|
||||
logger.error("[vCenter] " + e.message)
|
||||
@ -90,7 +100,17 @@ end
|
||||
get '/vcenter/templates' do
|
||||
begin
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vcenter_client)
|
||||
templates = dc_folder.get_unimported_templates(vcenter_client)
|
||||
|
||||
tpool = VCenterDriver::VIHelper.one_pool(OpenNebula::TemplatePool, false)
|
||||
|
||||
if tpool.respond_to?(:message)
|
||||
msg = "Could not get OpenNebula TemplatePool: #{tpool.message}"
|
||||
logger.error("[vCenter] " + msg)
|
||||
error = Error.new(msg)
|
||||
error 404, error.to_json
|
||||
end
|
||||
|
||||
templates = dc_folder.get_unimported_templates(vcenter_client, tpool)
|
||||
|
||||
if templates.nil?
|
||||
msg = "No datacenter found"
|
||||
@ -154,7 +174,17 @@ end
|
||||
get '/vcenter/networks' do
|
||||
begin
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vcenter_client)
|
||||
networks = dc_folder.get_unimported_networks
|
||||
|
||||
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
|
||||
|
||||
if npool.respond_to?(:message)
|
||||
msg = "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
|
||||
logger.error("[vCenter] " + msg)
|
||||
error = Error.new(msg)
|
||||
error 404, error.to_json
|
||||
end
|
||||
|
||||
networks = dc_folder.get_unimported_networks(npool)
|
||||
|
||||
if networks.nil?
|
||||
msg = "No datacenter found"
|
||||
@ -200,7 +230,17 @@ end
|
||||
get '/vcenter/datastores' do
|
||||
begin
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vcenter_client)
|
||||
datastores = dc_folder.get_unimported_datastores
|
||||
|
||||
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
msg = "Could not get OpenNebula DatastorePool: #{hpool.message}"
|
||||
logger.error("[vCenter] " + msg)
|
||||
error = Error.new(msg)
|
||||
error 404, error.to_json
|
||||
end
|
||||
|
||||
datastores = dc_folder.get_unimported_datastores(hpool)
|
||||
if datastores.nil?
|
||||
msg = "No datacenter found"
|
||||
logger.error("[vCenter] " + msg)
|
||||
|
@ -88,19 +88,13 @@ class DatacenterFolder
|
||||
clusters
|
||||
end
|
||||
|
||||
def get_unimported_hosts
|
||||
def get_unimported_hosts(hpool)
|
||||
host_objects = {}
|
||||
|
||||
vcenter_uuid = get_vcenter_instance_uuid
|
||||
|
||||
vcenter_version = get_vcenter_api_version
|
||||
|
||||
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula HostPool: #{hpool.message}"
|
||||
end
|
||||
|
||||
fetch! if @items.empty? #Get datacenters
|
||||
|
||||
@items.values.each do |dc|
|
||||
@ -131,19 +125,13 @@ class DatacenterFolder
|
||||
return host_objects
|
||||
end
|
||||
|
||||
def get_unimported_datastores
|
||||
def get_unimported_datastores(hpool)
|
||||
ds_objects = {}
|
||||
|
||||
vcenter_uuid = get_vcenter_instance_uuid
|
||||
|
||||
vcenter_instance_name = get_vcenter_instance_name
|
||||
|
||||
pool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
|
||||
|
||||
if pool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula DatastorePool: #{pool.message}"
|
||||
end
|
||||
|
||||
fetch! if @items.empty? #Get datacenters
|
||||
|
||||
one_clusters = get_clusters
|
||||
@ -169,14 +157,14 @@ class DatacenterFolder
|
||||
end
|
||||
|
||||
clusters_in_ds.each do |ccr_ref, ccr_name|
|
||||
already_image_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "IMAGE_DS", pool)
|
||||
already_image_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "IMAGE_DS", hpool)
|
||||
|
||||
if !already_image_ds
|
||||
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "IMAGE_DS", vcenter_uuid, vcenter_instance_name, dc_name)
|
||||
ds_objects[dc_name] << object if !object.nil?
|
||||
end
|
||||
|
||||
already_system_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "SYSTEM_DS", pool)
|
||||
already_system_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "SYSTEM_DS", hpool)
|
||||
|
||||
if !already_system_ds
|
||||
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid, vcenter_instance_name, dc_name)
|
||||
@ -199,7 +187,7 @@ class DatacenterFolder
|
||||
end
|
||||
|
||||
clusters_in_spod.each do |ccr_ref, ccr_name|
|
||||
already_system_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "SYSTEM_DS", pool)
|
||||
already_system_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "SYSTEM_DS", hpool)
|
||||
|
||||
if !already_system_ds
|
||||
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid, vcenter_instance_name, dc_name)
|
||||
@ -213,14 +201,9 @@ class DatacenterFolder
|
||||
ds_objects
|
||||
end
|
||||
|
||||
def get_unimported_templates(vi_client)
|
||||
def get_unimported_templates(vi_client, tpool)
|
||||
template_objects = {}
|
||||
vcenter_uuid = get_vcenter_instance_uuid
|
||||
tpool = VCenterDriver::VIHelper.one_pool(OpenNebula::TemplatePool, false)
|
||||
|
||||
if tpool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula TemplatePool: #{tpool.message}"
|
||||
end
|
||||
|
||||
fetch! if @items.empty? #Get datacenters
|
||||
|
||||
@ -288,15 +271,10 @@ class DatacenterFolder
|
||||
return template_objects
|
||||
end
|
||||
|
||||
def get_unimported_networks
|
||||
def get_unimported_networks(npool)
|
||||
|
||||
network_objects = {}
|
||||
vcenter_uuid = get_vcenter_instance_uuid
|
||||
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
|
||||
|
||||
if npool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
|
||||
end
|
||||
|
||||
fetch! if @items.empty? #Get datacenters
|
||||
|
||||
@ -310,6 +288,8 @@ class DatacenterFolder
|
||||
network_folder.fetch!
|
||||
network_folder.items.values.each do |network|
|
||||
|
||||
next if network.instance_of? VCenterDriver::DistributedVirtualSwitch
|
||||
|
||||
one_network = VCenterDriver::VIHelper.find_by_ref(OpenNebula::VirtualNetworkPool,
|
||||
"TEMPLATE/VCENTER_NET_REF",
|
||||
network['_ref'],
|
||||
@ -324,7 +304,6 @@ class DatacenterFolder
|
||||
one_vnet = VCenterDriver::Network.to_one_template(network_name,
|
||||
network_ref,
|
||||
network.network_type,
|
||||
vlan_id,
|
||||
ccr_ref,
|
||||
ccr_name,
|
||||
vcenter_uuid)
|
||||
|
@ -22,7 +22,14 @@ def self.import_clusters(con_ops, options)
|
||||
# Get vcenter API version
|
||||
vc_version = vi_client.vim.serviceContent.about.apiVersion
|
||||
|
||||
rs = dc_folder.get_unimported_hosts
|
||||
# Get OpenNebula's host pool
|
||||
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::HostPool, false)
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula HostPool: #{hpool.message}"
|
||||
end
|
||||
|
||||
rs = dc_folder.get_unimported_hosts(hpool)
|
||||
|
||||
STDOUT.print "done!\n\n"
|
||||
|
||||
@ -77,7 +84,14 @@ def self.import_templates(con_ops, options)
|
||||
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vi_client)
|
||||
|
||||
rs = dc_folder.get_unimported_templates(vi_client)
|
||||
# Get OpenNebula's templates pool
|
||||
tpool = VCenterDriver::VIHelper.one_pool(OpenNebula::TemplatePool, false)
|
||||
|
||||
if tpool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula TemplatePool: #{tpool.message}"
|
||||
end
|
||||
|
||||
rs = dc_folder.get_unimported_templates(vi_client, tpool)
|
||||
|
||||
STDOUT.print "done!\n"
|
||||
|
||||
@ -272,7 +286,14 @@ def self.import_networks(con_ops, options)
|
||||
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vi_client)
|
||||
|
||||
rs = dc_folder.get_unimported_networks
|
||||
# OpenNebula's VirtualNetworkPool
|
||||
npool = VCenterDriver::VIHelper.one_pool(OpenNebula::VirtualNetworkPool, false)
|
||||
|
||||
if npool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula VirtualNetworkPool: #{npool.message}"
|
||||
end
|
||||
|
||||
rs = dc_folder.get_unimported_networks(npool)
|
||||
|
||||
STDOUT.print "done!\n"
|
||||
|
||||
@ -293,9 +314,8 @@ def self.import_networks(con_ops, options)
|
||||
|
||||
if !use_defaults
|
||||
print_str = "\n * Network found:\n"\
|
||||
" - Name : #{n[:name]}\n"\
|
||||
" - Type : #{n[:type]}\n"
|
||||
print_str << " - VLAN ID : #{n[:vlan_id]}\n" if !n[:vlan_id].empty?
|
||||
" - Name : #{n[:name]}\n"\
|
||||
" - Type : #{n[:type]}\n"
|
||||
print_str << " - Cluster : #{n[:cluster]}\n"
|
||||
print_str << " Import this Network (y/[n])? "
|
||||
|
||||
@ -427,7 +447,13 @@ def self.import_datastore(con_ops, options)
|
||||
|
||||
dc_folder = VCenterDriver::DatacenterFolder.new(vi_client)
|
||||
|
||||
rs = dc_folder.get_unimported_datastores
|
||||
hpool = VCenterDriver::VIHelper.one_pool(OpenNebula::DatastorePool, false)
|
||||
|
||||
if hpool.respond_to?(:message)
|
||||
raise "Could not get OpenNebula DatastorePool: #{hpool.message}"
|
||||
end
|
||||
|
||||
rs = dc_folder.get_unimported_datastores(hpool)
|
||||
|
||||
STDOUT.print "done!\n"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user