summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag Wieers <dag@wieers.com>2016-03-17 01:39:30 +0100
committerBrian Coca <bcoca@users.noreply.github.com>2016-11-17 19:30:42 -0500
commit7148023f59581703d2ea8bf17cc9667bd5b6a4cb (patch)
tree9214c9c83089d55f2b525653bf980d77d38367a5
parent9a507b1f0767686cddcbb80567a1931384a0962b (diff)
downloadansible-7148023f59581703d2ea8bf17cc9667bd5b6a4cb.tar.gz
Small fix so diff output starts on a new line
-rw-r--r--lib/ansible/plugins/callback/dense.py46
1 files changed, 33 insertions, 13 deletions
diff --git a/lib/ansible/plugins/callback/dense.py b/lib/ansible/plugins/callback/dense.py
index fa58bebd32..7c5a76d233 100644
--- a/lib/ansible/plugins/callback/dense.py
+++ b/lib/ansible/plugins/callback/dense.py
@@ -60,7 +60,6 @@ import sys
# + Modify Ansible mechanism so we don't need to use sys.stdout directly
# + Find an elegant solution for progress bar line wrapping
-# When using -vv or higher, simply do the default action
# FIXME: Importing constants as C simply does not work, beats me :-/
#from ansible import constants as C
@@ -157,6 +156,20 @@ class CallbackModule_dense(CallbackModule_default):
self.super_ref = super(CallbackModule, self)
self.super_ref.__init__()
+ # Attributes to remove from results for more density
+ self.removed_attributes = (
+ 'changed',
+ 'delta',
+ 'diff',
+ 'end',
+ 'failed',
+ 'failed_when_result',
+ 'invocation',
+ 'start',
+ 'stdout_lines',
+ )
+
+ # Initiate data structures
self.hosts = OrderedDict()
self.keep = False
self.shown_title = False
@@ -166,7 +179,7 @@ class CallbackModule_dense(CallbackModule_default):
# Start immediately on the first line
sys.stdout.write(ansi.save + ansi.reset + ansi.clearline)
sys.stdout.flush()
-
+
def _add_host(self, result, status):
name = result._host.get_name()
@@ -188,6 +201,8 @@ class CallbackModule_dense(CallbackModule_default):
# Print progress bar
self._display_progress(result)
+# # Ensure that tasks with changes/failures stay on-screen, and during diff-mode
+# if status in ['changed', 'failed', 'unreachable'] or (result.get('_diff_mode', False) and result._resultget('diff', False)):
# Ensure that tasks with changes/failures stay on-screen
if status in ['changed', 'failed', 'unreachable']:
self.keep = True
@@ -199,8 +214,7 @@ class CallbackModule_dense(CallbackModule_default):
def _clean_results(self, result):
# Remove non-essential atributes
- removed_attributes = ('changed', 'delta', 'end', 'failed', 'failed_when_result', 'invocation', 'start', 'stdout_lines')
- for attr in removed_attributes:
+ for attr in self.removed_attributes:
if attr in result:
del(result[attr])
@@ -212,16 +226,11 @@ class CallbackModule_dense(CallbackModule_default):
def _handle_exceptions(self, result):
if 'exception' in result:
- if self._display.verbosity < 3:
- # extract just the actual error message from the exception text
- error = 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['exception']
-
- # finally, remove the exception from the result so it's not shown every time
+ # Remove the exception from the result so it's not shown every time
del result['exception']
- return msg
+
+ if self._display.verbosity == 1:
+ return "An exception occurred during task execution. To see the full traceback, use -vvv."
def _display_progress(self, result=None):
# Always rewrite the complete line
@@ -238,6 +247,11 @@ class CallbackModule_dense(CallbackModule_default):
sys.stdout.write(colors[self.hosts[name]['state']] + name + ansi.reset)
sys.stdout.flush()
+ # If we are expecting diff output, show it on a new line
+ if result._result.get('diff', False):
+ sys.stdout.write('\n')
+ self.keep = False
+
def _display_task_banner(self):
if not self.shown_title:
self.shown_title = True
@@ -379,6 +393,11 @@ class CallbackModule_dense(CallbackModule_default):
def v2_runner_on_include(self, included_file):
pass
+# def v2_on_file_diff(self, result):
+# if result._result.get('diff', False):
+# self._display_task_banner()
+# self.super_ref.v2_on_file_diff(result)
+
def v2_playbook_item_on_ok(self, result):
if result._result.get('changed', False):
self._add_host(result, 'changed')
@@ -431,6 +450,7 @@ class CallbackModule_dense(CallbackModule_default):
screen_only=True
)
+# When using -vv or higher, simply do the default action
if display.verbosity >= 2:
CallbackModule = CallbackModule_default
else: