diff --git a/doc/architecture/Domain.md b/doc/architecture/Domain.md index 33d8f95..e0971e2 100644 --- a/doc/architecture/Domain.md +++ b/doc/architecture/Domain.md @@ -39,6 +39,7 @@ classDiagram class TerraformDomain { tf_additional_vars + tf_additional_resources_from_package tf_output_json_name tf_use_workspace tf_use_package_common_files diff --git a/src/main/python/ddadevops/domain/terraform.py b/src/main/python/ddadevops/domain/terraform.py index e0a6e38..f5cecf4 100644 --- a/src/main/python/ddadevops/domain/terraform.py +++ b/src/main/python/ddadevops/domain/terraform.py @@ -15,6 +15,9 @@ class TerraformDomain(Validateable): self.tf_additional_vars = inp.get("tf_additional_vars") self.tf_output_json_name = inp.get("tf_output_json_name") self.tf_build_commons_path = inp.get("tf_build_commons_path") + self.tf_additional_resources_from_package = inp.get( + "tf_additional_resources_from_package", [] + ) self.tf_additional_tfvar_files = inp.get("tf_additional_tfvar_files", []) self.tf_use_workspace = inp.get("tf_use_workspace", True) self.tf_debug_print_terraform_command = inp.get( @@ -33,6 +36,8 @@ class TerraformDomain(Validateable): result += self.__validate_is_not_empty__("module") result += self.__validate_is_not_empty__("stage") result += self.__validate_is_not_empty__("tf_build_commons_dir_name") + result += self.__validate_is_not_none__("tf_additional_resources_from_package") + result += self.__validate_is_not_none__("tf_additional_tfvar_files") return result def output_json_name(self) -> str: @@ -50,3 +55,8 @@ class TerraformDomain(Validateable): if self.tf_additional_vars: ret.update(self.tf_additional_vars) return ret + + def resources_from_package(self) -> List[str]: + result = ["version.tf", "terraform_build_vars.tf"] + result += self.tf_additional_resources_from_package + return result diff --git a/src/test/python/domain/test_terraform.py b/src/test/python/domain/test_terraform.py index 720e9ff..86d8907 100644 --- a/src/test/python/domain/test_terraform.py +++ b/src/test/python/domain/test_terraform.py @@ -36,3 +36,12 @@ def test_should_calculate_project_vars(): config = devops_config({}) sut = TerraformDomain(config) assert {'module': 'module', 'stage': 'test'} == sut.project_vars() + +def test_should_calculate_resources_from_package(): + config = devops_config({}) + sut = TerraformDomain(config) + assert ["version.tf", "terraform_build_vars.tf"] == sut.resources_from_package() + + config = devops_config({"tf_additional_resources_from_package": ["my.file"]}) + sut = TerraformDomain(config) + assert ["version.tf", "terraform_build_vars.tf", "my.file"] == sut.resources_from_package() \ No newline at end of file