add: documentation
This commit is contained in:
@@ -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 ресурсы и собрать провайдер.
|
||||
Reference in New Issue
Block a user