mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add a state parameter to the wait_for module.
This takes started, stopped and restarted. Started returns when connecting is possible. Stopped when connecting is not possible. Restarted first waits for connecting to be impossible and returns when it is possible again.
This commit is contained in:
parent
150a47c66c
commit
5ba34572d9
1 changed files with 32 additions and 12 deletions
|
@ -30,6 +30,7 @@ def main():
|
||||||
name=dict(required=True),
|
name=dict(required=True),
|
||||||
timeout=dict(default=300),
|
timeout=dict(default=300),
|
||||||
port=dict(default=22),
|
port=dict(default=22),
|
||||||
|
state=dict(default='started', choices=['started', 'stopped', 'restarted']),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -38,7 +39,26 @@ def main():
|
||||||
host = params['name']
|
host = params['name']
|
||||||
timeout = int(params['timeout'])
|
timeout = int(params['timeout'])
|
||||||
port = int(params['port'])
|
port = int(params['port'])
|
||||||
|
state = params['state']
|
||||||
|
|
||||||
|
if state in [ 'stopped', 'restarted']:
|
||||||
|
### first wait for the host to go down
|
||||||
|
end = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
|
||||||
|
|
||||||
|
while datetime.datetime.now() < end:
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
s.settimeout(5)
|
||||||
|
try:
|
||||||
|
s.connect( (host, port) )
|
||||||
|
s.close()
|
||||||
|
time.sleep(1)
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
module.fail_json(msg="Timeout when waiting for %s to stop."%(host))
|
||||||
|
|
||||||
|
if state in [ 'started', 'restarted' ]:
|
||||||
|
### wait for the host to come up
|
||||||
end = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
|
end = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
|
||||||
|
|
||||||
while datetime.datetime.now() < end:
|
while datetime.datetime.now() < end:
|
||||||
|
@ -52,7 +72,7 @@ def main():
|
||||||
else:
|
else:
|
||||||
module.fail_json(msg="Timeout when waiting for %s"%(host))
|
module.fail_json(msg="Timeout when waiting for %s"%(host))
|
||||||
|
|
||||||
module.exit_json(msg="%s responds on %s"%(host, port))
|
module.exit_json(msg="State of %s on %s is %s."%(host, port, state))
|
||||||
|
|
||||||
# this is magic, see lib/ansible/module_common.py
|
# this is magic, see lib/ansible/module_common.py
|
||||||
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
|
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
|
||||||
|
|
Loading…
Reference in a new issue