In TQM run() mark any entries in _failed_hosts as failed in the PlayIterator

As noted in the comment, the TQM may be used for more than one play. As such,
after creating the new PlayIterator object it is necessary to mark any failed
hosts from previous calls to run() as failed in the iterator, so they are
properly skipped during any future calls to run().
This commit is contained in:
James Cammarata 2016-05-17 14:06:10 -04:00
parent 7855612805
commit 710a96956e

View file

@ -236,6 +236,13 @@ class TaskQueueManager:
start_at_done = self._start_at_done,
)
# because the TQM may survive multiple play runs, we start by
# marking any hosts as failed in the iterator here which may
# have been marked as failed in previous runs.
for host_name in self._failed_hosts.keys():
host = self._inventory.get_host(host_name)
iterator.mark_host_failed(host)
# during initialization, the PlayContext will clear the start_at_task
# field to signal that a matching task was found, so check that here
# and remember it so we don't try to skip tasks on future plays