avoid spurious warnigns on unique filter

fixes #46189
This commit is contained in:
Brian Coca 2018-09-27 15:58:41 -04:00 committed by Brian Coca
parent 76bd7ab25a
commit 24593f2ffb
2 changed files with 14 additions and 8 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- Narrow the cases in which we warn about Jinja2 unique filters https://github.com/ansible/ansible/issues/46189

View file

@ -51,7 +51,12 @@ except ImportError:
@environmentfilter @environmentfilter
def unique(environment, a, case_sensitive=False, attribute=None): def unique(environment, a, case_sensitive=False, attribute=None):
error = None def _do_fail(e):
if case_sensitive or attribute:
raise AnsibleFilterError("Jinja2's unique filter failed and we cannot fall back to Ansible's version "
"as it does not support the parameters supplied", orig_exc=e)
error = e = None
try: try:
if HAS_UNIQUE: if HAS_UNIQUE:
c = do_unique(environment, a, case_sensitive=case_sensitive, attribute=attribute) c = do_unique(environment, a, case_sensitive=case_sensitive, attribute=attribute)
@ -59,14 +64,13 @@ def unique(environment, a, case_sensitive=False, attribute=None):
c = set(c) c = set(c)
else: else:
c = list(c) c = list(c)
except TypeError as e:
_do_fail(e)
except Exception as e: except Exception as e:
if case_sensitive or attribute: _do_fail(e)
raise AnsibleFilterError("Jinja2's unique filter failed and we cannot fall back to Ansible's version " display.warning('Falling back to Ansible unique filter as Jinja2 one failed: %s' % to_text(e))
"as it does not support the parameters supplied", orig_exc=e) finally:
else: error = e
display.warning('Falling back to Ansible unique filter as Jinja2 one failed: %s' % to_text(e))
error = e
if not HAS_UNIQUE or error: if not HAS_UNIQUE or error: