Files
autotest/DOCS/sonnet-review-round3.md

2.3 KiB
Raw Permalink Blame History

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 ругается.

Вопросы

  1. Как лучше реализовать досылку required-параметров с defaultValue?
    • Вариант А: до отправки params сделать GET /instanceOperations/default/{svcOpId}, взять все required с их defaultValue, смержить с пользовательскими
    • Вариант Б: после отправки пользовательских params, дослать оставшиеся required с defaultValue
  2. Terraform делает GET /instanceOperations/{opUid}?fields=cfsParams ПОСЛЕ создания операции. Нужно ли нам тоже?
  3. Не сломает ли это существующие сервисы (Redis, Болванка) где параметров мало и все заполняются?