diff --git a/Babylon/commands/api/organizations/create.py b/Babylon/commands/api/organizations/create.py index 783b1e959..f176bf5bf 100644 --- a/Babylon/commands/api/organizations/create.py +++ b/Babylon/commands/api/organizations/create.py @@ -34,8 +34,7 @@ def create(state: Any, keycloak_token: str, payload_file: pathlib.Path) -> Comma click.echo(click.style("\n".join(_ret), bold=True, fg="green")) spec = dict() with open(payload_file, 'r') as f: - spec["payload"] = env.fill_template(data=f.read(), state=state) - spec["payload"] = json.dumps(spec["payload"], indent=2, ensure_ascii=True) + spec["payload"] = env.fill_template_jsondump(data=f.read(), state=state) organizations_service = OrganizationService(state=state['services'], keycloak_token=keycloak_token, spec=spec) logger.info("[api] Creating organization") response = organizations_service.create() diff --git a/Babylon/commands/api/organizations/update.py b/Babylon/commands/api/organizations/update.py index b53ed7bc5..83adba288 100644 --- a/Babylon/commands/api/organizations/update.py +++ b/Babylon/commands/api/organizations/update.py @@ -35,7 +35,6 @@ def update(state: Any, keycloak_token: str, organization_id: str, payload_file: spec = dict() with open(payload_file, 'r') as f: spec["payload"] = env.fill_template(data=f.read(), state=state) - spec["payload"] = json.dumps(spec["payload"], indent=2, ensure_ascii=True) organizations_service = OrganizationService(state=state['services'], keycloak_token=keycloak_token, spec=spec) logger.info(f"[api] Updating organization {state['services']['api']['organization_id']}") response = organizations_service.update() diff --git a/Babylon/utils/environment.py b/Babylon/utils/environment.py index 4207b5475..0e3c3c810 100644 --- a/Babylon/utils/environment.py +++ b/Babylon/utils/environment.py @@ -123,6 +123,19 @@ def get_ns_from_text(self, content: str): self.set_blob_client() return platform_url + def fill_template_jsondump(self, data: str, state: dict = None, ext_args: dict = None): + result = data.replace("{{", "${").replace("}}", "}") + t = Template(text=result, strict_undefined=True) + vars = self.get_variables() + flattenstate = dict() + if ext_args: + vars.update(ext_args) + if state: + flattenstate = flatten(state.get("services", {}), separator=".") + payload = t.render(**vars, services=flattenstate) + payload_json = yaml_to_json(payload) + return payload_json + def fill_template(self, data: str, state: dict = None, ext_args: dict = None): result = data.replace("{{", "${").replace("}}", "}") t = Template(text=result, strict_undefined=True)