Handle max_fail_percentage per task.

This commit is contained in:
Vincent Roy 2016-04-13 15:12:54 -03:00 committed by James Cammarata
parent 9602e43952
commit 46e9e4c4da

View file

@ -363,6 +363,19 @@ class StrategyModule(StrategyBase):
iterator.mark_host_failed(host) iterator.mark_host_failed(host)
display.debug("done checking for any_errors_fatal") display.debug("done checking for any_errors_fatal")
display.debug("checking for max_fail_percentage")
if iterator._play.max_fail_percentage is not None and len(results) > 0:
percentage = iterator._play.max_fail_percentage / 100.0
if (len(failed_hosts) / len(results)) > percentage:
for host in hosts_left:
# don't double-mark hosts, or the iterator will potentially
# fail them out of the rescue/always states
if host.name not in failed_hosts:
self._tqm._failed_hosts[host.name] = True
iterator.mark_host_failed(host)
display.debug("done checking for max_fail_percentage")
except (IOError, EOFError) as e: except (IOError, EOFError) as e:
display.debug("got IOError/EOFError in task loop: %s" % e) display.debug("got IOError/EOFError in task loop: %s" % e)
# most likely an abort, return failed # most likely an abort, return failed