From 065177c3f7f73e5d656f51cb6fe94082d9ecf63c Mon Sep 17 00:00:00 2001 From: Estelle Poulin Date: Tue, 7 Jul 2020 15:47:20 -0400 Subject: [PATCH] Teach with_subelements how to apply inner filters --- lib/ansible/plugins/lookup/subelements.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/ansible/plugins/lookup/subelements.py b/lib/ansible/plugins/lookup/subelements.py index 9212d820dde8ae..39f3e39ce52294 100644 --- a/lib/ansible/plugins/lookup/subelements.py +++ b/lib/ansible/plugins/lookup/subelements.py @@ -89,7 +89,7 @@ from ansible.utils.listify import listify_lookup_plugin_terms -FLAGS = ('skip_missing',) +FLAGS = ('skip_missing','filter') class LookupModule(LookupBase): @@ -138,6 +138,7 @@ def _raise_terms_error(msg=""): continue skip_missing = boolean(flags.get('skip_missing', False), strict=False) + filters = flags.get('filter', False) subvalue = item0 lastsubkey = False sublist = [] @@ -162,6 +163,12 @@ def _raise_terms_error(msg=""): raise AnsibleError("the key %s should point to a list, got '%s'" % (subkey, subvalue[subkey])) else: sublist = subvalue.pop(subkey, []) + + if filters: + if isinstance(filters, list): + filters = ' | '.join(filters) + sublist = self._templar.template("{{ %s | %s }}" % (sublist, filters)) + for item1 in sublist: ret.append((item0, item1))