mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-26 06:31:23 -07:00
Wait for VM state to reach poweredoff when state: shutdownguest (#31669)
This change adds the optional wait_for_state_change argument to the vmware_guest, vmware_guest_powerstate module, which allows for module completion to be blocked when using the shutdownguest state until the VM has reached the poweredoff state. Fixes: #28498 Signed-off-by: Jim Gu <heming.gu@mercurygate.com> Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
df8a5d7a4f
commit
b6d4fa1c96
3 changed files with 47 additions and 3 deletions
|
@ -716,7 +716,7 @@ def find_host_by_cluster_datacenter(module, content, datacenter_name, cluster_na
|
|||
return None, cluster
|
||||
|
||||
|
||||
def set_vm_power_state(content, vm, state, force):
|
||||
def set_vm_power_state(content, vm, state, force, timeout=0):
|
||||
"""
|
||||
Set the power status for a VM determined by the current and
|
||||
requested states. force is forceful
|
||||
|
@ -764,6 +764,8 @@ def set_vm_power_state(content, vm, state, force):
|
|||
if vm.guest.toolsRunningStatus == 'guestToolsRunning':
|
||||
if expected_state == 'shutdownguest':
|
||||
task = vm.ShutdownGuest()
|
||||
if timeout > 0:
|
||||
result.update(wait_for_poweroff(vm, timeout))
|
||||
else:
|
||||
task = vm.RebootGuest()
|
||||
# Set result['changed'] immediately because
|
||||
|
@ -799,6 +801,20 @@ def set_vm_power_state(content, vm, state, force):
|
|||
return result
|
||||
|
||||
|
||||
def wait_for_poweroff(vm, timeout=300):
|
||||
result = dict()
|
||||
interval = 15
|
||||
while timeout > 0:
|
||||
if vm.runtime.powerState.lower() == 'poweredoff':
|
||||
break
|
||||
time.sleep(interval)
|
||||
timeout -= interval
|
||||
else:
|
||||
result['failed'] = True
|
||||
result['msg'] = 'Timeout while waiting for VM power off.'
|
||||
return result
|
||||
|
||||
|
||||
class PyVmomi(object):
|
||||
def __init__(self, module):
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue