summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2016-10-11 07:53:25 -0700
committerBrian Coca <brian.coca+git@gmail.com>2016-10-13 13:27:44 -0400
commit2accc28d14aba5685ed93ab3d0cbb49f5fc78a06 (patch)
tree9e3e50858d93494774dc72cd48aabf75a1530c2c
parentd8155cc4fa47b4fdceefb140702eb6189c77f32b (diff)
downloadansible-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.py54
-rw-r--r--lib/ansible/plugins/test/core.py4
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,