Files
tf_provider/TOOLS
Repinoid 12b3932817 fix(tools): безопасная генерация YAML — staging + атомарная замена, без легаси-фолбэков
01_generate_yamls.sh:
- генерация в staging-каталог; рабочий каталог не удаляется заранее;
  атомарная замена (mv) только при полном успехе, старый каталог → бэкап
  resources_yaml.bak-<UTC> (ротация KEEP_BACKUPS=5);
- убран легаси-фолбэк токена 'ls -t ROOT/*.token' (подхватывал чужой токен);
- NUBES_API_ENDPOINT обязателен (убран молчаливый PROD-дефолт);
- имя сервиса берётся из 2-го поля services_list.txt (убран лишний HTTP-запрос);
- убран безусловный rm старого YAML перед генерацией (неатомарность);
- удалён дубль SERVICES_FILE_DEFAULT; маркер .stand защищает от чужого стенда;
- синхронизированы комментарии (REQUEST_DELAY 0.5, пути, формат списка).

yaml-generator/internal/config:
- NUBES_API_ENDPOINT обязателен (убран PROD-дефолт);
- убран легаси-поиск последнего *.token в корне репо (loadToken/findLatestToken);
- убран несуществующий путь provider/devops/config/services_list.txt
  (теперь требуется явный NUBES_SERVICES_FILE);
- удалены мёртвые getenvDefault/findLatestToken.

Проверено: bash -n OK, go vet/go build OK.
2026-09-30 09:28:41 +03:00
..

TOOLS — Генераторы Terraform-провайдера Nubes

Каждый инструмент — независимый Go-модуль.

yaml-generator

API Nubes → resources_yaml/*.yaml

cd yaml-generator && go build -o ../bin/yaml-generator .
./bin/yaml-generator

Структура: main.go + internal/{client,config,normalize,spec,types}.

resource-generator

resources_yaml/*.yaml → internal/resources_gen/*.go + registry.go

cd resource-generator && go build -o ../bin/resource-generator .
./bin/resource-generator

Структура: main.go + internal/{helpers,loader,params,templates,types,writers}.

Как запускать правильно

Не запускайте TOOLS/resource-generator/bin/resource-generator вручную и не полагайтесь на старый бинарник из TOOLS/resource-generator/bin/.

Используйте канонический скрипт из корня репозитория, он всегда пересобирает генераторы из текущих исходников перед запуском:

./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev

Для других стендов подставляйте нужный профиль:

./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/test
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/prod

Это устраняет случайный запуск устаревшего бинаря и гарантирует, что новые kind из YAML, включая modifier, будут обработаны текущим кодом генератора.

docs-generator

resources_yaml/*.yaml → Markdown-документация в docs/30_registry/resources/

cd docs-generator && go build -o ../bin/docs-generator .

# Документация ресурсов
./bin/docs-generator

# Operations-документация  
./bin/docs-generator --ops

Структура: main.go + internal/{types,writers,ops}.