diff options
author | Matt Martz <matt@sivel.net> | 2020-11-18 14:25:32 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-18 14:25:32 -0600 |
commit | f8ef34672b961a95ec7282643679492862c688ec (patch) | |
tree | d98946bfa62390489cd304aa2ccf092b79e5afa1 /lib/ansible/errors | |
parent | e889b1063f60f6b99f5d031f7e903f7be5f58900 (diff) | |
download | ansible-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__.py | 31 |
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) |