From 06c6df5fec0ab2c8bc275145ce8102862f1f61bc Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Fri, 30 Jan 2026 16:52:50 +0100 Subject: [PATCH] allow null prefixes in project factory when override is not set (#3691) --- modules/project-factory/README.md | 9 ++++++--- modules/project-factory/projects-defaults.tf | 17 ++++++++++------- .../project_factory/examples/test-1.yaml | 5 +++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/modules/project-factory/README.md b/modules/project-factory/README.md index 1558925d8..0875c08bc 100644 --- a/modules/project-factory/README.md +++ b/modules/project-factory/README.md @@ -876,6 +876,7 @@ module "project-factory" { locations = { storage = "eu" } + prefix = "foo" } data_merges = { labels = { @@ -885,9 +886,6 @@ module "project-factory" { "compute.googleapis.com" ] } - data_overrides = { - prefix = "foo" - } factories_config = { projects = "data/projects" } @@ -897,6 +895,7 @@ module "project-factory" { ```yaml parent: folders/1234567890 +# prefix from defaults (foo) services: - iam.googleapis.com - contactcenteraiplatform.googleapis.com @@ -907,6 +906,8 @@ services: ```yaml parent: folders/1234567890 descriptive_name: "Test Project 1" +# null prefix +prefix: null services: - iam.googleapis.com - contactcenteraiplatform.googleapis.com @@ -915,6 +916,8 @@ services: ```yaml parent: folders/1234567890 +# explicit prefix +prefix: bar services: - iam.googleapis.com - storage.googleapis.com diff --git a/modules/project-factory/projects-defaults.tf b/modules/project-factory/projects-defaults.tf index a29ee9b32..64a5ff7cd 100644 --- a/modules/project-factory/projects-defaults.tf +++ b/modules/project-factory/projects-defaults.tf @@ -80,13 +80,16 @@ locals { local.data_defaults.defaults.parent ), null ) - prefix = try( # type: string, nullable - coalesce( - local.data_defaults.overrides.prefix, - try(v.prefix, null), - local.data_defaults.defaults.prefix - ), null - ) + prefix = try( + ( + local.data_defaults.overrides.prefix != null + ? local.data_defaults.overrides.prefix + : ( + try(v.prefix, "-") == "-" + ? local.data_defaults.defaults.prefix + : v.prefix + ) + ), null) project_reuse = ( # type: object({...}) try(v.project_reuse, null) != null ? merge( diff --git a/tests/modules/project_factory/examples/test-1.yaml b/tests/modules/project_factory/examples/test-1.yaml index 4e8ab66bc..512cddac6 100644 --- a/tests/modules/project_factory/examples/test-1.yaml +++ b/tests/modules/project_factory/examples/test-1.yaml @@ -13,5 +13,10 @@ # limitations under the License. values: + module.project-factory.module.projects["test-0"].google_project.project[0]: + project_id: foo-test-0 module.project-factory.module.projects["test-1"].google_project.project[0]: name: Test Project 1 + project_id: test-1 + module.project-factory.module.projects["test-2"].google_project.project[0]: + project_id: bar-test-2