From 5e5cfbf736a55d931315078bf635f0e2b3ea1a3f Mon Sep 17 00:00:00 2001 From: Simon Roberts Date: Wed, 8 Apr 2026 16:32:24 +1000 Subject: [PATCH] Add support for bucket custom_placement_config to project-factory (#3839) * Add support for bucket custom_placement_config to project-factory * Copy modules/project-factory/schemas/project.schema.json to fast stages * Add custom_placement_config (only) to schema markdown * Update module project.schema.md --- fast/stages/0-org-setup/schemas/project.schema.json | 6 ++++++ fast/stages/0-org-setup/schemas/project.schema.md | 2 ++ fast/stages/2-networking/schemas/project.schema.json | 6 ++++++ fast/stages/2-networking/schemas/project.schema.md | 2 ++ fast/stages/2-project-factory/schemas/project.schema.json | 6 ++++++ fast/stages/2-project-factory/schemas/project.schema.md | 2 ++ fast/stages/2-security/schemas/project.schema.json | 6 ++++++ fast/stages/2-security/schemas/project.schema.md | 2 ++ modules/project-factory/projects-buckets.tf | 2 ++ modules/project-factory/schemas/project.schema.json | 6 ++++++ modules/project-factory/schemas/project.schema.md | 2 ++ 11 files changed, 42 insertions(+) diff --git a/fast/stages/0-org-setup/schemas/project.schema.json b/fast/stages/0-org-setup/schemas/project.schema.json index df5bc11cc..b1011b25f 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.json +++ b/fast/stages/0-org-setup/schemas/project.schema.json @@ -1237,6 +1237,12 @@ }, "tag_bindings": { "$ref": "#/$defs/tag_bindings" + }, + "custom_placement_config": { + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/fast/stages/0-org-setup/schemas/project.schema.md b/fast/stages/0-org-setup/schemas/project.schema.md index 6ac748ba0..da7303641 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.md +++ b/fast/stages/0-org-setup/schemas/project.schema.md @@ -346,6 +346,8 @@ - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* + - **custom_placement_config**: *array* + - items: *string* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* diff --git a/fast/stages/2-networking/schemas/project.schema.json b/fast/stages/2-networking/schemas/project.schema.json index df5bc11cc..b1011b25f 100644 --- a/fast/stages/2-networking/schemas/project.schema.json +++ b/fast/stages/2-networking/schemas/project.schema.json @@ -1237,6 +1237,12 @@ }, "tag_bindings": { "$ref": "#/$defs/tag_bindings" + }, + "custom_placement_config": { + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/fast/stages/2-networking/schemas/project.schema.md b/fast/stages/2-networking/schemas/project.schema.md index 6ac748ba0..da7303641 100644 --- a/fast/stages/2-networking/schemas/project.schema.md +++ b/fast/stages/2-networking/schemas/project.schema.md @@ -346,6 +346,8 @@ - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* + - **custom_placement_config**: *array* + - items: *string* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* diff --git a/fast/stages/2-project-factory/schemas/project.schema.json b/fast/stages/2-project-factory/schemas/project.schema.json index df5bc11cc..b1011b25f 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.json +++ b/fast/stages/2-project-factory/schemas/project.schema.json @@ -1237,6 +1237,12 @@ }, "tag_bindings": { "$ref": "#/$defs/tag_bindings" + }, + "custom_placement_config": { + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/fast/stages/2-project-factory/schemas/project.schema.md b/fast/stages/2-project-factory/schemas/project.schema.md index 6ac748ba0..da7303641 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.md +++ b/fast/stages/2-project-factory/schemas/project.schema.md @@ -346,6 +346,8 @@ - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* + - **custom_placement_config**: *array* + - items: *string* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* diff --git a/fast/stages/2-security/schemas/project.schema.json b/fast/stages/2-security/schemas/project.schema.json index df5bc11cc..b1011b25f 100644 --- a/fast/stages/2-security/schemas/project.schema.json +++ b/fast/stages/2-security/schemas/project.schema.json @@ -1237,6 +1237,12 @@ }, "tag_bindings": { "$ref": "#/$defs/tag_bindings" + }, + "custom_placement_config": { + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/fast/stages/2-security/schemas/project.schema.md b/fast/stages/2-security/schemas/project.schema.md index 6ac748ba0..da7303641 100644 --- a/fast/stages/2-security/schemas/project.schema.md +++ b/fast/stages/2-security/schemas/project.schema.md @@ -346,6 +346,8 @@ - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* + - **custom_placement_config**: *array* + - items: *string* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* diff --git a/modules/project-factory/projects-buckets.tf b/modules/project-factory/projects-buckets.tf index fb0e1c47d..c510377bb 100644 --- a/modules/project-factory/projects-buckets.tf +++ b/modules/project-factory/projects-buckets.tf @@ -57,6 +57,7 @@ locals { logging_config = lookup(opts, "logging_config", null) enable_object_retention = lookup(opts, "enable_object_retention", null) tag_bindings = lookup(opts, "tag_bindings", {}) + custom_placement_config = lookup(opts, "custom_placement_config", null) } ] ]) @@ -105,4 +106,5 @@ module "buckets" { logging_config = each.value.logging_config enable_object_retention = each.value.enable_object_retention tag_bindings = each.value.tag_bindings + custom_placement_config = each.value.custom_placement_config } diff --git a/modules/project-factory/schemas/project.schema.json b/modules/project-factory/schemas/project.schema.json index df5bc11cc..b1011b25f 100644 --- a/modules/project-factory/schemas/project.schema.json +++ b/modules/project-factory/schemas/project.schema.json @@ -1237,6 +1237,12 @@ }, "tag_bindings": { "$ref": "#/$defs/tag_bindings" + }, + "custom_placement_config": { + "type": "array", + "items": { + "type": "string" + } } } }, diff --git a/modules/project-factory/schemas/project.schema.md b/modules/project-factory/schemas/project.schema.md index 6ac748ba0..da7303641 100644 --- a/modules/project-factory/schemas/project.schema.md +++ b/modules/project-factory/schemas/project.schema.md @@ -346,6 +346,8 @@ - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* + - **custom_placement_config**: *array* + - items: *string* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))*