diff options
author | Brian Coca <bcoca@users.noreply.github.com> | 2022-10-28 19:18:24 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-28 16:18:24 -0700 |
commit | cb6e106d7d8b6dabfdd658d0d5284bc808af33cb (patch) | |
tree | 75c90b6ab2619e973fc3699df251ec1de3940063 | |
parent | 25f8b9829dd42c013e8a84a0868c22829db2ce27 (diff) | |
download | ansible-cb6e106d7d8b6dabfdd658d0d5284bc808af33cb.tar.gz |
File lookup handle missing file more gracefully (#79230) (#79245)
previously it would have a 2nd tb due to bad error raising
also remove superfluous warning
(cherry picked from commit aaab0791d9507b64ea04903bf35500c87ebb33b4)
-rw-r--r-- | changelogs/fragments/file_lookup_fix.yml | 2 | ||||
-rw-r--r-- | lib/ansible/plugins/lookup/file.py | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/changelogs/fragments/file_lookup_fix.yml b/changelogs/fragments/file_lookup_fix.yml new file mode 100644 index 0000000000..0e6ba49da4 --- /dev/null +++ b/changelogs/fragments/file_lookup_fix.yml @@ -0,0 +1,2 @@ +bugfixes: + - file lookup now handles missing files more gracefully. diff --git a/lib/ansible/plugins/lookup/file.py b/lib/ansible/plugins/lookup/file.py index fa9191ee1b..9657536d73 100644 --- a/lib/ansible/plugins/lookup/file.py +++ b/lib/ansible/plugins/lookup/file.py @@ -50,7 +50,7 @@ RETURN = """ elements: str """ -from ansible.errors import AnsibleError, AnsibleParserError +from ansible.errors import AnsibleError, AnsibleOptionsError from ansible.plugins.lookup import LookupBase from ansible.module_utils._text import to_text from ansible.utils.display import Display @@ -67,11 +67,10 @@ class LookupModule(LookupBase): for term in terms: display.debug("File lookup term: %s" % term) - # Find the file in the expected search path - lookupfile = self.find_file_in_search_path(variables, 'files', term) - display.vvvv(u"File lookup using %s as file" % lookupfile) try: + lookupfile = self.find_file_in_search_path(variables, 'files', term, ignore_missing=True) + display.vvvv(u"File lookup using %s as file" % lookupfile) if lookupfile: b_contents, show_data = self._loader._get_file_contents(lookupfile) contents = to_text(b_contents, errors='surrogate_or_strict') @@ -81,8 +80,9 @@ class LookupModule(LookupBase): contents = contents.rstrip() ret.append(contents) else: - raise AnsibleParserError() - except AnsibleParserError: - raise AnsibleError("could not locate file in lookup: %s" % term) + # TODO: only add search info if abs path? + raise AnsibleError("file not found, use -vvvvv to see paths searched") + except AnsibleError as e: + raise AnsibleOptionsError("The 'file' lookup had an issue accessing the file '%s'" % term, orig_exc=e) return ret |