fix: skip empty optional ref-params in resolveRefSvcParamValues, bump 5.0.68

This commit is contained in:
“Naeel”
2026-07-09 09:20:26 +04:00
parent fbf2db55ab
commit 8b1176f8d8
5 changed files with 14 additions and 3 deletions
@@ -56,3 +56,11 @@ Adopt происходит на **apply**, не на plan. Plan показыва
2. **Писать debug в файл, не в stderr** — в плагинах Terraform stderr не виден. 2. **Писать debug в файл, не в stderr** — в плагинах Terraform stderr не виден.
3. **Не гадать** — сначала дебаг-лог, потом правка. 3. **Не гадать** — сначала дебаг-лог, потом правка.
4. **Выполнять ТОЛЬКО по «делай»** — без разрешения ничего не трогать. 4. **Выполнять ТОЛЬКО по «делай»** — без разрешения ничего не трогать.
## 2026-07-09: фикс resolveRefSvcParamValues — пустые опциональные ref-параметры
### Баг
`resolveRefSvcParamValues()` в `client.go:1169` не проверяет пустые значения. Когда юзер не задаёт опциональный ref-параметр (например `vdcGroupUid`), `FormatString` возвращает `""`, функция пытается резолвить `""` как имя → `findInstanceUidByDisplayNameRefSvc(ctx, 29, "")` → uid="" → ошибка "не найден экземпляр".
### Фикс (v5.0.68)
Добавлена проверка `strings.TrimSpace(value) == ""` перед вызовом `findInstanceUidByDisplayNameRefSvc`. Пустые опциональные ref-параметры пропускаются без ошибки. Универсально для всех сервисов.
+1 -1
View File
@@ -2,7 +2,7 @@ terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "terra.k8c.ru/nubes-test/nubes" source = "terra.k8c.ru/nubes-test/nubes"
version = "5.0.67" version = "5.0.68"
} }
} }
} }
+1 -1
View File
@@ -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.0.67" VERSION="5.0.68"
# 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"
+3
View File
@@ -1167,6 +1167,9 @@ func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams
// но сам всегда возвращает нижний регистр. Регистр пользователя будет // но сам всегда возвращает нижний регистр. Регистр пользователя будет
// восстановлен в state после RefreshResourceState (generated resource). // восстановлен в state после RefreshResourceState (generated resource).
newValue = strings.ToLower(value) newValue = strings.ToLower(value)
} else if strings.TrimSpace(value) == "" {
// Опциональный ref-параметр не задан — оставляем пустым
newValue = ""
} else if !isUUIDLike(value) { } else if !isUUIDLike(value) {
uid, err := c.findInstanceUidByDisplayNameRefSvc(ctx, refSvcId, value) uid, err := c.findInstanceUidByDisplayNameRefSvc(ctx, refSvcId, value)
if err != nil { if err != nil {
+1 -1
View File
@@ -17,7 +17,7 @@ import (
) )
var ( var (
version string = "5.0.67" version string = "5.0.68"
) )
func main() { func main() {