From ec1ed2998040032d77bcb339f69016da802120f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gonz=C3=A1lez?= Date: Wed, 23 Feb 2022 17:47:03 +0100 Subject: [PATCH] B #5740: Remove unnecessary disks only on VM creation (#1808) (cherry picked from commit ba5db04bb3d3db749ed6930cf835881197360faf) --- .../remotes/lib/vcenter_driver/virtual_machine.rb | 12 +++++++----- src/vmm_mad/remotes/vcenter/deploy | 3 +++ 2 files changed, 10 insertions(+), 5 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 b3bff73166..b687b9c449 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -1714,8 +1714,13 @@ end def sync(deploy = {}) extraconfig = [] device_change = [] + sync_opt = nil - disks = sync_disks(:all, false) + # Disk are only synced with :all option when VM is first created + # NOTE: Detach actions are implemented through TM (not sync) + sync_opt = :all if deploy[:new] == true + + disks = sync_disks(sync_opt, false) resize_unmanaged_disks if deploy[:boot] && !deploy[:boot].empty? @@ -2308,10 +2313,6 @@ end extra_config = [] keys = disk_keys.invert - if keys.nil? || keys.empty? - raise 'Unable to find disk mapping information on vmx file.' - end - ipool = VCenterDriver::VIHelper.one_pool(OpenNebula::ImagePool) disks_each(:detached?) do |d| key = d.key.to_s @@ -3435,6 +3436,7 @@ end config[:esx_migration_list] = 'Selected_by_DRS' end + vc_vm.reference_all_disks vc_vm.migrate(config) vm.replace({ 'VCENTER_CCR_REF' => ccr_ref }) diff --git a/src/vmm_mad/remotes/vcenter/deploy b/src/vmm_mad/remotes/vcenter/deploy index 0aa093a39d..93f345de36 100755 --- a/src/vmm_mad/remotes/vcenter/deploy +++ b/src/vmm_mad/remotes/vcenter/deploy @@ -85,8 +85,10 @@ begin if deploy_id_valid?(deploy_id) # VM is not new, we just need to reconfigure it and to power it on + deploy[:new] = false vm = VCenterDriver::VirtualMachine.new_one(vi_client, deploy_id, one_vm) else + deploy[:new] = true vm = VCenterDriver::VirtualMachine.new_from_clone(vi_client, drv_action, vm_id) @@ -127,6 +129,7 @@ begin :spec => spec ).wait_for_completion + vm.reference_all_disks vm.sync(deploy) # Only mark the VM as running if we are deploying it for the first time set_running = !deploy_id_valid?(deploy_id)