From f695dd6892f7b4b01874ef647ae124f4d4a8e887 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Mon, 8 Aug 2016 10:53:36 -0700 Subject: [PATCH] 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 38ccd11ccedbd31c20d9f1de91e60f7bbd75227d) --- lib/ansible/executor/task_executor.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index cff8f3d4b73..63e06ea5846 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -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