fix: nested attrs with default → Optional (no Computed), prevents unknown values
This commit is contained in:
@@ -2,7 +2,7 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
nubes = {
|
nubes = {
|
||||||
source = "registry.kube5s.ru/nubes-test/nubes"
|
source = "registry.kube5s.ru/nubes-test/nubes"
|
||||||
version = "5.1.4"
|
version = "5.1.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ Each operation has a kind:
|
|||||||
Если состояние создано до добавления нового `map-fixed`-параметра — он будет nil,
|
Если состояние создано до добавления нового `map-fixed`-параметра — он будет nil,
|
||||||
и код не должен падать с nil pointer dereference. Вместо этого параметр пропускается,
|
и код не должен падать с nil pointer dereference. Вместо этого параметр пропускается,
|
||||||
и zero-value fallback подставит `{}`.
|
и 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` параметра в разных
|
- **Merge SubParams union** (`params.go`): при совпадении `Code` параметра в разных
|
||||||
операциях (create/modify) с разными наборами sub-params, `Merge()` объединяет их
|
операциях (create/modify) с разными наборами sub-params, `Merge()` объединяет их
|
||||||
union'ом, а не отбрасывает второй. Это гарантирует что структура содержит все поля.
|
union'ом, а не отбрасывает второй. Это гарантирует что структура содержит все поля.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ TOKEN_FILE="secrets/dev.token"
|
|||||||
|
|
||||||
# Release versions
|
# Release versions
|
||||||
# Version
|
# Version
|
||||||
VERSION="3.1.3"
|
VERSION="3.1.4"
|
||||||
|
|
||||||
# Registry/S3 settings
|
# Registry/S3 settings
|
||||||
REGISTRY_HOST="registry.kube5s.ru"
|
REGISTRY_HOST="registry.kube5s.ru"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ TOKEN_FILE="secrets/prod.token"
|
|||||||
|
|
||||||
# Release versions
|
# Release versions
|
||||||
# Version
|
# Version
|
||||||
VERSION="2.1.2"
|
VERSION="2.1.3"
|
||||||
|
|
||||||
# Registry/S3 settings
|
# Registry/S3 settings
|
||||||
REGISTRY_HOST="registry.kube5s.ru"
|
REGISTRY_HOST="registry.kube5s.ru"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ NUBES_API_ENDPOINT="https://lk-api-gateway-test.ngcloud.ru/api/v1/svc"
|
|||||||
TOKEN_FILE="secrets/test.token"
|
TOKEN_FILE="secrets/test.token"
|
||||||
|
|
||||||
# Version
|
# Version
|
||||||
VERSION="5.1.5"
|
VERSION="5.1.6"
|
||||||
|
|
||||||
# Docs generation — ONLY from docs_gen/<stand>/ (never from docs/)
|
# Docs generation — ONLY from docs_gen/<stand>/ (never from docs/)
|
||||||
DOCS_GEN_DIR="provider/docs_gen/test"
|
DOCS_GEN_DIR="provider/docs_gen/test"
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ func NestedSchemaBlock(p types.Param) string {
|
|||||||
default:
|
default:
|
||||||
req := "Required: true"
|
req := "Required: true"
|
||||||
if p.Default != "" {
|
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)
|
return fmt.Sprintf("schema.%sAttribute{%s,\n\t\t\tAttributes: map[string]schema.Attribute{", t, req)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user