From 35792091bd61fe0590d61acbf6fc986f07daef13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 18 Jul 2026 23:12:51 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20nested=20attrs=20with=20default=20?= =?UTF-8?q?=E2=86=92=20Optional=20(no=20Computed),=20prevents=20unknown=20?= =?UTF-8?q?values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEST_STAND/POSTGRES/main.tf | 2 +- TOOLS/ARCHITECTURE.md | 4 ++++ TOOLS/config/dev/profile.env | 2 +- TOOLS/config/prod/profile.env | 2 +- TOOLS/config/test/profile.env | 2 +- TOOLS/resource-generator/internal/helpers/helpers.go | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/TEST_STAND/POSTGRES/main.tf b/TEST_STAND/POSTGRES/main.tf index 58573f1..02fd629 100644 --- a/TEST_STAND/POSTGRES/main.tf +++ b/TEST_STAND/POSTGRES/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { nubes = { source = "registry.kube5s.ru/nubes-test/nubes" - version = "5.1.4" + version = "5.1.5" } } } diff --git a/TOOLS/ARCHITECTURE.md b/TOOLS/ARCHITECTURE.md index 3622484..2354fb9 100644 --- a/TOOLS/ARCHITECTURE.md +++ b/TOOLS/ARCHITECTURE.md @@ -130,6 +130,10 @@ Each operation has a kind: Если состояние создано до добавления нового `map-fixed`-параметра — он будет nil, и код не должен падать с nil pointer dereference. Вместо этого параметр пропускается, и zero-value fallback подставит `{}`. +- **Nested-атрибуты с default — Optional без Computed** (`NestedSchemaBlock` в `helpers.go`): + `map-fixed`-параметры с default генерируются как `Optional: true` (без `Computed`), + потому что провайдер не вычисляет nested-значения из API. `Computed` приводил бы к + `unknown`-значению, которое нельзя декодировать в конкретный тип `*Struct`. - **Merge SubParams union** (`params.go`): при совпадении `Code` параметра в разных операциях (create/modify) с разными наборами sub-params, `Merge()` объединяет их union'ом, а не отбрасывает второй. Это гарантирует что структура содержит все поля. diff --git a/TOOLS/config/dev/profile.env b/TOOLS/config/dev/profile.env index a7d165c..5f3b7a0 100644 --- a/TOOLS/config/dev/profile.env +++ b/TOOLS/config/dev/profile.env @@ -4,7 +4,7 @@ TOKEN_FILE="secrets/dev.token" # Release versions # Version -VERSION="3.1.3" +VERSION="3.1.4" # Registry/S3 settings REGISTRY_HOST="registry.kube5s.ru" diff --git a/TOOLS/config/prod/profile.env b/TOOLS/config/prod/profile.env index caab267..ff6008e 100644 --- a/TOOLS/config/prod/profile.env +++ b/TOOLS/config/prod/profile.env @@ -4,7 +4,7 @@ TOKEN_FILE="secrets/prod.token" # Release versions # Version -VERSION="2.1.2" +VERSION="2.1.3" # Registry/S3 settings REGISTRY_HOST="registry.kube5s.ru" diff --git a/TOOLS/config/test/profile.env b/TOOLS/config/test/profile.env index 270ed7b..f96b5b5 100644 --- a/TOOLS/config/test/profile.env +++ b/TOOLS/config/test/profile.env @@ -3,7 +3,7 @@ NUBES_API_ENDPOINT="https://lk-api-gateway-test.ngcloud.ru/api/v1/svc" TOKEN_FILE="secrets/test.token" # Version -VERSION="5.1.5" +VERSION="5.1.6" # Docs generation — ONLY from docs_gen// (never from docs/) DOCS_GEN_DIR="provider/docs_gen/test" diff --git a/TOOLS/resource-generator/internal/helpers/helpers.go b/TOOLS/resource-generator/internal/helpers/helpers.go index de7b58b..ea324df 100644 --- a/TOOLS/resource-generator/internal/helpers/helpers.go +++ b/TOOLS/resource-generator/internal/helpers/helpers.go @@ -239,7 +239,7 @@ func NestedSchemaBlock(p types.Param) string { default: req := "Required: true" if p.Default != "" { - req = "Optional: true, Computed: true" + req = "Optional: true" } return fmt.Sprintf("schema.%sAttribute{%s,\n\t\t\tAttributes: map[string]schema.Attribute{", t, req) }