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 e212c29bf4..ff22ce2e7c 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -2460,11 +2460,13 @@ class VirtualMachine < VCenterDriver::Template begin # retrieve host from DRS resourcepool = config[:cluster].resourcePool + host = config[:cluster].host.first datastore = config[:datastore] if datastore relocate_spec_params = { pool: resourcepool, + host: host, datastore: datastore, } diff --git a/src/vmm_mad/remotes/vcenter/migrate b/src/vmm_mad/remotes/vcenter/migrate index 175ed1e22c..c1f4d6d9ec 100755 --- a/src/vmm_mad/remotes/vcenter/migrate +++ b/src/vmm_mad/remotes/vcenter/migrate @@ -32,12 +32,21 @@ require 'vcenter_driver' vm_id = ARGV[-2] src_host = ARGV[-3] dst_host = ARGV[-4] +dsid = "111" begin - # TODO: grab destination ds - VCenterDriver::VirtualMachine.migrate_routine(vm_id, - src_host, - dst_host) + + one_client = OpenNebula::Client.new + vm = OpenNebula::VirtualMachine.new_with_id(vm_id, one_client) + vm.info + src_ds = vm.retrieve_elements("HISTORY_RECORDS/HISTORY/DS_ID")[-2] + + if src_ds == dsid + VCenterDriver::VirtualMachine.migrate_routine(vm_id, src_host, dst_host) + else + VCenterDriver::VirtualMachine.migrate_routine(vm_id, src_host, dst_host, dsid) + end + rescue StandardError => e message = "Cannot migrate for VM #{vm_id}"\ 'failed due to '\