mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge branch 'sivel-wait-for-port-search-regex' into devel
This commit is contained in:
commit
fd3d10980e
1 changed files with 28 additions and 7 deletions
|
@ -76,9 +76,9 @@ options:
|
||||||
version_added: "1.4"
|
version_added: "1.4"
|
||||||
required: false
|
required: false
|
||||||
description:
|
description:
|
||||||
- with the path option can be used match a string in the file that must match before continuing. Defaults to a multiline regex.
|
- Can be used to match a string in either a file or a socket connection. Defaults to a multiline regex.
|
||||||
|
notes:
|
||||||
notes: []
|
- The ability to use search_regex with a port connection was added in 1.7.
|
||||||
requirements: []
|
requirements: []
|
||||||
author: Jeroen Hoekx, John Jarvis, Andrii Radyk
|
author: Jeroen Hoekx, John Jarvis, Andrii Radyk
|
||||||
'''
|
'''
|
||||||
|
@ -100,6 +100,9 @@ EXAMPLES = '''
|
||||||
# wait until the process is finished and pid was destroyed
|
# wait until the process is finished and pid was destroyed
|
||||||
- wait_for: path=/proc/3466/status state=absent
|
- wait_for: path=/proc/3466/status state=absent
|
||||||
|
|
||||||
|
# Wait 300 seconds for port 22 to become open and contain "OpenSSH", don't start checking for 10 seconds
|
||||||
|
- local_action: wait_for port=22 host="{{ inventory_hostname }}" search_regex=OpenSSH delay=10
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -205,6 +208,21 @@ def main():
|
||||||
s.settimeout(connect_timeout)
|
s.settimeout(connect_timeout)
|
||||||
try:
|
try:
|
||||||
s.connect( (host, port) )
|
s.connect( (host, port) )
|
||||||
|
if search_regex:
|
||||||
|
data = ''
|
||||||
|
matched = False
|
||||||
|
while 1:
|
||||||
|
data += s.recv(1024)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
elif re.search(search_regex, data, re.MULTILINE):
|
||||||
|
matched = True
|
||||||
|
break
|
||||||
|
if matched:
|
||||||
|
s.shutdown(socket.SHUT_RDWR)
|
||||||
|
s.close()
|
||||||
|
break
|
||||||
|
else:
|
||||||
s.shutdown(socket.SHUT_RDWR)
|
s.shutdown(socket.SHUT_RDWR)
|
||||||
s.close()
|
s.close()
|
||||||
break
|
break
|
||||||
|
@ -214,6 +232,9 @@ def main():
|
||||||
else:
|
else:
|
||||||
elapsed = datetime.datetime.now() - start
|
elapsed = datetime.datetime.now() - start
|
||||||
if port:
|
if port:
|
||||||
|
if search_regex:
|
||||||
|
module.fail_json(msg="Timeout when waiting for search string %s in %s:%s" % (search_regex, host, port), elapsed=elapsed.seconds)
|
||||||
|
else:
|
||||||
module.fail_json(msg="Timeout when waiting for %s:%s" % (host, port), elapsed=elapsed.seconds)
|
module.fail_json(msg="Timeout when waiting for %s:%s" % (host, port), elapsed=elapsed.seconds)
|
||||||
elif path:
|
elif path:
|
||||||
if search_regex:
|
if search_regex:
|
||||||
|
|
Loading…
Reference in a new issue