def run(self, terms, variables, **kwargs): if isinstance(terms, list): keys = [ "data", "test", "value", "key", "fail_on_missing", "wantlist", ] terms = dict(zip(keys, terms)) terms.update(kwargs) aav = AnsibleArgSpecValidator( data=terms, schema=DOCUMENTATION, name="index_of" ) valid, errors, updated_data = aav.validate() if not valid: raise AnsibleLookupError(errors) updated_data["wantlist"] = True updated_data["tests"] = self._templar.environment.tests res = index_of(**updated_data) return res
def _index_of(*args, **kwargs): """Find the indicies of items in a list matching some criteria.""" keys = [ "environment", "data", "test", "value", "key", "fail_on_missing", "wantlist", ] data = dict(zip(keys, args)) data.update(kwargs) environment = data.pop("environment") aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="index_of") valid, errors, updated_data = aav.validate() if not valid: raise AnsibleFilterError(errors) updated_data["tests"] = environment.tests return index_of(**updated_data)