From ce19eff9dee3837773fa8302a14199b73ee3db63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 29 Jul 2026 12:49:10 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20Sonnet=20=E2=80=94=20full=20Terraform?= =?UTF-8?q?=20diff=20analysis=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOCS/sonnet-terraform-diff.md | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 DOCS/sonnet-terraform-diff.md diff --git a/DOCS/sonnet-terraform-diff.md b/DOCS/sonnet-terraform-diff.md new file mode 100644 index 0000000..ee9484f --- /dev/null +++ b/DOCS/sonnet-terraform-diff.md @@ -0,0 +1,68 @@ +# Sonnet 4.6 — СВЕРКА С ТЕРРАФОРМОМ: почему autotest не работает а Terraform работает + +## СУТЬ ПРОБЛЕМЫ + +Terraform-провайдер создаёт PostgreSQL БЕЗ ошибок. Autotest (наш код) — падает с «Не передан параметр: serviceInstanceUid». Мы скопировали «похожую» логику, но где-то расхождение. Нужно найти ВСЕ расхождения, пошагово. + +## ЭТАЛОН — Terraform CREATE flow + +Файл: /home/naeel/nubes/autotest/DOCS/terraform-operations-full-logic.md (читай ВЕСЬ, особенно строки 30-90) + +``` +Шаг 1: POST /instances {serviceId, displayName, descr} +Шаг 2: POST /instanceOperations {instanceUid, operation:"create"} +Шаг 3: GET /instanceOperations/{opUid}?fields=cfsParams ← получить ВСЕ params с defaults +Шаг 4: resolveRefSvcParamValues ← резолв refSvcId параметров +Шаг 5: POST /instanceOperationCfsParams ← пользовательские params (×N) +Шаг 6: POST /instanceOperationCfsParams ← required params с defaultValue, НЕ переданные в шаге 5 (×M) +Шаг 7: GET /instanceOperations/{opUid}/validate-cfs +Шаг 8: POST /instanceOperations/{opUid}/run {} +Шаг 9: поллинг dtFinish +``` + +## НАШ КОД — CREATE flow + +Файл: /home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py, функция api_test(), строки 170-245 + +Прочитай ВЕСЬ файл, особенно: +- Строки 170-195 — создание instance + operation +- Строки 207-245 — отправка params + досылка required+default + validate + run + +## HAR-файл — реальные API-вызовы Terraform + +Файл: /home/naeel/nubes/autotest/development/dummycreate.har +Это HAR с реальными запросами Terraform при создании Болванки (сервис 1). +Найди ВСЕ POST /instanceOperationCfsParams — посмотри КАКИЕ именно params отправляются, в КАКОМ порядке, с КАКИМИ svcOperationCfsParamId. + +## PostgreSQL YAML — структура параметров + +Файл: /home/naeel/nubes/autotest/STANDS/dev/resources_yaml/90_postgres.yaml +Читай строки с operations.create.params — там 8 map-fixed параметров с sub_params. + +Также проверь через API что реально возвращается: +``` +curl -H "Authorization: Bearer " /instanceOperations/default/19 +``` +(create opId для PostgreSQL = 19) + +## ЧТО НУЖНО НАЙТИ + +1. **ШАГ 3 Terraform vs наш код**: Terraform делает GET /instanceOperations/{opUid}?fields=cfsParams ПОСЛЕ создания операции чтобы получить параметры С РЕЗОЛВОМ refSvcId. Мы берём из /instanceOperations/default/{svc_op_id} (шаблон). В чём разница? Может ли шаблон не содержать нужных значений которые появляются только в реальной операции? + +2. **ШАГ 4 Terraform vs наш код**: resolveRefSvcParamValues — что это делает? Как Terraform резолвит refSvcId (например backupConfiguration.s3Uid ссылается на serviceId=12)? Есть ли у нас такой резолв? + +3. **ШАГ 6 Terraform vs наш код**: Terraform досылает required+default. Мы тоже (v1.1.19). НО: Terraform берёт defaults из cfsParams РЕАЛЬНОЙ операции (шаг 3), а не из шаблона. Может ли быть расхождение? + +4. **ПОРЯДОК отправки params**: В HAR, в каком порядке идут POST /instanceOperationCfsParams? Важен ли порядок? + +5. **serviceInstanceUid**: Этого параметра НЕТ ни в YAML, ни в шаблоне API. Откуда он берётся? Может это внутренний параметр Nubes который появляется при резолве refSvcId? + +6. **ПРОВЕРЬ ВЕСЬ НАШ КОД** на предмет любых других расхождений с Terraform flow. Не только CREATE — MODIFY, DELETE, SUSPEND, RESUME тоже. + +## Файлы для анализа (ВСЕ!) + +- /home/naeel/nubes/autotest/DOCS/terraform-operations-full-logic.md — эталонный flow +- /home/naeel/nubes/autotest/development/dummycreate.har — реальные запросы +- /home/naeel/nubes/autotest/STANDS/dev/resources_yaml/90_postgres.yaml — PG параметры +- /home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py — ВЕСЬ наш код CREATE +- /home/naeel/nubes/autotest/app-autotest/site/operations/get_params.py — get_params_with_current_values