diff --git a/scripts/build_env/appregdef_render.py b/scripts/build_env/appregdef_render.py index 7f4551c70..fc8452c17 100644 --- a/scripts/build_env/appregdef_render.py +++ b/scripts/build_env/appregdef_render.py @@ -4,6 +4,15 @@ from env_template.process_env_template import process_env_template from render_config_env import EnvGenerator +def copy_app_reg_defs(render_dir, env_dir): + for dir_name in ["AppDefs", "RegDefs"]: + src = Path(render_dir) / dir_name + dst = Path(env_dir) / dir_name + + if src.exists(): + shutil.copytree(src, dst, dirs_exist_ok=True) + + if __name__ == '__main__': template_version = process_env_template() @@ -31,13 +40,6 @@ render_context = EnvGenerator() render_context.process_app_reg_defs(env_name, render_context_vars) - for dir_name in ["AppDefs", "RegDefs"]: - src = Path(render_dir) / dir_name - dst = Path(env_dir) / dir_name - - if dst.exists(): - shutil.rmtree(dst) - if src.exists(): - shutil.move(src, dst) + copy_app_reg_defs(render_dir, env_dir) update_generated_versions(env_dir, BUILD_ENV_TAG, template_version[NamespaceRole.COMMON]) diff --git a/scripts/build_env/tests/app_reg_defs/test_appregdefs.py b/scripts/build_env/tests/app_reg_defs/test_appregdefs.py index e3df35a57..2f086eb11 100644 --- a/scripts/build_env/tests/app_reg_defs/test_appregdefs.py +++ b/scripts/build_env/tests/app_reg_defs/test_appregdefs.py @@ -8,6 +8,7 @@ from render_config_env import EnvGenerator from envgenehelper.test_helpers import TestHelpers from envgenehelper.business_helper import NamespaceRole +from scripts.build_env.appregdef_render import copy_app_reg_defs class TestAppRegDefRendering: @@ -106,3 +107,24 @@ def test_negative_appregdef_rendering(self, test_number, expected_exception): with pytest.raises(expected_exception): render_context.process_app_reg_defs(self.env_name, context_vars) + def test_appregdefs_merge_behavior(self, request): + self._setup_render_dir() + + render_context = EnvGenerator() + context_vars = self._get_render_context("TC-001-001") + + render_context.process_app_reg_defs(self.env_name, context_vars) + + render_dir = Path(context_vars["current_env_dir"]) + env_dir = Path(f"/tmp/environments/{self.cluster_name}/{self.env_name}") + appdefs_dir = Path(f"{env_dir}/AppDefs") + appdefs_dir.mkdir(parents=True, exist_ok=True) + (appdefs_dir / "existing.yml").write_text("keep-me") + + copy_app_reg_defs(render_dir, env_dir) + + assert (appdefs_dir / "application-1.yml").exists() + assert (appdefs_dir / "existing.yml").exists() + + shutil.rmtree(appdefs_dir, ignore_errors=True) + shutil.rmtree(render_dir / "AppDefs", ignore_errors=True) \ No newline at end of file