|
|
|
@ -53,22 +53,29 @@ class AnsibleError(Exception):
|
|
|
|
|
def __init__(self, message="", obj=None, show_content=True, suppress_extended_error=False, orig_exc=None):
|
|
|
|
|
super(AnsibleError, self).__init__(message)
|
|
|
|
|
|
|
|
|
|
self._show_content = show_content
|
|
|
|
|
self._suppress_extended_error = suppress_extended_error
|
|
|
|
|
self._message = to_native(message)
|
|
|
|
|
self.obj = obj
|
|
|
|
|
|
|
|
|
|
if orig_exc:
|
|
|
|
|
self.orig_exc = orig_exc
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def message(self):
|
|
|
|
|
# we import this here to prevent an import loop problem,
|
|
|
|
|
# since the objects code also imports ansible.errors
|
|
|
|
|
from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject
|
|
|
|
|
|
|
|
|
|
self._obj = obj
|
|
|
|
|
self._show_content = show_content
|
|
|
|
|
if obj and isinstance(obj, AnsibleBaseYAMLObject):
|
|
|
|
|
if isinstance(self.obj, AnsibleBaseYAMLObject):
|
|
|
|
|
extended_error = self._get_extended_error()
|
|
|
|
|
if extended_error and not suppress_extended_error:
|
|
|
|
|
self.message = '%s\n\n%s' % (to_native(message), to_native(extended_error))
|
|
|
|
|
else:
|
|
|
|
|
self.message = '%s' % to_native(message)
|
|
|
|
|
else:
|
|
|
|
|
self.message = '%s' % to_native(message)
|
|
|
|
|
if orig_exc:
|
|
|
|
|
self.orig_exc = orig_exc
|
|
|
|
|
if extended_error and not self._suppress_extended_error:
|
|
|
|
|
return '%s\n\n%s' % (self._message, to_native(extended_error))
|
|
|
|
|
return self._message
|
|
|
|
|
|
|
|
|
|
@message.setter
|
|
|
|
|
def message(self, val):
|
|
|
|
|
self._message = val
|
|
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
|
return self.message
|
|
|
|
@ -110,7 +117,7 @@ class AnsibleError(Exception):
|
|
|
|
|
error_message = ''
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
(src_file, line_number, col_number) = self._obj.ansible_pos
|
|
|
|
|
(src_file, line_number, col_number) = self.obj.ansible_pos
|
|
|
|
|
error_message += YAML_POSITION_DETAILS % (src_file, line_number, col_number)
|
|
|
|
|
if src_file not in ('<string>', '<unicode>') and self._show_content:
|
|
|
|
|
(target_line, prev_line) = self._get_error_lines_from_file(src_file, line_number - 1)
|
|
|
|
|