summaryrefslogtreecommitdiff
path: root/lib/ansible/errors
diff options
context:
space:
mode:
authorMatt Martz <matt@sivel.net>2020-11-18 14:25:32 -0600
committerGitHub <noreply@github.com>2020-11-18 14:25:32 -0600
commitf8ef34672b961a95ec7282643679492862c688ec (patch)
treed98946bfa62390489cd304aa2ccf092b79e5afa1 /lib/ansible/errors
parente889b1063f60f6b99f5d031f7e903f7be5f58900 (diff)
downloadansible-f8ef34672b961a95ec7282643679492862c688ec.tar.gz
Provide better decryption errors for single vault values (#72362)
Fixes #72276 Fixes #72281
Diffstat (limited to 'lib/ansible/errors')
-rw-r--r--lib/ansible/errors/__init__.py31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/ansible/errors/__init__.py b/lib/ansible/errors/__init__.py
index 563c5d2549..0f1e5422f6 100644
--- a/lib/ansible/errors/__init__.py
+++ b/lib/ansible/errors/__init__.py
@@ -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)