From d07bceef031af9d8af2cdd1ed8e5ef04b37cf876 Mon Sep 17 00:00:00 2001 From: "Carlos J. Herrera" Date: Thu, 4 Feb 2021 04:35:25 -0500 Subject: [PATCH] F #5051: option to avoid deleting disk not managed (#753) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tino Vázquez --- .../remotes/lib/vcenter_driver/virtual_machine.rb | 13 +++++++++++-- src/vmm_mad/remotes/vcenter/vcenterrc | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) 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 2f3aeed3f6..172fce39e5 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -2603,14 +2603,23 @@ module VCenterDriver def destroy_disk(disk) one_vm = one_item + # Check if we can detach and delete the non persistent disk: + # - VM is terminated + # - The disk is managed by OpenNebula detachable= !(one_vm['LCM_STATE'].to_i == 11 && !disk.managed?) detachable &&= disk.exists? - + return unless detachable detach_disk(disk) - disk.destroy + # Check if we want to keep the non persistent disk + keep_non_persistent_disks = + VCenterDriver::CONFIG[:keep_non_persistent_disks] + + return if keep_non_persistent_disks == true + + disk.destroy @disks.delete(disk.id.to_s) end diff --git a/src/vmm_mad/remotes/vcenter/vcenterrc b/src/vmm_mad/remotes/vcenter/vcenterrc index c85fc301f3..b789cad591 100644 --- a/src/vmm_mad/remotes/vcenter/vcenterrc +++ b/src/vmm_mad/remotes/vcenter/vcenterrc @@ -39,3 +39,7 @@ # Default template when import from MarketPlace :default_template: -1 + +# Set to true if you need OpenNebula to detach non persistent disks +# from VMs on VM terminate but avoid deleting them afterwards +:keep_non_persistent_disks: false