v5.0.62: fix modify 500 (remove WithDefaults GET ?fields=cfsParams) + tests
This commit is contained in:
@@ -87,3 +87,44 @@ tf_provider/
|
||||
- [x] yaml-generator → lib
|
||||
- [ ] resource-generator → lib
|
||||
- [ ] docs-generator → lib
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ BUG: modify падает с 500 — GET ?fields=cfsParams вызывает getResourceRealmConfig
|
||||
|
||||
**Симптом:** `terraform apply` при modify возвращает:
|
||||
```
|
||||
не удалось получить детали операции: ошибка API 500: Invalid call of the function [getResourceRealmConfig], first Argument [resourceRealm] is of invalid type, Cannot cast Object type [Struct] to a value of type [string]
|
||||
```
|
||||
|
||||
**Причина:** `RunInstanceOperationUniversalWithDefaults` (client.go:384) делает GET `/instanceOperations/{opUid}?fields=cfsParams`. Бэкенд (ColdFusion) при вычислении cfsParams вызывает `getResourceRealmConfig` через `expression_parser.cfc:184`. Если `resourceRealm` в контексте инстанса — Struct (объект), а не string, функция падает.
|
||||
|
||||
**Где проявляется:**
|
||||
- `client.go:420` — `RunInstanceOperationUniversalWithDefaults` (modify/create/delete с дефолтами)
|
||||
- `client.go:1399` — `RunInstanceOperationUniversalByCode` (операции по code)
|
||||
- `client.go:224` — `CreateGenericInstanceUniversalV6` (CREATE flow) — работает на новых инстансах
|
||||
|
||||
**Почему на одних инстансах падает, на других нет:**
|
||||
- Новые инстансы: `resourceRealm` = string → OK
|
||||
- Старые/модифицированные: `resourceRealm` = Struct → 500
|
||||
|
||||
**Исправление (v5.0.62):**
|
||||
- `crud.go:58`: `UpdateResourceWithTimeout` → `RunInstanceOperationUniversal` (без GET)
|
||||
- GET не нужен для modify — все параметры уже известны из конфига
|
||||
|
||||
**Статус:** ✅ FIXED v5.0.62
|
||||
**Файлы:**
|
||||
- `/home/naeel/tf_provider/provider/internal/resources_core/crud.go:58`
|
||||
- `/home/naeel/tf_provider/provider/internal/core/client.go:384` (WithDefaults — не используется в modify)
|
||||
|
||||
**Тесты (v5.0.62):**
|
||||
- ✅ CREATE postgres — OK
|
||||
- ✅ MODIFY postgres (replicas, backup_config, access_config) — OK
|
||||
- ✅ CREATE/DELETE user — OK
|
||||
- ✅ CREATE/DELETE database — OK
|
||||
- ✅ Invalid role → 400 c понятным сообщением — OK
|
||||
- ✅ No-change plan (идемпотентность) — OK
|
||||
|
||||
**Остаётся риск:**
|
||||
- `RunInstanceOperationUniversalByCode` (client.go:1399) всё ещё делает GET — может упасть для service_operation_resource на проблемных инстансах
|
||||
- `CreateGenericInstanceUniversalV6` (client.go:224) — CREATE на инстансах где resourceRealm = Struct может упасть
|
||||
|
||||
Reference in New Issue
Block a user