From 6ec4d98764b14cffeb7f8b43c01e015b67237753 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 11 Jan 2016 12:50:04 -0500 Subject: [PATCH] When setting fail state skip RESCUE/ALWAYS if cur_block doesn't have them Fixes #13749 --- lib/ansible/executor/play_iterator.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py index 147e46e5aa7..3de07ec70c8 100644 --- a/lib/ansible/executor/play_iterator.py +++ b/lib/ansible/executor/play_iterator.py @@ -342,13 +342,21 @@ class PlayIterator: state.tasks_child_state = self._set_failed_state(state.tasks_child_state) else: state.fail_state |= self.FAILED_TASKS - state.run_state = self.ITERATING_RESCUE + if state._blocks[state.cur_block].rescue: + state.run_state = self.ITERATING_RESCUE + elif state._blocks[state.cur_block].always: + state.run_state = self.ITERATING_ALWAYS + else: + state.run_state = self.ITERATING_COMPLETE elif state.run_state == self.ITERATING_RESCUE: if state.rescue_child_state is not None: state.rescue_child_state = self._set_failed_state(state.rescue_child_state) else: state.fail_state |= self.FAILED_RESCUE - state.run_state = self.ITERATING_ALWAYS + if state._blocks[state.cur_block].always: + state.run_state = self.ITERATING_ALWAYS + else: + state.run_state = self.ITERATING_COMPLETE elif state.run_state == self.ITERATING_ALWAYS: if state.always_child_state is not None: state.always_child_state = self._set_failed_state(state.always_child_state)