From 6df55bfa0c6083704417baedc189a6823ef5e737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Gonz=C3=A1lez?= Date: Wed, 23 Feb 2022 18:11:10 +0100 Subject: [PATCH] B #5740: Reference disks before migrate (#1809) --- .../remotes/lib/vcenter_driver/virtual_machine.rb | 13 ++++++++----- src/vmm_mad/remotes/vcenter/deploy | 3 +++ 2 files changed, 11 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 53fbde6084..106a4ebbcf 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -1319,8 +1319,14 @@ end def sync(deploy = {}) extraconfig = [] device_change = [] + sync_opt = nil + + # 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) - disks = sync_disks(:all, false) resize_unmanaged_disks if deploy[:boot] && !deploy[:boot].empty? @@ -1736,10 +1742,6 @@ end extra_config = [] keys = get_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 @@ -2682,6 +2684,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 73d9d15281..b993309953 100755 --- a/src/vmm_mad/remotes/vcenter/deploy +++ b/src/vmm_mad/remotes/vcenter/deploy @@ -81,9 +81,11 @@ 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[:boot] = drv_action['TEMPLATE/OS'] + deploy[:new] = true vm = VCenterDriver::VirtualMachine.new_from_clone(vi_client, drv_action, vm_id) @@ -107,6 +109,7 @@ begin end if vm.is_powered_off? + 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)