linear strategy: don't look at tasks from the next block

pull/13735/head
Tomasz Kontusz 9 years ago
parent 7a4914aa9b
commit ec3b7b7de8

@ -62,19 +62,32 @@ class StrategyModule(StrategyBase):
num_rescue = 0
num_always = 0
lowest_cur_block = len(iterator._blocks)
display.debug("counting tasks in each state of execution")
for (k, v) in iteritems(host_tasks):
if v is None:
continue
host_tasks_to_run = [(host, state_task)
for host, state_task in iteritems(host_tasks)
if state_task and state_task[1]]
# Drop noops
host_tasks_to_run = [
(host, (state, task))
for host, (state, task) in host_tasks_to_run
if task.action != 'meta' or task.args.get('_raw_params') != 'noop'
]
if host_tasks_to_run:
lowest_cur_block = min(
(s.cur_block for h, (s, t) in host_tasks_to_run
if s.run_state != PlayIterator.ITERATING_COMPLETE))
else:
# empty host_tasks_to_run will just run till the end of the function
# without ever touching lowest_cur_block
lowest_cur_block = None
for (k, v) in host_tasks_to_run:
(s, t) = v
if t is None:
continue
if s.cur_block < lowest_cur_block and s.run_state != PlayIterator.ITERATING_COMPLETE:
lowest_cur_block = s.cur_block
if s.cur_block > lowest_cur_block:
# Not the current block, ignore it
continue
if s.run_state == PlayIterator.ITERATING_SETUP:
num_setups += 1

Loading…
Cancel
Save