diff --git a/TOOLS/resource-generator/internal/loader/loader.go b/TOOLS/resource-generator/internal/loader/loader.go index d4a8a2b..863fc6f 100644 --- a/TOOLS/resource-generator/internal/loader/loader.go +++ b/TOOLS/resource-generator/internal/loader/loader.go @@ -1,4 +1,13 @@ -// Package loader — загрузка YAML-спеков и построение ресурсов. +// Package loader — загрузка YAML-спеков и построение GenResource/GenSubresource/GenAction. +// +// LoadSpecs — главная функция. Для каждого YAML: +// 1. Парсит операции (create/modify/delete/suspend/resume/...) +// 2. Классифицирует их на instance/subresource/action +// 3. Сливает параметры, вычисляет CreateOnly и ForceNew +// 4. Строит GenResource/GenSubresource/GenAction +// 5. Сортирует результат по имени сервиса +// +// ValidateSpec — fail-fast валидация (паника при неизвестном Kind). package loader import ( diff --git a/TOOLS/resource-generator/internal/params/params.go b/TOOLS/resource-generator/internal/params/params.go index 09afe16..58b88d4 100644 --- a/TOOLS/resource-generator/internal/params/params.go +++ b/TOOLS/resource-generator/internal/params/params.go @@ -1,4 +1,11 @@ // Package params — слияние, фильтрация, анализ параметров и ForceNew. +// +// Основные операции: +// - Merge — объединяет параметры из нескольких операций по Code +// - ComputeCreateOnly — поля, которые есть в create, но отсутствуют в modify +// - BuildSubresourceForceNewCodes — поля, требующие пересоздания subresource +// - Analyze — определяет используемые типы (bool/int64/string) для импортов +// - AnalyzePlanModifiers — ForceNew-поля, требующие planmodifier.*.RequiresReplace() package params import ( diff --git a/TOOLS/resource-generator/internal/types/types.go b/TOOLS/resource-generator/internal/types/types.go index c866a76..0b10c39 100644 --- a/TOOLS/resource-generator/internal/types/types.go +++ b/TOOLS/resource-generator/internal/types/types.go @@ -1,4 +1,14 @@ // Package types — структуры данных для генератора Terraform-провайдера. +// +// Моделирует три вида ресурсов: +// - GenResource — основной CRUD инстанса (nubes_{service}) +// - GenSubresource — подресурсы (nubes_{service}_{user}, ...) +// - GenAction — действия (почти не используется, redeploy встроен в GenResource.HasRedeploy) +// +// Правила обработки action'ов из ARCHITECTURE.md: +// - redeploy → HasRedeploy=true, поле git_revision в основном ресурсе +// - restart/recovery/reconcile → исключены (ручные, только UI) +// - всё остальное → отдельный GenAction package types // ─── Входные структуры (из YAML) ─────────────────────────────────────────── diff --git a/TOOLS/resource-generator/internal/writers/writers.go b/TOOLS/resource-generator/internal/writers/writers.go index 3b2dc4d..efc0b4c 100644 --- a/TOOLS/resource-generator/internal/writers/writers.go +++ b/TOOLS/resource-generator/internal/writers/writers.go @@ -1,4 +1,12 @@ // Package writers — генерация Go-файлов ресурсов и registry.go. +// +// Генерирует три типа файлов в internal/resources_gen/: +// - {id}_{service}_resource.go — основной CRUD инстанса +// - {id}_{service}_{sub}_resource.go — подресурсы +// - {id}_{service}_{action}_action.go — action-ресурсы (редко) +// - registry.go — AllResources() со списком всех ресурсов +// +// Каждый файл компилируется через text/template и форматируется через gofmt. package writers import ( diff --git a/TOOLS/yaml-generator/internal/client/client.go b/TOOLS/yaml-generator/internal/client/client.go index 86276b5..9e7af6d 100644 --- a/TOOLS/yaml-generator/internal/client/client.go +++ b/TOOLS/yaml-generator/internal/client/client.go @@ -1,4 +1,13 @@ // Package client — HTTP-клиент для API Nubes. +// +// Поддерживает два режима API, автоопределяемых по URL: +// - Legacy proxy: содержит "index.cfm" → ?endpoint=/services/123 +// - REST Gateway: без "index.cfm" → /api/v1/svc/services/123 +// +// Ретраи: до 3 попыток с экспоненциальной задержкой (2s, 4s, 8s). +// Ретраятся: сетевые ошибки, 429 (rate limit), 5xx. +// +// Все методы возвращают типы из пакета types. package client import ( diff --git a/TOOLS/yaml-generator/internal/types/types.go b/TOOLS/yaml-generator/internal/types/types.go index 99022d4..b8f3a1b 100644 --- a/TOOLS/yaml-generator/internal/types/types.go +++ b/TOOLS/yaml-generator/internal/types/types.go @@ -1,4 +1,13 @@ // Package types — структуры данных для YAML-спеков сервисов. +// +// Содержит два набора типов: +// - API-ответы (ServiceResponse, ServiceInfo, CfsParam, ...) — +// соответствуют JSON-структурам Nubes API /services/{id} и /serviceOperation/{id}. +// - Выходные YAML-типы (ServiceSpec, ParamSpec, OperationSpec, ...) — +// сериализуются в resources_yaml/*.yaml и читаются генераторами resource-generator и docs-generator. +// +// Разделение API-входа и YAML-выхода позволяет менять формат YAML +// независимо от структуры API. package types // ─── API-ответы ───────────────────────────────────────────────────────────── diff --git a/provider/internal/core/client.go b/provider/internal/core/client.go index 0175751..a53b0e1 100644 --- a/provider/internal/core/client.go +++ b/provider/internal/core/client.go @@ -1,4 +1,11 @@ -// ВНИМАНИЕ: НЕ ИЗМЕНЯТЬ НИЧЕГО В ЯДРЕ БЕЗ ПРЯМОГО РАЗРЕШЕНИЯ ОПЕРАТОРА. +// Package core — ядро провайдера: HTTP-клиент Nubes API. +// +// Содержит: +// - Client — HTTP-клиент с retry, таймаутами, Bearer-токеном +// - Методы GetInstance*, RunOperation*, GetInstanceState* +// - Логику определения proxy vs REST API (isProxyAPI) +// +// ⛔ НЕ ИЗМЕНЯТЬ НИЧЕГО В ЯДРЕ БЕЗ ПРЯМОГО РАЗРЕШЕНИЯ ОПЕРАТОРА. package core import ( diff --git a/provider/internal/provider/provider.go b/provider/internal/provider/provider.go index be70a3f..e708611 100644 --- a/provider/internal/provider/provider.go +++ b/provider/internal/provider/provider.go @@ -1,3 +1,9 @@ +// Package provider — регистрация Terraform-провайдера Nubes. +// +// Определяет: +// - New() — создание провайдера с конфигурацией (api_token, api_endpoint) +// - Resources() — список всех ресурсов из resources_gen.AllResources() +// - Schema() — схема конфигурации провайдера package provider import ( diff --git a/provider/internal/resources_core/crud.go b/provider/internal/resources_core/crud.go index cc96f8c..992a425 100644 --- a/provider/internal/resources_core/crud.go +++ b/provider/internal/resources_core/crud.go @@ -1,4 +1,13 @@ -// ВНИМАНИЕ: НЕ ИЗМЕНЯТЬ НИЧЕГО В CRUD БЕЗ ПРЯМОГО РАЗРЕШЕНИЯ ОПЕРАТОРА. +// Package resources_core — общая логика CRUD для сгенерированных ресурсов. +// +// Предоставляет функции, используемые всеми ресурсами из resources_gen: +// - Create/Read/Update/Delete — базовые CRUD-операции +// - State Refresh — обновление состояния из API +// - Param Mapping — маппинг параметров Terraform ↔ API +// - Validation — валидация обязательных полей и ref_svc +// - Plan Modifiers — UUID, JSON-нормализация +// +// ⛔ НЕ ИЗМЕНЯТЬ НИЧЕГО В CRUD БЕЗ ПРЯМОГО РАЗРЕШЕНИЯ ОПЕРАТОРА. package resources_core import ( diff --git a/provider/main.go b/provider/main.go index f6f8673..59446f7 100644 --- a/provider/main.go +++ b/provider/main.go @@ -1,3 +1,10 @@ +// Terraform-провайдер Nubes Cloud. +// +// Регистрирует провайдер в hashicorp/terraform-plugin-framework. +// Все ресурсы подключаются через resources_gen.AllResources(). +// +// Сборка: go build -o terraform-provider-nubes . +// Версия задаётся через ldflags: -ldflags "-X main.version=X.Y.Z" package main import (