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"