Fix from @jimi-c to use task_vars when polling async tasks. (#17003)

This is needed so that async_status can use ansible_python_interpreter
for the host being contacted.

Fixes #14101
(cherry picked from commit 38ccd11cce)
This commit is contained in:
Toshio Kuratomi 2016-08-08 10:53:36 -07:00 committed by Toshio Kuratomi
parent 9255a618e3
commit f695dd6892

View file

@ -462,7 +462,7 @@ class TaskExecutor:
if self._task.async > 0:
if self._task.poll > 0:
result = self._poll_async_result(result=result, templar=templar)
result = self._poll_async_result(result=result, templar=templar, task_vars=vars_copy)
# ensure no log is preserved
result["_ansible_no_log"] = self._play_context.no_log
@ -546,11 +546,14 @@ class TaskExecutor:
display.debug("attempt loop complete, returning result")
return result
def _poll_async_result(self, result, templar):
def _poll_async_result(self, result, templar, task_vars=None):
'''
Polls for the specified JID to be complete
'''
if task_vars is None:
task_vars = self._job_vars
async_jid = result.get('ansible_job_id')
if async_jid is None:
return dict(failed=True, msg="No job id was returned by the async task")
@ -578,7 +581,7 @@ class TaskExecutor:
while time_left > 0:
time.sleep(self._task.poll)
async_result = normal_handler.run()
async_result = normal_handler.run(task_vars=task_vars)
# We do not bail out of the loop in cases where the failure
# is associated with a parsing error. The async_runner can
# have issues which result in a half-written/unparseable result