2.4 KiB
2.4 KiB
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.goinstance_outputs.gorefsvc_resolve.go
Правила при рефакторинге
- Только перенос функций — без изменения логики (чистый move).
- Сохранить
debug(...)-логи и комментарии// НЕ МЕНЯТЬ. go build ./... && go vet ./internal/core/после каждого шага.- Коммит после каждого вынесенного блока (правило «коммит после каждой правки»).