35 lines
2.4 KiB
Markdown
35 lines
2.4 KiB
Markdown
# TODO: разбить `provider/internal/core/client.go`
|
|
|
|
Файл разросся до **1678 строк** — монолит, смешаны зоны ответственности. Разбить на отдельные файлы в пакете `core` (мелкими модулями).
|
|
|
|
⚠️ НЕ трогать без явной команды. Только рефакторинг-план.
|
|
|
|
## Предлагаемое разбиение
|
|
|
|
| Файл | Зона ответственности |
|
|
|---|---|
|
|
| `client.go` | Core-структура `UniversalClient`, конструктор, `doRequest`, retry, `buildURL`, sanitize auth |
|
|
| `client_http.go` | `doRequest`, `formatAPIError`, retry-логика, `User-Agent`/DDoS-Guard |
|
|
| `instance_find.go` | `FindInstanceByDisplayName` (+search/fallback-пути, `isInstanceDeleted`, `isInstanceDeletedError`) |
|
|
| `instance_state.go` | `GetInstanceStateRaw`, `GetInstanceState`, `GetInstanceStateParams`, `GetInstanceStateDetails`, `validateInstanceStatus` |
|
|
| `instance_create.go` | `CreateGenericInstanceUniversalV6`, `createInstanceWithContext` |
|
|
| `instance_operation.go` | `RunInstanceOperationUniversal`, `RunInstanceOperationUniversalWithDefaults`, `RunInstanceOperationUniversalByCode`, `RunRedeployOperation`, `fetchOperationCfsParams` |
|
|
| `operation_wait.go` | `waitForOperationFinish`, `waitForInstanceIdle`, печать этапов |
|
|
| `params_ref.go` | `resolveRefSvcParamValues`, `resolveRefSvcParams`, `ResolveRefSvcParamValue`, `ResolveS3UidInAllMapFixed` |
|
|
| `params_norm.go` | `normalizeUniversalValueV6`, `buildMapFixedDefault`, `normalizeInstanceParamValue` |
|
|
| `instance_output.go` | (уже вынесено отдельно) `instance_outputs.go` |
|
|
| `instance_params.go` | (уже отдельно) `instance_params.go` |
|
|
|
|
## Уже вынесено (не трогать)
|
|
|
|
- `instance_params.go`
|
|
- `instance_outputs.go`
|
|
- `refsvc_resolve.go`
|
|
|
|
## Правила при рефакторинге
|
|
|
|
1. Только перенос функций — без изменения логики (чистый move).
|
|
2. Сохранить `debug(...)`-логи и комментарии `// НЕ МЕНЯТЬ`.
|
|
3. `go build ./... && go vet ./internal/core/` после каждого шага.
|
|
4. Коммит после каждого вынесенного блока (правило «коммит после каждой правки»).
|