From 84a258e24703b20b7b8629c30670b71a77a84435 Mon Sep 17 00:00:00 2001 From: kovagoadam Date: Fri, 17 Oct 2025 12:30:20 +0200 Subject: [PATCH] Add retention support for project-factory buckets (#3417) * Added retention support for project-factory buckets * Cleanup * Added retention_policy to project.schema.md in PF stage --------- Co-authored-by: Ludovico Magnocavallo --- .../0-org-setup/schemas/project.schema.json | 15 +++++++++++++++ fast/stages/0-org-setup/schemas/project.schema.md | 5 +++++ .../2-project-factory/schemas/project.schema.md | 5 +++++ modules/project-factory/projects-buckets.tf | 4 ++++ .../project-factory/schemas/project.schema.json | 15 +++++++++++++++ modules/project-factory/schemas/project.schema.md | 5 +++++ 6 files changed, 49 insertions(+) diff --git a/fast/stages/0-org-setup/schemas/project.schema.json b/fast/stages/0-org-setup/schemas/project.schema.json index 4f06e12e7..bf454c8f8 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.json +++ b/fast/stages/0-org-setup/schemas/project.schema.json @@ -617,6 +617,21 @@ }, "versioning": { "type": "boolean" + }, + "retention_policy": { + "type": "object", + "additionalProperties": false, + "properties": { + "retention_period": { + "type": "number" + }, + "is_locked": { + "type": "boolean" + } + } + }, + "enable_object_retention": { + "type": "boolean" } } }, diff --git a/fast/stages/0-org-setup/schemas/project.schema.md b/fast/stages/0-org-setup/schemas/project.schema.md index 8f88ebd99..6915ddb0b 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.md +++ b/fast/stages/0-org-setup/schemas/project.schema.md @@ -175,6 +175,11 @@ - **storage_class**: *string* - **uniform_bucket_level_access**: *boolean* - **versioning**: *boolean* + - **retention_policy**: *object* +
*additional properties: false* + - **retention_period**: *number* + - **is_locked**: *boolean* + - **enable_object_retention**: *boolean* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* diff --git a/fast/stages/2-project-factory/schemas/project.schema.md b/fast/stages/2-project-factory/schemas/project.schema.md index 900523134..40ce965d1 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.md +++ b/fast/stages/2-project-factory/schemas/project.schema.md @@ -172,6 +172,11 @@ - **storage_class**: *string* - **uniform_bucket_level_access**: *boolean* - **versioning**: *boolean* + - **retention_policy**: *object* +
*additional properties: false* + - **retention_period**: *number* + - **is_locked**: *boolean* + - **enable_object_retention**: *boolean* - **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 91d6d3ac6..b2ad2d8b0 100644 --- a/modules/project-factory/projects-buckets.tf +++ b/modules/project-factory/projects-buckets.tf @@ -50,6 +50,8 @@ locals { versioning = lookup( opts, "versioning", false ) + retention_policy = lookup(opts, "retention_policy", null) + enable_object_retention = lookup(opts, "enable_object_retention", null) } ] ]) @@ -89,4 +91,6 @@ module "buckets" { storage_class = each.value.storage_class uniform_bucket_level_access = each.value.uniform_bucket_level_access versioning = each.value.versioning + retention_policy = each.value.retention_policy + enable_object_retention = each.value.enable_object_retention } diff --git a/modules/project-factory/schemas/project.schema.json b/modules/project-factory/schemas/project.schema.json index 1a326aa52..baf129a1e 100644 --- a/modules/project-factory/schemas/project.schema.json +++ b/modules/project-factory/schemas/project.schema.json @@ -620,6 +620,21 @@ }, "versioning": { "type": "boolean" + }, + "retention_policy": { + "type": "object", + "additionalProperties": false, + "properties": { + "retention_period": { + "type": "number" + }, + "is_locked": { + "type": "boolean" + } + } + }, + "enable_object_retention": { + "type": "boolean" } } }, diff --git a/modules/project-factory/schemas/project.schema.md b/modules/project-factory/schemas/project.schema.md index baf3df987..c013c7d02 100644 --- a/modules/project-factory/schemas/project.schema.md +++ b/modules/project-factory/schemas/project.schema.md @@ -178,6 +178,11 @@ - **storage_class**: *string* - **uniform_bucket_level_access**: *boolean* - **versioning**: *boolean* + - **retention_policy**: *object* +
*additional properties: false* + - **retention_period**: *number* + - **is_locked**: *boolean* + - **enable_object_retention**: *boolean* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))*