Files
tf_provider/docs/TODO/client_go_split.md
T

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.go
  • instance_outputs.go
  • refsvc_resolve.go

Правила при рефакторинге

  1. Только перенос функций — без изменения логики (чистый move).
  2. Сохранить debug(...)-логи и комментарии // НЕ МЕНЯТЬ.
  3. go build ./... && go vet ./internal/core/ после каждого шага.
  4. Коммит после каждого вынесенного блока (правило «коммит после каждой правки»).