Add shorthand debugger method to recreate the task from the original ds (#46987)
* Add shorthand debugger method to recreate the task from the original ds, and re-template. Fixes #46321 * Fix rst header * Indicate update_task was added in 2.8
This commit is contained in:
parent
6c2e4c1ca8
commit
f7ba63e047
2 changed files with 22 additions and 0 deletions
|
@ -235,6 +235,7 @@ Let's use the same playbook above, but fix ``task_vars`` instead of args::
|
||||||
[192.0.2.10] TASK: install package (debug)> task_vars['pkg_name'] = 'bash'
|
[192.0.2.10] TASK: install package (debug)> task_vars['pkg_name'] = 'bash'
|
||||||
[192.0.2.10] TASK: install package (debug)> p task_vars['pkg_name']
|
[192.0.2.10] TASK: install package (debug)> p task_vars['pkg_name']
|
||||||
'bash'
|
'bash'
|
||||||
|
[192.0.2.10] TASK: install package (debug)> update_task
|
||||||
[192.0.2.10] TASK: install package (debug)> redo
|
[192.0.2.10] TASK: install package (debug)> redo
|
||||||
|
|
||||||
Then the task runs again with new ``task_vars``.
|
Then the task runs again with new ``task_vars``.
|
||||||
|
@ -242,6 +243,17 @@ Then the task runs again with new ``task_vars``.
|
||||||
.. note::
|
.. note::
|
||||||
In 2.5 this was updated from ``vars`` to ``task_vars`` to not conflict with the ``vars()`` python function.
|
In 2.5 this was updated from ``vars`` to ``task_vars`` to not conflict with the ``vars()`` python function.
|
||||||
|
|
||||||
|
.. _update_task_command:
|
||||||
|
|
||||||
|
u(pdate_task)
|
||||||
|
`````````````
|
||||||
|
|
||||||
|
.. versionadded:: 2.8
|
||||||
|
|
||||||
|
This command re-creates the task from the original task data structure, and templates with updated ``task_vars``
|
||||||
|
|
||||||
|
See the above documentation for :ref:`update_vars_command` for an example of use.
|
||||||
|
|
||||||
.. _redo_command:
|
.. _redo_command:
|
||||||
|
|
||||||
r(edo)
|
r(edo)
|
||||||
|
|
|
@ -1200,6 +1200,16 @@ class Debugger(cmd.Cmd):
|
||||||
|
|
||||||
do_r = do_redo
|
do_r = do_redo
|
||||||
|
|
||||||
|
def do_update_task(self, args):
|
||||||
|
"""Recreate the task from ``task._ds``, and template with updated ``task_vars``"""
|
||||||
|
templar = Templar(None, shared_loader_obj=None, variables=self.scope['task_vars'])
|
||||||
|
task = self.scope['task']
|
||||||
|
task = task.load_data(task._ds)
|
||||||
|
task.post_validate(templar)
|
||||||
|
self.scope['task'] = task
|
||||||
|
|
||||||
|
do_u = do_update_task
|
||||||
|
|
||||||
def evaluate(self, args):
|
def evaluate(self, args):
|
||||||
try:
|
try:
|
||||||
return eval(args, globals(), self.scope)
|
return eval(args, globals(), self.scope)
|
||||||
|
|
Loading…
Reference in a new issue