mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-25 22:30:22 -07:00
Inject attempts into result earlier for retry logic (#34148)
* Add integration test for missing attempts in until with failed/changed_when * Extend tests to validate additional known behaviors of do-until loops * Inject attempts into result earlier
This commit is contained in:
parent
6d3fafa2d5
commit
3d0da8f093
2 changed files with 51 additions and 3 deletions
|
@ -535,7 +535,7 @@ class TaskExecutor:
|
|||
# update the local copy of vars with the registered value, if specified,
|
||||
# or any facts which may have been generated by the module execution
|
||||
if self._task.register:
|
||||
vars_copy[self._task.register] = wrap_var(result.copy())
|
||||
vars_copy[self._task.register] = wrap_var(result)
|
||||
|
||||
if self._task.async_val > 0:
|
||||
if self._task.poll > 0 and not result.get('skipped') and not result.get('failed'):
|
||||
|
@ -575,10 +575,20 @@ class TaskExecutor:
|
|||
else:
|
||||
result['failed'] = False
|
||||
|
||||
# Make attempts and retries available early to allow their use in changed/failed_when
|
||||
result['attempts'] = attempt
|
||||
|
||||
# set the changed property if it was missing.
|
||||
if 'changed' not in result:
|
||||
result['changed'] = False
|
||||
|
||||
# re-update the local copy of vars with the registered value, if specified,
|
||||
# or any facts which may have been generated by the module execution
|
||||
# This gives changed/failed_when access to additional recently modified
|
||||
# attributes of result
|
||||
if self._task.register:
|
||||
vars_copy[self._task.register] = wrap_var(result)
|
||||
|
||||
# if we didn't skip this task, use the helpers to evaluate the changed/
|
||||
# failed_when properties
|
||||
if 'skipped' not in result:
|
||||
|
@ -588,7 +598,6 @@ class TaskExecutor:
|
|||
if retries > 1:
|
||||
cond = Conditional(loader=self._loader)
|
||||
cond.when = self._task.until
|
||||
result['attempts'] = attempt
|
||||
if cond.evaluate_conditional(templar, vars_copy):
|
||||
break
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue