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

B #2610: Fix CDs in saveas operation

This commit is contained in:
Sergio Semedi Barranco 2018-11-20 09:27:56 +01:00 committed by Ruben S. Montero
parent a9b4193adf
commit 846de840af
4 changed files with 22 additions and 13 deletions

View File

@ -855,17 +855,25 @@ module OpenNebula
image_id = disk["IMAGE_ID"]
if !image_id.nil? && !image_id.empty?
rc = disk_saveas(disk_id.to_i,"#{name}-disk-#{disk_id}","",-1)
if disk['TYPE'] == 'CDROM'
replace << "DISK = [ IMAGE_ID = #{image_id}"
if disk["OPENNEBULA_MANAGED"]
replace << ", OPENNEBULA_MANAGED=#{disk["OPENNEBULA_MANAGED"]}"
end
replace << " ]\n"
else
rc = disk_saveas(disk_id.to_i,"#{name}-disk-#{disk_id}","",-1)
raise if OpenNebula.is_error?(rc)
raise if OpenNebula.is_error?(rc)
if persistent == true
OpenNebula::Image.new_with_id(rc.to_i, @client).persistent()
if persistent == true
OpenNebula::Image.new_with_id(rc.to_i, @client).persistent()
end
img_ids << rc.to_i
replace << "DISK = [ IMAGE_ID = #{rc} ]\n"
end
img_ids << rc.to_i
replace << "DISK = [ IMAGE_ID = #{rc} ]\n"
else
# Volatile disks cannot be saved, so the definition is copied
replace << self.template_like_str(
@ -874,12 +882,13 @@ module OpenNebula
end
self.each('TEMPLATE/NIC') do |nic|
nic_id = nic["NIC_ID"]
if nic_id.nil? || nic_id.empty?
rc = Error.new('The NIC_ID is missing from the VM template')
raise
end
REMOVE_VNET_ATTRS.each do |attr|
nic.delete_element(attr)
end

View File

@ -77,12 +77,12 @@ begin
# Get source and target ds ref
disk = vm.disk(disk_id)
src_path = disk.path
source_ds_ref = disk.ds_ref
source_ds_ref = disk.ds._ref
source_ds_vc = VCenterDriver::Datastore.new_from_ref(source_ds_ref, vi_client)
# Get target ds ref
target_ds = VCenterDriver::VIHelper.one_item(OpenNebula::Datastore, target_ds_id)
target_ds = VCenterDriver::VIHelper.one_item(OpenNebula::Datastore, target_ds_id, false)
target_ds_ref = target_ds['TEMPLATE/VCENTER_DS_REF']
target_ds_vc = VCenterDriver::Datastore.new_from_ref(target_ds_ref, vi_client)
target_ds_name_vc = target_ds_vc['name']

View File

@ -168,7 +168,7 @@ class VirtualMachine < VCenterDriver::Template
@vc_res[:datastore]
end
def ds_ref
def image_ds_ref
@one_res['VCENTER_DS_REF']
end

View File

@ -17,4 +17,4 @@
# No : VCENTER_IMPORTED attribute will be set on imported images
# this attribute prevents the image to be deleted.
# Yes : You can delete the images using OpenNebula.
:delete_images: Yes
:delete_images: No