debug: bump 5.0.67, log PlanExistingResourceDiagnostics entry

This commit is contained in:
“Naeel”
2026-07-09 00:54:07 +04:00
parent a0474c3949
commit ee9759cbce
6 changed files with 60 additions and 58 deletions
+25 -50
View File
@@ -1,53 +1,28 @@
# Prompt for Opus — поиск багов в 3 файлах
Проверь эти 3 конкретных файла на баги, аналогичные `skip_missing_on_delete` (провайдерский параметр с плохим дефолтом, которого нет в API YAML).
## Файл 1: Шаблон генератора
`/home/naeel/tf_provider/TOOLS/resource-generator/internal/templates/templates.go`
Смотри все хардкодженные атрибуты (НЕ из `.SchemaParams` / `.OutputParams`):
- `resource_name`
- `operation_timeout`
- `log_level`
- `suspend_on_destroy`
- `adopt_existing_on_create`
- `skip_missing_on_delete`
- `git_revision`
- `{service}_id`
Вопросы:
- У каждого: правильный ли дефолт?
- Не создаёт ли проблем при параллельных/повторных apply?
- `skip_missing_on_delete` с дефолтом `false` — уже известный баг. Есть ли другие?
## Файл 2: CRUD-логика
`/home/naeel/tf_provider/provider/internal/resources_core/crud.go`
Вопросы:
- `FindSubresourceInStateOut` — не должна ли проверка молча пропускать удаление?
- `IsSubresourceMissingError` — все ли ошибки ловит?
- `adoptExistingInstanceOnCreate` — есть ли гонки при параллельном adopt?
## Файл 3: Сгенерированный subresource
`/home/naeel/tf_provider/generated/test/go/90_postgres_database_resource.go`
Вопросы:
- Delete (строки 251-330): правильный ли handling "объект уже удалён"?
- Create: что при duplicate?
- `skipMissingOnDelete` — везде ли корректно?
## Что искать
1. Ошибки вместо идемпотентности (delete/create должны быть идемпотентны)
2. Плохие дефолты (как `skip_missing_on_delete=false`)
3. Гонки при параллельных операциях
4. Провайдерские параметры не из API — все ли оправданы?
# Задача: FindInstanceByDisplayName не находит существующий инстанс — анализ
## Контекст
- API не поддерживает параллельные операции на одном инстансе
- Subresource delete падает с ошибкой если объект уже удалён
- `skip_missing_on_delete` — костыль для обхода, дефолт `false` (баг)
- Уже добавлен instance-level mutex в v5.0.63
## Формат ответа
Для каждого бага: `файл:строка` → симптом → причина → исправление.
Не читай другие файлы без необходимости.
Провайдер `terraform-provider-nubes` v5.0.65, test-стенд.
Инстанс: `NaeelOrg`, serviceId=19, instanceUid=`3f0850f2-3506-4efd-b84b-7270b5027ab5`, статус Running.
## Симптом
`terraform plan` с `adopt_existing_on_create=true`, `resource_name="NaeelOrg"``+ create`. Apply → «уже существует».
## Доказано curl-тестами
1. Search API: `GET /instances?search=NaeelOrg&serviceId=19&isAuxiliary=false&isDeleted=false` + `UA: Mozilla/5.0` → находит.
2. GetInstanceStateRaw: `GET /instances/3f0850f2-...` → возвращает, isDeleted=false, Running.
## Ключевые файлы
- `provider/internal/core/client.go``FindInstanceByDisplayName()`:568, `doRequest()`:949, `GetInstanceStateRaw()`:753, `isInstanceDeleted()`:741
- `provider/internal/resources_core/resource_diagnostics.go``PlanExistingResourceDiagnostics()`:14
- `provider/internal/resources_core/crud.go``CreateResource()`:21, `adoptExistingInstanceOnCreate()`:142
- `generated/test/go/19_vc_org_resource.go``ModifyPlan()`
- `TEST_STAND/kuber/resources.tf` — манифест
- `HISTORY/OPUS/3006_0_answers.md`:220 — search ✅ / fallback ❌
## Задание
Найти **точно**, почему `FindInstanceByDisplayName("NaeelOrg", 19)` возвращает nil. Если не хватает данных — сказать, какой curl-тест запустить.