now show full callback stacktrace when vvv+

Still is a warning as we don't want to repeat it multiple times nor additional callbacks to stop ansible execution.
hopefully we can avoid shipping w/o exceptions in the default/minimal callbacks...

Also added feature that now allows for 'preformated' strings passed to warning
This commit is contained in:
Brian Coca 2016-01-06 10:29:35 -05:00
parent 45355cd566
commit 737090dd13
2 changed files with 15 additions and 5 deletions

View file

@ -290,8 +290,13 @@ class TaskQueueManager:
try:
method(*args, **kwargs)
except Exception as e:
import traceback
orig_tb = traceback.format_exc()
try:
v1_method = method.replace('v2_','')
v1_method(*args, **kwargs)
except Exception:
if display.verbosity >= 3:
display.warning(orig_tb, formatted=True)
else:
display.warning('Error when using %s: %s' % (method, str(e)))

View file

@ -202,10 +202,15 @@ class Display:
self.display(new_msg.strip(), color=C.COLOR_DEPRECATE, stderr=True)
self._deprecations[new_msg] = 1
def warning(self, msg):
def warning(self, msg, formatted=False):
if not formatted:
new_msg = "\n[WARNING]: %s" % msg
wrapped = textwrap.wrap(new_msg, self.columns)
new_msg = "\n".join(wrapped) + "\n"
else:
new_msg = "\n[WARNING]: \n%s" % msg
if new_msg not in self._warns:
self.display(new_msg, color=C.COLOR_WARN, stderr=True)
self._warns[new_msg] = 1