From 2034eac620d87be298788af5b49f2004313a607d Mon Sep 17 00:00:00 2001 From: Philip Douglass Date: Thu, 1 Dec 2022 15:22:41 -0500 Subject: [PATCH] Add function to walk the extra_vars and render the results --- awx/main/models/credential/__init__.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/awx/main/models/credential/__init__.py b/awx/main/models/credential/__init__.py index cee657da01..72a49b7d1c 100644 --- a/awx/main/models/credential/__init__.py +++ b/awx/main/models/credential/__init__.py @@ -528,9 +528,13 @@ class CredentialType(CommonModelNameNotUnique): if 'INVENTORY_UPDATE_ID' not in env: # awx-manage inventory_update does not support extra_vars via -e - extra_vars = {} - for var_name, tmpl in self.injectors.get('extra_vars', {}).items(): - extra_vars[var_name] = sandbox_env.from_string(tmpl).render(**namespace) + def build_extra_vars(node): + if isinstance(node, dict): + return {k: build_extra_vars(v) for k, v in node.items()} + elif isinstance(node, list): + return [build_extra_vars(x) for x in node] + else: + return sandbox_env.from_string(node).render(**namespace) def build_extra_vars_file(vars, private_dir): handle, path = tempfile.mkstemp(dir=os.path.join(private_dir, 'env')) @@ -540,6 +544,7 @@ class CredentialType(CommonModelNameNotUnique): os.chmod(path, stat.S_IRUSR) return path + extra_vars = build_extra_vars(self.injectors.get('extra_vars', {})) if extra_vars: path = build_extra_vars_file(extra_vars, private_data_dir) container_path = to_container_path(path, private_data_dir)