add: documentation

This commit is contained in:
“Naeel”
2026-06-30 15:45:24 +04:00
parent 540c1f7293
commit ca276d200f
1055 changed files with 47294 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
# Резюме для нового чата (подробно)
## Контекст
- Репозиторий: /home/naeel/terra
- Ветка: reset-universal-rebuild (создана и запушена)
- Цель: полный перезапуск генерации универсального провайдера. Сгенерировать YAML и Go-ресурсы заново, начиная с dummy.
## Ключевые правила/инструкции
- Не менять существующий Go-код без разрешения (получали разрешения явно).
- Новая логика — только новые функции/файлы (если не дано разрешение на правки).
- Перед изменениями читать REPO_CONTENTS.md (сделано).
- Токены: при получении нового access_token сохранить в /home/naeel/terra/HH-MM-SS.token.
- Команды к API только read-only.
## Что сделано до «reset»
1) **Исправления логики adopt/Read**
- В internal/core/client.go добавлено поле `IsDeleted` в `InstanceStateResponse` и функция `isInstanceDeleted` (ignore deleted). При поиске по display_name удалённые инстансы пропускаются.
- В генераторе Read добавлено удаление state при `isDeleted`/`explainedStatus=deleted`.
2) **Поведение при дубликатах display_name**
- В CreateResource (resources_gen/crud.go): если ресурс с именем найден и `resume_if_exists=false` — ошибка без попытки create.
- В ModifyPlan: предупреждение о дубликате для `resume_if_exists=true`. Ошибка при `resume_if_exists=false`.
3) **Сброс warning для уже managed ресурсов**
- В ModifyPlan добавлена проверка state.ID: если ресурс уже в state — warning не показывать.
4) **Было выявлено**
- Проблема с `resourceRealm`: ранее подставлялся автоматически `serviceName`, что ломало Postgres (нужен доступный realm).
5) **Ветка и коммит**
- Создана ветка: `reset-universal-rebuild`.
- Коммит: “reset generated resources”.
- Запушено в origin.
## Большой reset (начать заново)
### Удаление и пересоздание папок
- По запросу пользователя удалены:
- /home/naeel/terra/universal_rebuild/resources_yaml
- /home/naeel/terra/universal_rebuild/internal/resources_gen
- Затем каталоги **созданы заново** (пустые):
- /home/naeel/terra/universal_rebuild/resources_yaml
- /home/naeel/terra/universal_rebuild/internal/resources_gen
## Новый генератор YAML (без instanceUid)
### Причина
- Из документации `/docs/40_analysis/har/discovery/service_parameters_fetch.md` выяснилось, что параметры можно получать **без instanceUid**:
- GET `/api/v1/index.cfm?endpoint=/services/{svcId}` → список операций
- GET `/api/v1/index.cfm?endpoint=/serviceOperation/{svcOperationId}` → cfsParams
- опционально `/param-value-list/{svcOperationCfsParamId}`
### Реализация
- Создан новый генератор:
- Файл: /home/naeel/terra/universal_rebuild/tools/service_params_gen/main.go
- Он:
- Берёт токен из `NUBES_API_TOKEN` или из `test_universal/terraform.tfvars`.
- Вызывает `/index.cfm?endpoint=/services/{svcId}` и `/serviceOperation/{id}`.
- Строит YAML (create/modify params) и сохраняет в `universal_rebuild/resources_yaml/{name}.yaml`.
- Типы приводятся: bool → bool, int* → int64, остальное → string.
## Токен
- Получен новый JSON с access_token.
- Сохранён файл: `/home/naeel/terra/20-19-21.token`.
- Обновлён `/home/naeel/terra/universal_rebuild/test_universal/terraform.tfvars` на новый token.
## Старт заново: dummy (service_id=1)
1) YAML:
- Сгенерирован через новый генератор:
- Команда: `NUBES_SERVICE_ID=1 NUBES_SERVICE_NAME=dummy go run ./tools/service_params_gen/main.go`
- Файл: /home/naeel/terra/universal_rebuild/resources_yaml/dummy.yaml
2) Go-ресурсы:
- Сгенерированы стандартным генератором:
- `go run ./tools/gen/main.go`
- Вновь добавлен `internal/resources_gen/crud.go` (Create/Update/Delete helpers), т.к. он был удалён при reset.
3) Build:
- `go build -o terraform-provider-nubes` — успешно.
## Текущее состояние файлов (после reset)
- **Сгенерировано:**
- /home/naeel/terra/universal_rebuild/resources_yaml/dummy.yaml
- /home/naeel/terra/universal_rebuild/internal/resources_gen/* (dummy + базовые registry/helpers от генератора)
- /home/naeel/terra/universal_rebuild/internal/resources_gen/crud.go (вручную восстановлен)
- **Новый инструмент:**
- /home/naeel/terra/universal_rebuild/tools/service_params_gen/main.go
## Что предстоит (следующие шаги)
1) **Сгенерировать YAML для других сервисов** тем же новым генератором:
- Пример:
- `NUBES_SERVICE_ID=13 NUBES_SERVICE_NAME=bucket go run ./tools/service_params_gen/main.go`
- `NUBES_SERVICE_ID=90 NUBES_SERVICE_NAME=postgres go run ./tools/service_params_gen/main.go`
- Проверить, что в YAML есть `resourceRealm` (как параметр, без автоподстановки).
2) **Запустить `tools/gen/main.go`** после каждого набора YAML.
3) **Проверить схему параметров** (если имена типа `resource_c_p_u`/`allow_no_s_s_l` получаются странными — это ожидаемое поведение текущего генератора по CamelCase; при необходимости фиксить генератор).
4) **Тесты**:
- Create/modify/suspend/delete по выбранным сервисам (как ранее делали для dummy/bucket/postgres).
5) **resourceRealm**:
- Сейчас параметр должен задаваться пользователем в `.tf`.
- Ранее была автоподстановка `serviceName`, её отключили (см. правки tools/gen/main.go), но после reset может потребоваться проверить текущее поведение генератора.
## Важные файлы/ссылки
- Док: /home/naeel/terra/docs/40_analysis/har/discovery/service_parameters_fetch.md
- Новый генератор YAML: /home/naeel/terra/universal_rebuild/tools/service_params_gen/main.go
- Генератор Go ресурсов: /home/naeel/terra/universal_rebuild/tools/gen/main.go
- Каталоги для генерации:
- /home/naeel/terra/universal_rebuild/resources_yaml
- /home/naeel/terra/universal_rebuild/internal/resources_gen
## Комментарии по ошибкам, которые были ранее
- 401 Unauthorized: токен истёк → обновили.
- 500 Resource realm not available: нужен `resourceRealm` доступный контракту (задавать в `.tf`).
- Warnings `RESOURCE WITH SAME NAME EXISTS`: теперь показываются только для ресурсов без state ID (на create), чтобы не мешать managed ресурсам.
---
Если нужно, можно продолжить с генерации `bucket` и `postgres` через новый `service_params_gen`, затем перегенерировать Go ресурсы и собрать провайдер.