diff --git a/lib/ansible/runner/filter_plugins/core.py b/lib/ansible/runner/filter_plugins/core.py index 293ebc4ae36..57dd9debebb 100644 --- a/lib/ansible/runner/filter_plugins/core.py +++ b/lib/ansible/runner/filter_plugins/core.py @@ -140,19 +140,40 @@ def regex_replace(value='', pattern='', replacement='', ignorecase=False): return _re.sub(replacement, value) def unique(a): - return set(a) + try: + c = set(a) + except TypeError, e: + c = [] + c = filter(lambda x: x not in c, a) + return c def intersect(a, b): - return set(a).intersection(b) + try: + c = set(a) & set(b) + except TypeError, e: + c = filter(lambda x: x in b, a) + return c def difference(a, b): - return set(a).difference(b) + try: + c = set(a) - set(b) + except TypeError, e: + c = filter(lambda x: x not in b, a) + return c def symmetric_difference(a, b): - return set(a).symmetric_difference(b) + try: + c = set(a) ^ set(b) + except TypeError, e: + c = filter(lambda x: x not in intersect(a,b), union(a,b)) + return c def union(a, b): - return set(a).union(b) + try: + c = set(a) | set(b) + except TypeError, e: + c = a + b + return c def version_compare(value, version, operator='eq', strict=False): ''' Perform a version comparison on a value '''