mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
F #4913: Non-persistent images and volatile images cannot be cloned on a Storage DRS datastore
This commit is contained in:
parent
f94d819f79
commit
8b6880e4cb
@ -73,7 +73,7 @@ one_vm = VCenterDriver::VIHelper.one_item(OpenNebula::VirtualMachine, vm_id)
|
||||
# calculate target path
|
||||
target_path = VCenterDriver::FileHelper.get_img_name_from_path(src_path,
|
||||
vm_id,
|
||||
disk_id)
|
||||
disk_id)
|
||||
begin
|
||||
vi_client = VCenterDriver::VIClient.new_from_host(host_id)
|
||||
|
||||
@ -91,18 +91,26 @@ begin
|
||||
new_size = new_size > original_size ? new_size * 1024 : nil
|
||||
end
|
||||
|
||||
# Do not clone disks not managed by OPENNEBULA
|
||||
if !disk['OPENNEBULA_MANAGED'] || disk['OPENNEBULA_MANAGED'].to_s != "NO"
|
||||
# Unmanaged disks are those with OPENNEBULA_MANAGED=NO or volatile disks
|
||||
# that are created in StorageDRS clusters
|
||||
unmanaged_disk = (!!disk['OPENNEBULA_MANAGED'] && disk['OPENNEBULA_MANAGED'] == "NO") ||
|
||||
(target_ds_ref.start_with?('group-') && !!disk["TYPE"] && disk["TYPE"].downcase == "fs")
|
||||
|
||||
if !unmanaged_disk
|
||||
source_ds_vc = VCenterDriver::Datastore.new_from_ref(source_ds_ref, vi_client)
|
||||
|
||||
if source_ds_ref == target_ds_ref
|
||||
target_ds_vc = source_ds_vc
|
||||
else
|
||||
target_ds_vc = VCenterDriver::Datastore.new_from_ref(target_ds_ref, vi_client)
|
||||
target_ds_vc = VCenterDriver::Storage.new_from_ref(target_ds_ref, vi_client)
|
||||
end
|
||||
|
||||
target_ds_name_vc = target_ds_vc['name']
|
||||
|
||||
if target_ds_ref.start_with?('group-')
|
||||
raise "Non persistent images management is not supported for StorageDRS datastores"
|
||||
end
|
||||
|
||||
source_ds_vc.copy_virtual_disk(src_path, target_ds_vc, target_path, new_size)
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user