From 6f93d228f6540ad7d6474ca0371e74ecb65b580c Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Tue, 28 Jul 2015 10:59:39 -0400 Subject: [PATCH] made item output closer to v1 --- lib/ansible/plugins/callback/__init__.py | 12 +++++-- lib/ansible/plugins/callback/default.py | 46 ++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/lib/ansible/plugins/callback/__init__.py b/lib/ansible/plugins/callback/__init__.py index f9bc9d46b03..ab499fef6ac 100644 --- a/lib/ansible/plugins/callback/__init__.py +++ b/lib/ansible/plugins/callback/__init__.py @@ -107,9 +107,11 @@ class CallbackBase: newres = deepcopy(result) newres._result = res if 'failed' in res and res['failed']: - self.v2_runner_on_failed(newres) + self.v2_playbook_item_on_failed(newres) + elif 'skipped' in res and res['skipped']: + self.v2_playbook_item_on_skipped(newres) else: - self.v2_runner_on_ok(newres) + self.v2_playbook_item_on_ok(newres) del result._result['results'] @@ -270,3 +272,9 @@ class CallbackBase: host = result._host.get_name() if 'diff' in result._result: self.on_file_diff(host, result._result['diff']) + + def v2_playbook_on_item_ok(self, result): + pass # no v1 + + def v2_playbook_on_item_failed(self, result): + pass # no v1 diff --git a/lib/ansible/plugins/callback/default.py b/lib/ansible/plugins/callback/default.py index 1f9179d84ab..aba83107bea 100644 --- a/lib/ansible/plugins/callback/default.py +++ b/lib/ansible/plugins/callback/default.py @@ -48,8 +48,8 @@ class CallbackModule(CallbackBase): if result._task.loop and 'results' in result._result: self._process_items(result) - - self._display.display("fatal: [%s]: FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result)), color='red') + else: + self._display.display("fatal: [%s]: FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result)), color='red') if result._task.ignore_errors: self._display.display("...ignoring", color='cyan') @@ -111,3 +111,45 @@ class CallbackModule(CallbackBase): def v2_on_file_diff(self, result): if 'diff' in result._result: self._display.display(self._get_diff(result._result['diff'])) + + def v2_playbook_item_on_ok(self, result): + + if result._task.action == 'include': + msg = 'included: %s for %s' % (result._task.args.get('_raw_params'), result._host.name) + color = 'cyan' + elif result._result.get('changed', False): + msg = "changed: [%s]" % result._host.get_name() + color = 'yellow' + else: + msg = "ok: [%s]" % result._host.get_name() + color = 'green' + + msg += " => (item=%s)" % result._result['item'] + + if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result and result._task.action != 'include': + msg += " => %s" % self._dump_results(result._result) + self._display.display(msg, color=color) + + def v2_playbook_item_on_failed(self, result): + if 'exception' in result._result: + if self._display.verbosity < 3: + # extract just the actual error message from the exception text + error = result._result['exception'].strip().split('\n')[-1] + msg = "An exception occurred during task execution. To see the full traceback, use -vvv. The error was: %s" % error + else: + msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception'] + + self._display.display(msg, color='red') + + # finally, remove the exception from the result so it's not shown every time + del result._result['exception'] + + self._display.display("failed: [%s] => (item=%s) => %s" % (result._host.get_name(), result._result['item'], self._dump_results(result._result)), color='red') + self._handle_warnings(result._result) + + def v2_playbook_item_on_skipped(self, result): + msg = "skipping: [%s] => (item=%s) " % (result._host.get_name(), result._result['item']) + if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result: + msg += " => %s" % self._dump_results(result._result) + self._display.display(msg, color='cyan') +