summaryrefslogtreecommitdiff
path: root/roles/vm-install/library/wait_for_virt.py
diff options
context:
space:
mode:
Diffstat (limited to 'roles/vm-install/library/wait_for_virt.py')
-rw-r--r--roles/vm-install/library/wait_for_virt.py59
1 files changed, 31 insertions, 28 deletions
diff --git a/roles/vm-install/library/wait_for_virt.py b/roles/vm-install/library/wait_for_virt.py
index b5e244ef..6c49fae1 100644
--- a/roles/vm-install/library/wait_for_virt.py
+++ b/roles/vm-install/library/wait_for_virt.py
@@ -21,21 +21,23 @@ from ansible.module_utils._text import to_native
VIRT_FAILED = 1
VIRT_SUCCESS = 0
-VIRT_UNAVAILABLE=2
+VIRT_UNAVAILABLE = 2
VIRT_STATE_NAME_MAP = {
- 0 : "running",
- 1 : "running",
- 2 : "running",
- 3 : "paused",
- 4 : "shutdown",
- 5 : "shutdown",
- 6 : "crashed"
+ 0: "running",
+ 1: "running",
+ 2: "running",
+ 3: "paused",
+ 4: "shutdown",
+ 5: "shutdown",
+ 6: "crashed"
}
+
class VMNotFound(Exception):
pass
+
class LibvirtConnection(object):
def __init__(self, uri, module):
@@ -89,7 +91,7 @@ class LibvirtConnection(object):
def get_status(self, vmid):
state = self.find_vm(vmid).info()[0]
- return VIRT_STATE_NAME_MAP.get(state,"unknown")
+ return VIRT_STATE_NAME_MAP.get(state, "unknown")
class Virt(object):
@@ -109,31 +111,32 @@ class Virt(object):
self.__get_conn()
return self.conn.get_status(vmid)
+
def core(module):
- states = module.params.get('states', None)
- guest = module.params.get('name', None)
- uri = module.params.get('uri', None)
- delay = module.params.get('delay', None)
- sleep = module.params.get('sleep', None)
- timeout = module.params.get('timeout', None)
+ states = module.params.get('states', None)
+ guest = module.params.get('name', None)
+ uri = module.params.get('uri', None)
+ delay = module.params.get('delay', None)
+ sleep = module.params.get('sleep', None)
+ timeout = module.params.get('timeout', None)
v = Virt(uri, module)
- res = {'changed': False}
+ res = {'changed': False, 'failed': True}
if delay > 0:
- time.sleep(delay)
+ time.sleep(delay)
for _ in range(0, timeout, sleep):
- state = v.status(guest)
- if state in states:
- res['state'] = state
- res['msg'] = "guest '%s' has reached state: %s" % (guest, state)
- return VIRT_SUCCESS, res
+ state = v.status(guest)
+ if state in states:
+ res['state'] = state
+ res['failed'] = False
+ res['msg'] = "guest '%s' has reached state: %s" % (guest, state)
+ return VIRT_SUCCESS, res
- time.sleep(sleep)
+ time.sleep(sleep)
- res['failed'] = True
res['msg'] = "timeout waiting for guest '%s' to reach one of states: %s" % (guest, ', '.join(states))
return VIRT_FAILED, res
@@ -141,9 +144,9 @@ def core(module):
def main():
module = AnsibleModule(argument_spec=dict(
- name = dict(aliases=['guest'], required=True),
- states = dict(type='list', required=True),
- uri = dict(default='qemu:///system'),
+ name=dict(aliases=['guest'], required=True),
+ states=dict(type='list', required=True),
+ uri=dict(default='qemu:///system'),
delay=dict(type='int', default=0),
sleep=dict(type='int', default=1),
timeout=dict(type='int', default=300),
@@ -166,7 +169,7 @@ def main():
except Exception as e:
module.fail_json(msg=to_native(e), exception=traceback.format_exc())
- if rc != 0: # something went wrong emit the msg
+ if rc != 0: # something went wrong emit the msg
module.fail_json(rc=rc, msg=result)
else:
module.exit_json(**result)