diff --git a/plugins/lookup/kheops.py b/plugins/lookup/kheops.py index 3909d7a..350d406 100644 --- a/plugins/lookup/kheops.py +++ b/plugins/lookup/kheops.py @@ -87,6 +87,8 @@ from pprint import pprint # Entry point for Ansible starts here with the LookupModule class class LookupModule(LookupBase): + + def run(self, terms, variables=None, scope=None, **kwargs): self.set_options(direct=kwargs) @@ -98,9 +100,8 @@ class LookupModule(LookupBase): # Prepare Kheops instance - self.config_file = self.get_option('config') configs = [ - self.config_file, + self.get_option('config'), kwargs, #{ # "instance_log_level": 'DEBUG', @@ -115,36 +116,63 @@ class LookupModule(LookupBase): else: templar = self._templar - # Create scope - if process_scope == 'vars': - scope = kheops.get_scope_from_host_inventory(variables, scope=None) - elif process_scope == 'jinja': - scope = kheops.get_scope_from_jinja(variables, self._templar, scope=None) - # Transform dict to list for lookup/queries ret = [] - for term in terms: - result = kheops.super_lookup( - keys=term, - scope=scope, - _variables=variables, - _templar=templar, - ) + #for term in terms: - # Render data with Templar - #if process_results == 'jinja': - # with templar.set_temporary_context(available_variables=variables): - # result = templar.template(result, - # preserve_trailing_newlines=True, - # convert_data=False, escape_backslashes=False) + results = kheops.super_lookup_seq( + keys=terms, + #scope=scope, + scope_vars=variables, + _templar=templar, + jinja2_native=jinja2_native, + _process_results='jinja', + ) - # if USE_JINJA2_NATIVE and not jinja2_native: - # # jinja2_native is true globally but off for the lookup, we need this text - # # not to be processed by literal_eval anywhere in Ansible - # result = NativeJinjaText(result) + final = [] + for result in results: + only_key = list(result.keys()) + if len(only_key) > 0: + final.append(result[only_key[0]]) - # Return result - subkey = list(result.keys())[0] - ret.append(result[subkey]) + return final + + try: + found_term = list(result[0].keys()) + if len(found_term) > 0: + return result[0][found_term[0]] + except Exception as err: + print (err) + return result[0] + + + return None + + # Merge results if any + #from pprint import pprint + #pprint (result) + final = None + if len(result) > 0: + final_keys = list(result[0].keys()) + #print ("Final key", final_keys) + if len(final_keys) > 0: + #print ("yeahhhh", final_keys[0], result[0][final_keys[0]]) + final = result[0][final_keys[0]] + if len(final_keys) > 1: + print ("Warning, other results are ignored !!!") + + return final + + + #final = result[0].keys()[0] if len(result) > 0 else None + + #final = {} + #for res in result: + # pprint (res) + # final.update(res) + + #final = result + + ret.append(final) return ret diff --git a/plugins/plugin_utils/common.py b/plugins/plugin_utils/common.py index 857d44f..d2763df 100644 --- a/plugins/plugin_utils/common.py +++ b/plugins/plugin_utils/common.py @@ -237,7 +237,7 @@ class Key(): key = None remap = key - namespace = self.default_namespace + namespace = ret['namespace'] # Extract config from string parts = key_def.split(KEY_NS_SEP, 3)