diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index f624be1b29..6b03d060c4 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -304,7 +304,7 @@ class PlayBook(object): # since these likely got killed by async_wrapper for host in poller.hosts_to_poll: reason = { 'failed' : 1, 'rc' : None, 'msg' : 'timed out' } - self.runner_callbacks.on_async_failed(host, reason, poller.jid) + self.runner_callbacks.on_async_failed(host, reason, poller.runner.setup_cache[host]['ansible_job_id']) results['contacted'][host] = reason return results @@ -375,7 +375,7 @@ class PlayBook(object): results = self._async_poll(poller, task.async_seconds, task.async_poll_interval) else: for (host, res) in results.get('contacted', {}).iteritems(): - self.runner_callbacks.on_async_ok(host, res, poller.jid) + self.runner_callbacks.on_async_ok(host, res, poller.runner.setup_cache[host]['ansible_job_id']) contacted = results.get('contacted',{}) dark = results.get('dark', {}) diff --git a/test/integration/roles/test_async/tasks/main.yml b/test/integration/roles/test_async/tasks/main.yml index 350d5ef470..502140599f 100644 --- a/test/integration/roles/test_async/tasks/main.yml +++ b/test/integration/roles/test_async/tasks/main.yml @@ -43,3 +43,17 @@ - "'stdout_lines' in async_result" - "async_result.rc == 0" +- name: test async without polling + command: sleep 5 + async: 30 + poll: 0 + register: async_result + +- debug: var=async_result + +- name: validate async without polling returns + assert: + that: + - "'ansible_job_id' in async_result" + - "'started' in async_result" + - "'finished' not in async_result"