From d29f4713b0c1f654d0586f3e1e1ae2ee3229a807 Mon Sep 17 00:00:00 2001 From: mouyaq Date: Mon, 20 May 2019 12:50:03 +0200 Subject: [PATCH] F #3264: get out wait_timeout and fixes --- .../lib/vcenter_driver/virtual_machine.rb | 30 +++++++------------ .../virtual_machine_helper/vm_helper.rb | 20 ++++++++++--- 2 files changed, 26 insertions(+), 24 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 4ba84cd49d..8b9cfd993f 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine.rb @@ -18,9 +18,14 @@ module VCenterDriver class VirtualMachine < VCenterDriver::Template # Supported access to VirtualMachineDevice classes: - # Example: VirtualMachineDevice::Disk or VCenterDriver::VirtualMachine::Disk + # Example: + # Disk + # VirtualMachineDevice::Disk + # VCenterDriver::VirtualMachine::Disk require_relative 'vm_device' include VirtualMachineDevice + require_relative 'vm_helper' + include VirtualMachineHelper ############################################################################ # Virtual Machine main Class @@ -423,22 +428,6 @@ module VCenterDriver return self['_ref'] end - # This method raises an exception if the timeout is reached - # The exception needs to be handled in the VMM drivers and any - # process that uses this method - def wait_timeout(action, timeout = 300) - conf = CONFIG[:vm_poweron_wait_default] - - timeout = conf || timeout - time_start = Time.now - - begin - sleep(1) - condition = (Time.now-time_start).to_i >= timeout - raise 'Reached deploy timeout' if condition - end until send(action) - end - # TODO: review def storagepod_clonevm_task(vc_template, vcenter_name, clone_spec, storpod, vcenter_vm_folder_object, dc) @@ -2193,7 +2182,8 @@ module VCenterDriver error = e.message.split(':').first raise e.message if error != 'InvalidPowerState' end - wait_timeout(:is_powered_off?) + timeout = CONFIG[:vm_poweron_wait_default] + wait_timeout(:is_powered_off?, timeout) end end @@ -2224,8 +2214,8 @@ module VCenterDriver error = e.message.split(':').first raise e.message if error != 'InvalidPowerState' end - - wait_timeout(:is_powered_on?) + timeout = CONFIG[:vm_poweron_wait_default] + wait_timeout(:is_powered_on?, timeout) end def is_powered_on? diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb index a5a3a2514f..64ead8e574 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/virtual_machine_helper/vm_helper.rb @@ -23,14 +23,26 @@ module VirtualMachineHelper def state_to_c(state) case state when 'poweredOn' - VM_STATE[:active] + OpenNebula::VirtualMachine::Driver::VM_STATE[:active] when 'suspended' - VM_STATE[:paused] + OpenNebula::VirtualMachine::Driver::VM_STATE[:paused] when 'poweredOff' - VM_STATE[:deleted] + OpenNebula::VirtualMachine::Driver::VM_STATE[:deleted] else - VM_STATE[:unknown] + OpenNebula::VirtualMachine::Driver::VM_STATE[:unknown] end end + # This method raises an exception if the timeout is reached + # The exception needs to be handled in the VMM drivers and any + # process that uses this method + def wait_timeout(action, timeout = 300) + time_start = Time.now + begin + sleep(1) + condition = (Time.now-time_start).to_i >= timeout + raise 'Reached deploy timeout' if condition + end until send(action) + end + end