diff --git a/changelogs/fragments/2126-consul_kv-pass-token.yml b/changelogs/fragments/2126-consul_kv-pass-token.yml index 170d1d5fe4..c8ee258f87 100644 --- a/changelogs/fragments/2126-consul_kv-pass-token.yml +++ b/changelogs/fragments/2126-consul_kv-pass-token.yml @@ -1,5 +1,5 @@ --- bugfixes: - consul_kv lookup - use ``self.get_option`` and - remove the function parse_params all together with its for loop + remove the function parse_params get key form self.terms (https://github.com/ansible-collections/community.general/issues/2124). diff --git a/plugins/lookup/consul_kv.py b/plugins/lookup/consul_kv.py index d7ff42e86e..defb10b6dd 100644 --- a/plugins/lookup/consul_kv.py +++ b/plugins/lookup/consul_kv.py @@ -126,7 +126,6 @@ class LookupModule(LookupBase): # get options self.set_options(direct=kwargs) - key = terms[0].split(' ')[0] scheme = self.get_option('scheme') host = self.get_option('host') port = self.get_option('port') @@ -148,20 +147,22 @@ class LookupModule(LookupBase): values = [] try: - consul_api = consul.Consul(host=host, port=port, scheme=scheme, token=token, dc=datacenter, - verify=validate_certs, cert=client_cert) + for term in terms: + key = term.split(' ')[0] + consul_api = consul.Consul(host=host, port=port, scheme=scheme, token=token, + dc=datacenter,verify=validate_certs, cert=client_cert) - results = consul_api.kv.get(key, - index=index, - recurse=recurse, - ) - if results[1]: - # responds with a single or list of result maps - if isinstance(results[1], list): - for r in results[1]: - values.append(to_text(r['Value'])) - else: - values.append(to_text(results[1]['Value'])) + results = consul_api.kv.get(key, + index=index, + recurse=recurse, + ) + if results[1]: + # responds with a single or list of result maps + if isinstance(results[1], list): + for r in results[1]: + values.append(to_text(r['Value'])) + else: + values.append(to_text(results[1]['Value'])) except Exception as e: raise AnsibleError( "Error locating '%s' in kv store. Error was %s" % (key, e))