2.3 KiB
2.3 KiB
Sonnet 4.6 — Round 3: missing required params in CREATE
Дата: 2026-07-29 Версия: v1.1.18
Проблема
PostgreSQL create падает с ошибкой Nubes: «Не передан параметр: serviceInstanceUid». Redis работает, Болванка работает, PG — нет.
Что нашли
Terraform-провайдер делает дополнительный шаг после отправки пользовательских параметров: отправляет ВСЕ required-параметры с их defaultValue, даже если юзер их не заполнял.
Наш код (api_test.py /api/test, CREATE-ветка, примерно строка 230):
for pid, pval in params.items():
client.post("/instanceOperationCfsParams",
{"instanceOperationUid": op_uid, "svcOperationCfsParamId": int(pid), "paramValue": str(pval)})
Шлёт ТОЛЬКО то, что пользователь заполнил в форме.
PG имеет 8 map-fixed параметров, все required:
- startupConfiguration (id=789)
- clusterConfiguration (id=788)
- accessConfiguration (id=790)
- postgresConfiguration (id=791)
- postgresConf (id=792) — array-map-fixed
- backupConfiguration (id=793)
- autoscaleConfiguration (id=794)
- mtlsConfiguration (id=1094)
Если пользователь заполнил только первые 3 — остальные 5 НЕ отправляются → Nubes ругается.
Вопросы
- Как лучше реализовать досылку required-параметров с defaultValue?
- Вариант А: до отправки params сделать GET /instanceOperations/default/{svcOpId}, взять все required с их defaultValue, смержить с пользовательскими
- Вариант Б: после отправки пользовательских params, дослать оставшиеся required с defaultValue
- Terraform делает GET /instanceOperations/{opUid}?fields=cfsParams ПОСЛЕ создания операции. Нужно ли нам тоже?
- Не сломает ли это существующие сервисы (Redis, Болванка) где параметров мало и все заполняются?