diff options
author | Brian Coca <brian.coca+git@gmail.com> | 2016-10-11 07:53:25 -0700 |
---|---|---|
committer | Brian Coca <brian.coca+git@gmail.com> | 2016-10-13 13:27:44 -0400 |
commit | 2accc28d14aba5685ed93ab3d0cbb49f5fc78a06 (patch) | |
tree | 9e3e50858d93494774dc72cd48aabf75a1530c2c | |
parent | d8155cc4fa47b4fdceefb140702eb6189c77f32b (diff) | |
download | ansible-2accc28d14aba5685ed93ab3d0cbb49f5fc78a06.tar.gz |
restored 'results' filters
tests do not work the same, restoring old filters to keep backwards compat
tests now only implment the new normalized 'tense'
(cherry picked from commit cdb5a222c50eb9c67f21d22d7c4da1e67fb9c01f)
-rw-r--r-- | lib/ansible/plugins/filter/core.py | 54 | ||||
-rw-r--r-- | lib/ansible/plugins/test/core.py | 4 |
2 files changed, 54 insertions, 4 deletions
diff --git a/lib/ansible/plugins/filter/core.py b/lib/ansible/plugins/filter/core.py index 3df69fd828..276a95dd16 100644 --- a/lib/ansible/plugins/filter/core.py +++ b/lib/ansible/plugins/filter/core.py @@ -387,6 +387,46 @@ def extract(item, container, morekeys=None): return value +def failed(*a, **kw): + ''' Test if task result yields failed ''' + item = a[0] + if type(item) != dict: + raise errors.AnsibleFilterError("|failed expects a dictionary") + rc = item.get('rc',0) + failed = item.get('failed',False) + if rc != 0 or failed: + return True + else: + return False + +def success(*a, **kw): + ''' Test if task result yields success ''' + return not failed(*a, **kw) + +def changed(*a, **kw): + ''' Test if task result yields changed ''' + item = a[0] + if type(item) != dict: + raise errors.AnsibleFilterError("|changed expects a dictionary") + if not 'changed' in item: + changed = False + if ('results' in item # some modules return a 'results' key + and type(item['results']) == list + and type(item['results'][0]) == dict): + for result in item['results']: + changed = changed or result.get('changed', False) + else: + changed = item.get('changed', False) + return changed + +def skipped(*a, **kw): + ''' Test if task result yields skipped ''' + item = a[0] + if type(item) != dict: + raise errors.AnsibleFilterError("|skipped expects a dictionary") + skipped = item.get('skipped', False) + return skipped + class FilterModule(object): ''' Ansible core jinja2 filters ''' @@ -467,4 +507,18 @@ class FilterModule(object): # array and dict lookups 'extract': extract, + + # failure testing + 'failed' : failed, + 'failure' : failed, + 'success' : success, + 'succeeded' : success, + + # changed testing + 'changed' : changed, + 'change' : changed, + + # skip testing + 'skipped' : skipped, + 'skip' : skipped, } diff --git a/lib/ansible/plugins/test/core.py b/lib/ansible/plugins/test/core.py index b6acadc80d..19f6964f15 100644 --- a/lib/ansible/plugins/test/core.py +++ b/lib/ansible/plugins/test/core.py @@ -121,17 +121,13 @@ class TestModule(object): return { # failure testing 'failed' : failed, - 'failure' : failed, - 'success' : success, 'succeeded' : success, # changed testing 'changed' : changed, - 'change' : changed, # skip testing 'skipped' : skipped, - 'skip' : skipped, # regex 'match': match, |