From 2295a36eb2ac3cf2296bad119aaaf5dd0ef4df6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 29 Jul 2026 11:10:01 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20Sonnet=20round=203=20=E2=80=94=20missin?= =?UTF-8?q?g=20required=20params=20in=20CREATE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOCS/sonnet-review-round3.md | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 DOCS/sonnet-review-round3.md diff --git a/DOCS/sonnet-review-round3.md b/DOCS/sonnet-review-round3.md new file mode 100644 index 0000000..e871559 --- /dev/null +++ b/DOCS/sonnet-review-round3.md @@ -0,0 +1,39 @@ +# 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): +```python +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 ругается. + +## Вопросы +1. Как лучше реализовать досылку required-параметров с defaultValue? + - Вариант А: до отправки params сделать GET /instanceOperations/default/{svcOpId}, взять все required с их defaultValue, смержить с пользовательскими + - Вариант Б: после отправки пользовательских params, дослать оставшиеся required с defaultValue +2. Terraform делает GET /instanceOperations/{opUid}?fields=cfsParams ПОСЛЕ создания операции. Нужно ли нам тоже? +3. Не сломает ли это существующие сервисы (Redis, Болванка) где параметров мало и все заполняются?