summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2016-09-20 11:10:27 -0500
committerJames Cammarata <jimi@sngx.net>2016-09-20 11:31:23 -0500
commitc004ae578d89b1e7684de71b1e568f5ccafbd210 (patch)
treea950ebbc2e28b588c56d64f00e7d614b50175037
parentefe5bb122e10ab1d54467c6ceb4d0be54ce13f08 (diff)
downloadansible-c004ae578d89b1e7684de71b1e568f5ccafbd210.tar.gz
Take ITERATING_ALWAYS into account when setting failed state in PlayIterator
Fixes #15963 (cherry picked from commit 4dc2bf4815c4c16f131b7b4a6ae36d55b589b586)
-rw-r--r--lib/ansible/executor/play_iterator.py2
-rw-r--r--lib/ansible/plugins/strategy/linear.py9
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py
index 142573a4d9..52b7cfc1b0 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 dc2b1a0320..54097991b5 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