From 56ae8ebd60692b67d05cf2a89578d93183899a8a Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Mon, 8 Apr 2019 11:03:22 -0500 Subject: [PATCH] Don't swallow exceptions when processing included files (#54791) * Don't swallow exceptions when processing included files. Fixes #54786 --- .../fragments/include-no-swallow-error.yaml | 2 ++ lib/ansible/plugins/strategy/__init__.py | 15 ++++++--------- lib/ansible/plugins/strategy/free.py | 15 ++++++--------- lib/ansible/plugins/strategy/linear.py | 16 ++++++---------- 4 files changed, 20 insertions(+), 28 deletions(-) create mode 100644 changelogs/fragments/include-no-swallow-error.yaml diff --git a/changelogs/fragments/include-no-swallow-error.yaml b/changelogs/fragments/include-no-swallow-error.yaml new file mode 100644 index 00000000000..37f1416aa3a --- /dev/null +++ b/changelogs/fragments/include-no-swallow-error.yaml @@ -0,0 +1,2 @@ +bugfixes: +- include_role - Don't swallow errors when processing included files/roles (https://github.com/ansible/ansible/issues/54786) diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index 84d43d9ab9e..da61820e5bc 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -893,15 +893,12 @@ class StrategyBase: # collect the results from the handler run host_results = self._wait_on_handler_results(iterator, handler, notified_hosts) - try: - included_files = IncludedFile.process_include_results( - host_results, - iterator=iterator, - loader=self._loader, - variable_manager=self._variable_manager - ) - except AnsibleError: - return False + included_files = IncludedFile.process_include_results( + host_results, + iterator=iterator, + loader=self._loader, + variable_manager=self._variable_manager + ) result = True if len(included_files) > 0: diff --git a/lib/ansible/plugins/strategy/free.py b/lib/ansible/plugins/strategy/free.py index b712d08d540..4e779eb9a1c 100644 --- a/lib/ansible/plugins/strategy/free.py +++ b/lib/ansible/plugins/strategy/free.py @@ -202,15 +202,12 @@ class StrategyModule(StrategyBase): self.update_active_connections(results) - try: - included_files = IncludedFile.process_include_results( - host_results, - iterator=iterator, - loader=self._loader, - variable_manager=self._variable_manager - ) - except AnsibleError as e: - return self._tqm.RUN_ERROR + included_files = IncludedFile.process_include_results( + host_results, + iterator=iterator, + loader=self._loader, + variable_manager=self._variable_manager + ) if len(included_files) > 0: all_blocks = dict((host, []) for host in hosts_left) diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py index 93d767e3658..0a1c11c268c 100644 --- a/lib/ansible/plugins/strategy/linear.py +++ b/lib/ansible/plugins/strategy/linear.py @@ -324,16 +324,12 @@ class StrategyModule(StrategyBase): self.update_active_connections(results) - try: - included_files = IncludedFile.process_include_results( - host_results, - iterator=iterator, - loader=self._loader, - variable_manager=self._variable_manager - ) - except AnsibleError as e: - # this is a fatal error, so we abort here regardless of block state - return self._tqm.RUN_ERROR + included_files = IncludedFile.process_include_results( + host_results, + iterator=iterator, + loader=self._loader, + variable_manager=self._variable_manager + ) include_failure = False if len(included_files) > 0: