mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-03 23:09:09 -07:00
calculate max fail against all hosts in batch
currently it is doing only from the 'active' hosts in the batch which means the percentage goes up as hosts fail instead of staying the same. added debug info for max fail fixes #32255
This commit is contained in:
parent
41685fb516
commit
4fb9e54c50
3 changed files with 13 additions and 23 deletions
|
@ -242,22 +242,6 @@ class TaskQueueManager:
|
|||
loader=self._loader,
|
||||
)
|
||||
|
||||
# Fork # of forks, # of hosts or serial, whichever is lowest
|
||||
num_hosts = len(self._inventory.get_hosts(new_play.hosts, ignore_restrictions=True))
|
||||
|
||||
max_serial = 0
|
||||
if new_play.serial:
|
||||
# the play has not been post_validated here, so we may need
|
||||
# to convert the scalar value to a list at this point
|
||||
serial_items = new_play.serial
|
||||
if not isinstance(serial_items, list):
|
||||
serial_items = [serial_items]
|
||||
max_serial = max([pct_to_int(x, num_hosts) for x in serial_items])
|
||||
|
||||
contenders = [self._options.forks, max_serial, num_hosts]
|
||||
contenders = [v for v in contenders if v is not None and v > 0]
|
||||
self._initialize_processes(min(contenders))
|
||||
|
||||
play_context = PlayContext(new_play, self._options, self.passwords, self._connection_lockfile.fileno())
|
||||
for callback_plugin in self._callback_plugins:
|
||||
if hasattr(callback_plugin, 'set_play_context'):
|
||||
|
@ -268,11 +252,6 @@ class TaskQueueManager:
|
|||
# initialize the shared dictionary containing the notified handlers
|
||||
self._initialize_notified_handlers(new_play)
|
||||
|
||||
# load the specified strategy (or the default linear one)
|
||||
strategy = strategy_loader.get(new_play.strategy, self)
|
||||
if strategy is None:
|
||||
raise AnsibleError("Invalid play strategy specified: %s" % new_play.strategy, obj=play._ds)
|
||||
|
||||
# build the iterator
|
||||
iterator = PlayIterator(
|
||||
inventory=self._inventory,
|
||||
|
@ -283,6 +262,14 @@ class TaskQueueManager:
|
|||
start_at_done=self._start_at_done,
|
||||
)
|
||||
|
||||
# adjust to # of workers to configured forks or size of batch, whatever is lower
|
||||
self._initialize_processes(min(self._options.forks, iterator.batch_size))
|
||||
|
||||
# load the specified strategy (or the default linear one)
|
||||
strategy = strategy_loader.get(new_play.strategy, self)
|
||||
if strategy is None:
|
||||
raise AnsibleError("Invalid play strategy specified: %s" % new_play.strategy, obj=play._ds)
|
||||
|
||||
# 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. Then we clear the internal list of failed
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue