From 2494c5f67bac40e68bce9ce9087bcbe26fb9bb77 Mon Sep 17 00:00:00 2001 From: mcabrerizo Date: Wed, 12 Apr 2017 12:44:18 +0200 Subject: [PATCH] F #4913: Persistent disks in a snapshooted VM are detached after all snapshots are removed and before VM is destroyed --- src/tm_mad/vcenter/delete | 11 +++++++++++ .../remotes/lib/vcenter_driver/virtual_machine.rb | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/tm_mad/vcenter/delete b/src/tm_mad/vcenter/delete index e968d6694c..aaa901432d 100755 --- a/src/tm_mad/vcenter/delete +++ b/src/tm_mad/vcenter/delete @@ -216,6 +216,17 @@ else vm.poweroff_hard if vm.is_powered_on? + # If the VM has snapshots the TM could not detach disks so we + # will try to detach persistent disks once we have removed all snapshots + # that way they won't be removed + if vm.has_snapshots? + vm.remove_all_snapshots + disks = one_vm.retrieve_xmlelements("TEMPLATE/DISK[PERSISTENT=\"YES\"]") + disks.each do |d| + vm.detach_disk(d) + end + end + vm.destroy rescue Exception => e STDERR.puts "Error unregistering vm #{vmid} (#{vm_ref})."\ 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 42faf147f2..f395c240ff 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -2312,6 +2312,10 @@ class VirtualMachine < Template @item.PowerOffVM_Task.wait_for_completion end + def remove_all_snapshots + @item.RemoveAllSnapshots_Task.wait_for_completion + end + def set_running(state) value = state ? "yes" : "no"