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

F #4913: Datastores with same dc, ds or cluster name can be imported (add prefix to OpenNebula's datastore name) B#4942

This commit is contained in:
mcabrerizo 2017-04-02 19:38:07 +02:00
parent ad51adc060
commit 752edca588
2 changed files with 12 additions and 6 deletions

View File

@ -38,6 +38,10 @@ class DatacenterFolder
@vi_client.vim.serviceContent.about.instanceUuid
end
def get_vcenter_instance_name
@vi_client.vim.serviceContent.setting.setting.select{|set| set.key == 'VirtualCenter.InstanceName'}.first.value rescue nil
end
def get_vcenter_api_version
@vi_client.vim.serviceContent.about.apiVersion
end
@ -132,6 +136,8 @@ class DatacenterFolder
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)
@ -166,14 +172,14 @@ class DatacenterFolder
already_image_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "IMAGE_DS", pool)
if !already_image_ds
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "IMAGE_DS", vcenter_uuid)
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)
if !already_system_ds
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid)
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid, vcenter_instance_name, dc_name)
ds_objects[dc_name] << object if !object.nil?
end
end
@ -196,7 +202,7 @@ class DatacenterFolder
already_system_ds = VCenterDriver::Storage.exists_one_by_ref_ccr_and_type?(ds["_ref"], ccr_ref, vcenter_uuid, "SYSTEM_DS", pool)
if !already_system_ds
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid)
object = ds.to_one_template(one_clusters[dc_name], ccr_ref, ccr_name, "SYSTEM_DS", vcenter_uuid, vcenter_instance_name, dc_name)
ds_objects[dc_name] << object if !object.nil?
end
end

View File

@ -154,7 +154,7 @@ class Storage
return one
end
def to_one_template(one_clusters, ccr_ref, ccr_name, type, vcenter_uuid)
def to_one_template(one_clusters, ccr_ref, ccr_name, type, vcenter_uuid, vcenter_instance_name, dc_name)
one_cluster = one_clusters.select { |ccr| ccr[:ref] == ccr_ref }.first rescue nil
@ -163,9 +163,9 @@ class Storage
ds_name = ""
if type == "IMAGE_DS"
ds_name << "#{self['name']} - #{ccr_name} (IMG)"
ds_name << "[#{vcenter_instance_name} #{dc_name}] #{self['name']} - #{ccr_name} (IMG)"
else
ds_name << "#{self['name']} - #{ccr_name} (SYS)"
ds_name << "[#{vcenter_instance_name} - #{dc_name}] #{self['name']} - #{ccr_name} (SYS)"
ds_name << " [StorDRS]" if self.class == VCenterDriver::StoragePod
end