From 53cd9541e0f9a2dcf09daef1ee1d855ca52d468c Mon Sep 17 00:00:00 2001 From: sergio semedi Date: Fri, 15 Feb 2019 12:52:58 +0100 Subject: [PATCH] B #2951: persistent disks problem with snapshot solved --- src/tm_mad/vcenter/cpds | 2 +- src/tm_mad/vcenter/mvds | 6 ++++-- src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/tm_mad/vcenter/cpds b/src/tm_mad/vcenter/cpds index e29474ab14..b1885efb8c 100755 --- a/src/tm_mad/vcenter/cpds +++ b/src/tm_mad/vcenter/cpds @@ -70,7 +70,7 @@ begin vm = VCenterDriver::VirtualMachine.new(vi_client, vm_ref, vmid) if vm.has_snapshots? - STDERR.puts "'disk-saveas' operation is not supported for VMs with system snapshots." + raise "'disk-saveas' operation is not supported for VMs with system snapshots." exit 1 end diff --git a/src/tm_mad/vcenter/mvds b/src/tm_mad/vcenter/mvds index d4cc5b8e74..a39f7616cb 100755 --- a/src/tm_mad/vcenter/mvds +++ b/src/tm_mad/vcenter/mvds @@ -61,11 +61,13 @@ disk_id = img_path.split(".")[-1] begin vi_client = VCenterDriver::VIClient.new_from_host(host_id) vm = VCenterDriver::VirtualMachine.new(vi_client, vm_ref, vmid) - disk = vm.disk(disk_id) vmperst = vm.instantiated_as_persistent? + vm.remove_all_snapshots if vm.has_snapshots? + disk = vm.disk(disk_id) + # Don't detach persistent disks if the VM has snapshots - if disk && disk.exists? && !vm.has_snapshots? + if disk && disk.exists? vm.one_item = one_vm # Do not detach persistent unmanaged disk, we need them for mark as a template diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb index 8f4502ae25..c17b5f418a 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -1009,8 +1009,8 @@ class VirtualMachine < VCenterDriver::Template if key query = vc_disks.select {|dev| key == dev[:key]} else - error = 'disk metadata is corrupted and you have snapshots' if has_snapshots? + error = 'disk metadata is corrupted and you have snapshots' raise error end