From c004ae578d89b1e7684de71b1e568f5ccafbd210 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 20 Sep 2016 11:10:27 -0500 Subject: [PATCH] Take ITERATING_ALWAYS into account when setting failed state in PlayIterator Fixes #15963 (cherry picked from commit 4dc2bf4815c4c16f131b7b4a6ae36d55b589b586) --- lib/ansible/executor/play_iterator.py | 2 ++ lib/ansible/plugins/strategy/linear.py | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py index 142573a4d90..52b7cfc1b03 100644 --- a/lib/ansible/executor/play_iterator.py +++ b/lib/ansible/executor/play_iterator.py @@ -480,6 +480,8 @@ class PlayIterator: elif state.fail_state != self.FAILED_NONE: if state.run_state == self.ITERATING_RESCUE and state.fail_state&self.FAILED_RESCUE == 0: return False + elif state.run_state == self.ITERATING_ALWAYS and state.fail_state&self.FAILED_ALWAYS == 0: + return False else: return True elif state.run_state == self.ITERATING_TASKS and self._check_failed_state(state.tasks_child_state): diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py index dc2b1a03207..54097991b5e 100644 --- a/lib/ansible/plugins/strategy/linear.py +++ b/lib/ansible/plugins/strategy/linear.py @@ -69,9 +69,12 @@ class StrategyModule(StrategyBase): if state_task and state_task[1]] if host_tasks_to_run: - lowest_cur_block = min( - (s.cur_block for h, (s, t) in host_tasks_to_run - if s.run_state != PlayIterator.ITERATING_COMPLETE)) + try: + lowest_cur_block = min( + (s.cur_block for h, (s, t) in host_tasks_to_run + if s.run_state != PlayIterator.ITERATING_COMPLETE)) + except ValueError: + lowest_cur_block = None else: # empty host_tasks_to_run will just run till the end of the function # without ever touching lowest_cur_block