issue #186: ansible: detach asynchronous tasks

After Runner.setup() has executed, but before the module executes. This
relies on subsequent commits to ensure all files are preloaded.
pull/262/head
David Wilson 6 years ago
parent 34daec4a7a
commit 1745c3aff0

@ -115,12 +115,15 @@ class Runner(object):
:param dict env:
Additional environment variables to set during the run.
"""
def __init__(self, module, service_context, args=None, env=None):
def __init__(self, module, service_context, econtext=None, detach=False,
args=None, env=None):
if args is None:
args = {}
self.module = utf8(module)
self.service_context = service_context
self.econtext = econtext
self.detach = detach
self.args = args
self.env = env
@ -176,6 +179,9 @@ class Runner(object):
Module result dictionary.
"""
self.setup()
if self.detach:
self.econtext.detach()
try:
return self._run()
finally:

@ -278,6 +278,8 @@ def start_fork_child(wrap_async, kwargs, econtext):
context.shutdown()
job_id = '%016x' % random.randint(0, 2**64)
kwargs['detach'] = True
kwargs['econtext'] = econtext
context.call_async(run_module_async, job_id, kwargs)
return {
'stdout': json.dumps({

Loading…
Cancel
Save