Adding an accelerate_timeout parameter for plays

This setting makes the timeout for each play configurable, rather than
hard-coding it at 300 seconds (now the default if left unspecified)

Fixes #4162
This commit is contained in:
James Cammarata 2013-09-19 12:21:10 -05:00
commit 59a5ce23d9
6 changed files with 29 additions and 10 deletions

View file

@ -136,6 +136,7 @@ class Runner(object):
error_on_undefined_vars=C.DEFAULT_UNDEFINED_VAR_BEHAVIOR, # ex. False
accelerate=False, # use accelerated connection
accelerate_port=None, # port to use with accelerated connection
accelerate_timeout=None, # number of seconds to wait for a response on the accelerated connection
):
# used to lock multiprocess inputs and outputs at various levels
@ -179,6 +180,7 @@ class Runner(object):
self.error_on_undefined_vars = error_on_undefined_vars
self.accelerate = accelerate
self.accelerate_port = accelerate_port
self.accelerate_timeout = accelerate_timeout
self.callbacks.runner = self
self.original_transport = self.transport
@ -581,6 +583,12 @@ class Runner(object):
actual_transport = "accelerate"
if not self.accelerate_port:
self.accelerate_port = C.ACCELERATE_PORT
try:
if not self.accelerate_timeout:
self.accelerate_timeout = C.ACCELERATE_TIMEOUT
self.accelerate_timeout = int(self.accelerate_timeout)
except:
raise errors.AnsibleError("invalid value for the accelerate_timeout parameter")
if actual_transport in [ 'paramiko', 'ssh', 'accelerate' ]:
actual_port = inject.get('ansible_ssh_port', port)

View file

@ -103,7 +103,7 @@ class Connection(object):
# TODO: make the timeout and retries configurable?
tries = 3
self.conn = socket.socket()
self.conn.settimeout(300.0)
self.conn.settimeout(self.runner.accelerate_timeout)
vvvv("attempting connection to %s via the accelerated port %d" % (self.host,self.accport))
while tries > 0:
try: