diff --git a/docsite/latest/rst/playbooks2.rst b/docsite/latest/rst/playbooks2.rst index 30fd4cc82cf..d2b05181682 100644 --- a/docsite/latest/rst/playbooks2.rst +++ b/docsite/latest/rst/playbooks2.rst @@ -300,6 +300,8 @@ decide to do something conditionally based on success or failure:: when: result|failed - action: command /bin/something_else when: result|success + - action: command /bin/still/something_else + when: result|skipped As a reminder, to see what derived variables are available, you can do:: diff --git a/lib/ansible/runner/filter_plugins/core.py b/lib/ansible/runner/filter_plugins/core.py index 107c5e1fcb5..675f5e8522b 100644 --- a/lib/ansible/runner/filter_plugins/core.py +++ b/lib/ansible/runner/filter_plugins/core.py @@ -44,6 +44,13 @@ def failed(*a, **kw): def success(*a, **kw): return not failed(*a, **kw) +def skipped(*a, **kw): + item = a[0] + if type(item) != dict: + raise errors.AnsibleError("|skipped expects a dictionary") + skipped = item.get('skipped', False) + return skipped + def mandatory(a): ''' Make a variable mandatory ''' if not a: @@ -88,6 +95,9 @@ class FilterModule(object): 'failed' : failed, 'success' : success, + # skip testing + 'skipped' : skipped, + # variable existence 'mandatory': mandatory,