diff --git a/lib/ansible/callbacks.py b/lib/ansible/callbacks.py index 95269bd145..2042dbc93a 100644 --- a/lib/ansible/callbacks.py +++ b/lib/ansible/callbacks.py @@ -415,7 +415,8 @@ class CliRunnerCallbacks(DefaultRunnerCallbacks): super(CliRunnerCallbacks, self).on_async_poll(host, res, jid, clock) def on_async_ok(self, host, res, jid): - display(" finished on %s => %s"%(jid, host, utils.jsonify(res,format=True)), runner=self.runner) + if jid: + display(" finished on %s => %s"%(jid, host, utils.jsonify(res,format=True)), runner=self.runner) super(CliRunnerCallbacks, self).on_async_ok(host, res, jid) def on_async_failed(self, host, res, jid): @@ -568,8 +569,9 @@ class PlaybookRunnerCallbacks(DefaultRunnerCallbacks): super(PlaybookRunnerCallbacks, self).on_async_poll(host,res,jid,clock) def on_async_ok(self, host, res, jid): - msg = " finished on %s"%(jid, host) - display(msg, color='cyan', runner=self.runner) + if jid: + msg = " finished on %s"%(jid, host) + display(msg, color='cyan', runner=self.runner) super(PlaybookRunnerCallbacks, self).on_async_ok(host, res, jid) def on_async_failed(self, host, res, jid): diff --git a/lib/ansible/runner/poller.py b/lib/ansible/runner/poller.py index 5fd3537480..0218481415 100644 --- a/lib/ansible/runner/poller.py +++ b/lib/ansible/runner/poller.py @@ -43,6 +43,7 @@ class AsyncPoller(object): self.active = True else: skipped = skipped and res.get('skipped', False) + self.runner.vars_cache[host]['ansible_job_id'] = '' self.results['contacted'][host] = res for (host, res) in results['dark'].iteritems(): self.runner.vars_cache[host]['ansible_job_id'] = '' diff --git a/test/integration/roles/test_async/tasks/main.yml b/test/integration/roles/test_async/tasks/main.yml index b83227791b..556284770a 100644 --- a/test/integration/roles/test_async/tasks/main.yml +++ b/test/integration/roles/test_async/tasks/main.yml @@ -56,3 +56,9 @@ - "'ansible_job_id' in async_result" - "'started' in async_result" - "'finished' not in async_result" + +- name: test skipped task handling + command: /bin/true + async: 15 + poll: 0 + when: False