Wip: To keep or loose ? TOFIX

This commit is contained in:
Robin Pierre Cordier 2022-06-20 00:06:54 -04:00
parent e7c6330020
commit 02b621b79a
2 changed files with 57 additions and 29 deletions

View File

@ -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,
#for term in terms:
results = kheops.super_lookup_seq(
keys=terms,
#scope=scope,
scope_vars=variables,
_templar=templar,
jinja2_native=jinja2_native,
_process_results='jinja',
)
# 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)
final = []
for result in results:
only_key = list(result.keys())
if len(only_key) > 0:
final.append(result[only_key[0]])
# 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)
return final
# Return result
subkey = list(result.keys())[0]
ret.append(result[subkey])
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

View File

@ -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)