From b93633d7c2bf7772bf5b1abd747496b19f27cd3f Mon Sep 17 00:00:00 2001 From: Andrey Trubachev Date: Mon, 5 Jan 2015 21:05:01 +0300 Subject: [PATCH] Fix python-2.4 compatibility --- .../modules/utilities/logic/wait_for.py | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/utilities/logic/wait_for.py b/lib/ansible/modules/utilities/logic/wait_for.py index aa6bd1050c4..295155f3028 100644 --- a/lib/ansible/modules/utilities/logic/wait_for.py +++ b/lib/ansible/modules/utilities/logic/wait_for.py @@ -301,6 +301,25 @@ def _little_endian_convert_32bit(block): # which lets us start at the end of the string block and work to the begining return "".join([ block[x:x+2] for x in xrange(6, -2, -2) ]) +def _create_connection( (host, port), connect_timeout): + """ + Connect to a 2-tuple (host, port) and return + the socket object. + + Args: + 2-tuple (host, port) and connection timeout + Returns: + Socket object + """ + if sys.version_info < (2, 6): + (family, _) = _convert_host_to_ip(host) + connect_socket = socket.socket(family, socket.SOCK_STREAM) + connect_socket.settimeout(connect_timeout) + connect_socket.connect( (host, port) ) + else: + connect_socket = socket.create_connection( (host, port), connect_timeout) + return connect_socket + def main(): module = AnsibleModule( @@ -363,7 +382,7 @@ def main(): break elif port: try: - s = socket.create_connection( (host, port), connect_timeout) + s = _create_connection( (host, port), connect_timeout) s.shutdown(socket.SHUT_RDWR) s.close() time.sleep(1) @@ -409,7 +428,7 @@ def main(): module.fail_json(msg="Failed to stat %s, %s" % (path, e.strerror), elapsed=elapsed.seconds) elif port: try: - s = socket.create_connection( (host, port), connect_timeout) + s = _create_connection( (host, port), connect_timeout) if search_regex: data = '' matched = False