From fa368934bd26600104f72f9d8f0591c0fd68e958 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 7 Jun 2016 09:42:39 -0500 Subject: [PATCH] Create state in PlayIterator for unknown hosts rather than raise errors Since we now use the PlayIterator to carry forward failures from previous play executions, in the event that some hosts which had previously failed are not in the current inventory we now create a stub state instead of raising an error. --- lib/ansible/executor/play_iterator.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py index 0b46c3925e..72742c1a34 100644 --- a/lib/ansible/executor/play_iterator.py +++ b/lib/ansible/executor/play_iterator.py @@ -216,10 +216,13 @@ class PlayIterator: self._play.handlers.extend(play.compile_roles_handlers()) def get_host_state(self, host): - try: - return self._host_states[host.name].copy() - except KeyError: - raise AnsibleError("invalid host (%s) specified for playbook iteration" % host) + # Since we're using the PlayIterator to carry forward failed hosts, + # in the event that a previous host was not in the current inventory + # we create a stub state for it now + if host.name not in self._host_states: + self._host_states[host.name] = HostState(blocks=[]) + + return self._host_states[host.name].copy() def get_next_task_for_host(self, host, peek=False):