fix: skip empty optional ref-params in resolveRefSvcParamValues, bump 5.0.68
This commit is contained in:
@@ -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-параметры пропускаются без ошибки. Универсально для всех сервисов.
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
@@ -17,7 +17,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
version string = "5.0.67"
|
version string = "5.0.68"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user