Exceptit (#21864)
* more centralized exception handling * only remove when verboxse
This commit is contained in:
parent
89bf14e467
commit
b3251c9585
3 changed files with 19 additions and 28 deletions
|
@ -109,6 +109,20 @@ class CallbackBase:
|
||||||
self._display.deprecated(**warning)
|
self._display.deprecated(**warning)
|
||||||
del res['deprecations']
|
del res['deprecations']
|
||||||
|
|
||||||
|
def _handle_exception(self, result):
|
||||||
|
|
||||||
|
if 'exception' in result:
|
||||||
|
msg = "An exception occurred during task execution. "
|
||||||
|
if self._display.verbosity < 3:
|
||||||
|
# extract just the actual error message from the exception text
|
||||||
|
error = result['exception'].strip().split('\n')[-1]
|
||||||
|
msg += "To see the full traceback, use -vvv. The error was: %s" % error
|
||||||
|
else:
|
||||||
|
msg = "The full traceback is:\n" + result['exception']
|
||||||
|
del result['exception']
|
||||||
|
|
||||||
|
self._display.display(msg, color=C.COLOR_ERROR)
|
||||||
|
|
||||||
def _get_diff(self, difflist):
|
def _get_diff(self, difflist):
|
||||||
|
|
||||||
if not isinstance(difflist, list):
|
if not isinstance(difflist, list):
|
||||||
|
@ -197,6 +211,7 @@ class CallbackBase:
|
||||||
if 'invocation' in result and task_name in ['debug']:
|
if 'invocation' in result and task_name in ['debug']:
|
||||||
del result['invocation']
|
del result['invocation']
|
||||||
|
|
||||||
|
|
||||||
def set_play_context(self, play_context):
|
def set_play_context(self, play_context):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -46,16 +46,7 @@ class CallbackModule(CallbackBase):
|
||||||
self._print_task_banner(result._task)
|
self._print_task_banner(result._task)
|
||||||
|
|
||||||
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
||||||
if 'exception' in result._result:
|
self._handle_exception(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=C.COLOR_ERROR)
|
|
||||||
|
|
||||||
self._handle_warnings(result._result)
|
self._handle_warnings(result._result)
|
||||||
|
|
||||||
if result._task.loop and 'results' in result._result:
|
if result._task.loop and 'results' in result._result:
|
||||||
|
@ -212,16 +203,9 @@ class CallbackModule(CallbackBase):
|
||||||
self._display.display(msg, color=color)
|
self._display.display(msg, color=color)
|
||||||
|
|
||||||
def v2_runner_item_on_failed(self, result):
|
def v2_runner_item_on_failed(self, result):
|
||||||
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
|
||||||
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=C.COLOR_ERROR)
|
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
||||||
|
self._handle_exception(result._result)
|
||||||
|
|
||||||
msg = "failed: "
|
msg = "failed: "
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
|
|
|
@ -45,16 +45,8 @@ class CallbackModule(CallbackBase):
|
||||||
return buf + "\n"
|
return buf + "\n"
|
||||||
|
|
||||||
def v2_runner_on_failed(self, result, ignore_errors=False):
|
def v2_runner_on_failed(self, result, ignore_errors=False):
|
||||||
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=C.COLOR_ERROR)
|
|
||||||
|
|
||||||
|
self._handle_exception(result._result)
|
||||||
self._handle_warnings(result._result)
|
self._handle_warnings(result._result)
|
||||||
|
|
||||||
if result._task.action in C.MODULE_NO_JSON and 'module_stderr' not in result._result:
|
if result._task.action in C.MODULE_NO_JSON and 'module_stderr' not in result._result:
|
||||||
|
|
Loading…
Reference in a new issue