Repinoid
c822ae2f2a
docs: актуализировать ссылки после удаления общего services_list.txt
...
- README.md, HOW_TO/README.md, HOW_TO/DEVOPS_BUILD_PIPELINE.md,
HOW_TO/HOWTO_ADD_NEW_SERVICE.md, DOCS_PIPELINE/README.md:
TOOLS/config/services_list.txt → TOOLS/config/<стенд>/services_list.txt;
- HOW_TO/HOWTO_ADD_NEW_SERVICE.md: блок «Быстрый старт» переписан с
устаревших devops/-путей на канонические (./TOOLS/scripts/*, generated/<стенд>/);
- scripts/publish-doc-page.sh: примеры devops/profiles/<стенд> → TOOLS/config/<стенд>;
- .gitignore: убрана мёртвая строка devops/profiles/*/generated/.
Проверено: bash -n для всех TOOLS/scripts/*.sh и scripts/publish-doc-page.sh — OK.
2026-09-30 09:50:37 +03:00
Repinoid
1e796c8eb1
chore(tools): удалить мёртвые легаси-скрипты и общий services_list.txt
...
Удалено (100% мёртвое, ничего не вызывает):
- TOOLS/scripts/10_yaml_stability_run.sh
- TOOLS/scripts/11_yaml_stability_run_latest.sh
- TOOLS/scripts/12_generate_yamls_latest.sh
- TOOLS/scripts/13_generate_yamls_clean.sh
- TOOLS/scripts/02_generate_resources_and_docs_template_v2.sh
- TOOLS/config/services_list.txt (общий список: код его не читает, а как
«объединение» он устарел — в нём активен id 27, который в test/prod
закомментирован как «нет в UI», и отсутствуют 87/88/97/153 из dev)
Все ссылки в документации указывали на профильные списки либо будут
исправлены отдельным коммитом.
2026-09-30 09:50:28 +03:00
Repinoid
cbd559d767
docs(tools): канонический пайплайн + история ужесточения генерации YAML
...
- TOOLS/README.md: раздел «Канонический пайплайн (порядок шагов)» и описание
безопасной генерации (staging → атомарная замена, бэкапы, маркер .stand);
- TOOLS/ARCHITECTURE.md: ссылки devops/… → TOOLS/config/<stand>/…;
- HISTORY/2026-09-30_yaml_pipeline_hardening.md: полная история изменений
(что было не так, что сделано, прогон по стендам, коммиты, проверки).
2026-09-30 09:39:26 +03:00
Repinoid
ad4daab358
chore(tools): легаси-скрипты генерации отключены (fail-fast DEPRECATED)
...
10/11/12/13 + 02_..._template_v2 нерабочие (зовут 01 без --profile, ищут
*.token в корне репо) и не вызываются никаким рабочим скриптом (ссылки —
только в исторических HISTORY/NOTES). Теперь падают сразу с подсказкой
канонического пути вместо мнимой работы; 13 вдобавок больше не может
сделать rm -f provider/resources_yaml/*.yaml.
Проверено: bash -n OK, guard отдаёт exit 2.
2026-09-30 09:38:42 +03:00
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
Repinoid
190fc68f93
chore(gitignore): игнорировать каталог secrets/
2026-09-30 09:07:47 +03:00
Repinoid
b81dc88abe
docs(uuid-case): отметить, что фикс выпущен в dev 2.0.24
...
- HISTORY/2026-09-30: раздел «Следствия» — релиз 2.0.24 (залито в реестр), доки не публиковались.
- terraform_case_sensitivity_fix.md §11: «не выпущено» -> «выпущено в 2.0.24»; уточнение по костылю lower().
2026-09-30 08:50:35 +03:00
Repinoid
c1b02a1c2d
release(dev): 2.0.24 — фикс регистра UUID при отправке map-fixed JSON залит в реестр
...
Собрано и загружено в nubes-dev/nubes/2.0.24/ (linux/windows/darwin amd64
+ SHA256SUMS + .sig), версия видна в реестре.
2026-09-30 08:50:17 +03:00
Repinoid
d6d0b733ae
chore(dev): поднять версию провайдера 2.0.17 -> 2.0.24
...
Конфиг отставал от реестра (там уже 2.0.23), из-за чего генератор доков
подставлял неверную версию. Дальше — генерация и релиз 2.0.24.
2026-09-30 08:35:59 +03:00
Repinoid
9aed2dcdd9
fix(provider): нормализация регистра UUID при отправке map-fixed JSON в API
...
- resources_core.BuildJSON оборачивает результат в jsonutil.LowercaseUUIDsInText:
платформа сравнивает регистр UUID при create, а ресурсы отдают id в UPPERCASE
(nsxtUid/vdcUid) -> без нормализации create Штурвала падал 'Edge не развёрнут
в указанном vDC' (обнаружено на провайдере 2.0.23 из-под Windows).
- Одна точка покрывает все map-fixed-параметры (create/modify/redeploy),
регенерация не требуется.
- Документация: HISTORY/2026-09-30, docs/60_strategy/terraform_case_sensitivity_fix.md §11,
NOTES/30_analysis/ARCHITECTURE_NEW.md §6.5, docs/help/architecture-and-methods.md §7.
Не выпущено: версия не поднималась, релиз/регенерация не выполнялись.
2026-09-30 08:34:04 +03:00
Repinoid
09e38928d0
chore: сохранить текущие изменения стендов и заметок
2026-09-29 11:16:57 +03:00
Repinoid
a52170cf1e
docs(history): vpn-transit-213 — итог оптимизации: автоматизация, провал mux и DNAT, разбор ошибок
2026-09-28 16:45:04 +03:00
Repinoid
25f339bc8a
1
2026-09-28 09:42:25 +03:00
Repinoid
5742457cc0
docs(rules): приведена стилистика copilot-instructions.md — разделы и списки вместо капслока, все правила сохранены
2026-09-28 09:41:27 +03:00
Repinoid
6b6252c42b
docs(pipeline): fix vdc CPU example for VM
2026-09-28 09:40:12 +03:00
Repinoid
70b937ea2f
docs(pipeline): встроена схема зависимостей сервисов
2026-09-28 09:20:25 +03:00
Repinoid
bc1af681aa
build(docs): скрипт 04 копирует картинки docs/diagrams (*.svg|png) в публикуемый docs_dir; README диаграмм — раздел о публикации
2026-09-28 09:20:25 +03:00
Repinoid
318b847ede
docs(modifiers): квота IP — учёт внешнего адреса ВМ (count = 4), актуальная ссылка на страницу пайплайна
2026-09-28 09:19:14 +03:00
Repinoid
7d762387e7
docs(provider-behavior): vApp/ВМ в таблице ресурсов, в заморозке (suspend/adopt) и в §6-пайплайне (шаги 6-8, лимит vCPU vDC, 14 дней для vApp)
2026-09-28 09:19:00 +03:00
Repinoid
0d7b8c5310
docs(nav): пункт меню пайплайна — добавлены vApp и ВМ
2026-09-28 09:19:00 +03:00
Repinoid
2675495eef
docs(pipeline): цепочка расширена vApp -> ВМ — требования (квота CPU vDC, 4-й IP, SSH-ключ), параметры ВМ и образы, внешний доступ, раздел 6 с чек-листом, destroy для vApp/ВМ
2026-09-28 09:18:36 +03:00
Repinoid
034096d16d
chore: бэкап FPipeGmail перед добавлением ВМ (без tfvars/tfstate — они в .gitignore) + HISTORY по vpn-transit-213
2026-09-28 08:04:52 +03:00
Repinoid
15cd369ec3
feat(fpipeline): ВМ в пайплайн FPipeGmail — самодостаточный vm.tf (vApp 26 + ВМ 28), внешний IP через общий SNAT, suspend_on_destroy
2026-09-28 07:54:50 +03:00
Repinoid
2fd9ef8aba
docs(resume): правки по фактам — ответы по vApp/ВМ (обязательные параметры, suspend, образы, сеть), реальное состояние аккаунтов, исправлено ложное наблюдение про список инстансов (ключ results)
2026-09-27 19:20:22 +03:00
Repinoid
ef22e78d8a
docs(resume): резюме для нового чата — добавление ВМ (vApp 26 + ВМ 28) в пайплайн; что уже сделано, состояние стендов/облака, точки входа, развилки
2026-09-27 19:17:08 +03:00
Repinoid
a366f47eff
docs: move diagram artifacts to docs/diagrams, add vApp-IP precondition link and creation guide
2026-09-26 19:30:41 +03:00
Repinoid
6791e8fb5f
docs: add styled infrastructure dependency diagram (generator + png + svg)
2026-09-26 19:13:57 +03:00
Repinoid
ff38352bfc
docs: remove duplicated SNAT label from edge node in flow diagram
2026-09-26 19:06:01 +03:00
Repinoid
dc837e8e1a
docs: verify cloud service dependency chains against YAML, add VM/Shurval checklists, redraw diagram
2026-09-26 18:49:17 +03:00
Repinoid
223b0ccdca
docs: fix compute pool link to originate from vDC
2026-09-26 18:33:01 +03:00
Repinoid
ea725bd8b9
docs: add infrastructure services flow diagram (mmd, svg, png)
2026-09-26 08:22:03 +03:00
Repinoid
48009583a6
Add September 25 Terraform backups
2026-09-26 07:20:59 +03:00
Repinoid
e72eb75d10
stand(FPipeGmail): свои имена Штурвала — shturval-dev1 / shturval-dev-01 (занятое имя кластера не подошло)
2026-09-25 13:31:33 +03:00
Repinoid
8d25de9e79
docs: страница «Как работает провайдер (отличия от Terraform)» в навигации + ссылка на страницу пайплайна vDC → Edge → IP → SNAT → Штурвал
2026-09-25 09:59:56 +03:00
Repinoid
f8d64948c8
docs(curated): страница «vDC → Edge → IP → SNAT → Штурвал» (требования, заморозка, проверка результата) + nav + HISTORY
2026-09-25 09:47:33 +03:00
Repinoid
e20c22e0cb
stand(FPipeGmail): организация kontra (аккаунт tazetdinovn@gmail.com) вместо устаревшей kontora
2026-09-25 08:53:33 +03:00
Repinoid
10520670a5
1
2026-09-24 20:27:54 +03:00
Repinoid
418b5645e5
docs: DEV 2.0.21 залит — ресурс аллокации принимает имя организации; стенд переведён на 2.0.21
2026-09-24 15:35:18 +03:00
Repinoid
5bd197f031
feat(provider): ресурс аллокации принимает имя организации (резолв в UUID через ResolveRefSvcParamValue, как в nubes_vc_vdc); конфиги и доки без org_uid
2026-09-24 15:28:13 +03:00
Repinoid
bd5de0cead
docs(pipeline): страница переписана как инструкция для пользователя (шаги, значения из ЛК, команды)
2026-09-24 15:21:41 +03:00
Repinoid
c3b82cf074
docs(pipeline): ссылка на репозиторий примеров tf_examples и порядок клонирования
2026-09-24 15:00:07 +03:00
Repinoid
9590005914
docs: страница пайплайна vDC → Edge → внешние IP → SNAT (Ресурсы-модификаторы (IP организации, SNAT))
2026-09-24 14:56:00 +03:00
Repinoid
caa55d9ff8
chore(stand/FullPipe): провайдер 2.0.20 (проверено plan из реестра)
2026-09-24 14:16:05 +03:00
Repinoid
d76418303a
docs: DEV 2.0.20 залит (nubes-dev) — исправлен plan-modifier в nubes_vc_org_ip_allocation
2026-09-24 14:11:33 +03:00
Repinoid
6196a0119a
docs(rules): добавить правило — при неясной команде переспросить и подтвердить, не гадать
2026-09-24 14:05:06 +03:00
Repinoid
e25ef02a1a
docs: убрать устаревшее «канонизация в plan-modifier» (совет Opus был неверен); план живого прогона FullPipe
2026-09-24 14:04:08 +03:00
Repinoid
807dfde287
fix(provider): убран plan-modifier, менявший пользовательское значение (Terraform: planned value must match config); сравнение аллокаций — смысловое в Read
2026-09-24 13:57:56 +03:00
Repinoid
721c3fcfab
feat(stand/FullPipe): орг organ (org_uid) + ресурсы-модификаторы — аллокация IP после эджа, затем SNAT
2026-09-24 13:48:53 +03:00
Repinoid
e6675be906
docs: DEV 2.0.19 залит (nubes-dev) — правки по ревью ресурсов-модификаторов
2026-09-24 10:57:10 +03:00
Repinoid
ed4493c0ee
docs: правки по ревью (канонизация, destroy-семантика) + статус выполнения
2026-09-24 10:52:51 +03:00
Repinoid
1236c59e18
test(provider): тесты канонизации vIPConfigure (jsonencode-форма, пробелы, [{}], невалидный JSON)
2026-09-24 10:52:36 +03:00
Repinoid
4b497e61db
fix(provider): nsxt_snat — не писать null в Required-атрибут, ошибки API в Delete → error, валидация пустого ip_space_name
2026-09-24 10:52:36 +03:00
Repinoid
ba6c4f5122
fix(provider): канонизирующий plan-modifier для vip_configure (jsonencode сортирует ключи → вечный diff); не писать null в Required; Delete: ошибки API → error
2026-09-24 10:52:36 +03:00
Repinoid
3374bf4e08
docs(prompts): ответ Opus на ревью кода ресурсов-модификаторов (блокеры: порядок ключей, Required+null) + список правок
2026-09-24 10:51:10 +03:00
Repinoid
648db99628
docs(prompts): промпт на ревью Opus — полный код двух ресурсов-модификаторов, известный баг и вопросы
2026-09-24 10:49:15 +03:00
Repinoid
9412106e3f
docs: DEV 2.0.18 залит (nubes-dev) — ресурсы-модификаторы vc_org_ip_allocation и vc_nsxt_snat
2026-09-24 10:34:02 +03:00
Repinoid
6e6d223c22
docs(plans): §13 — статус работ (сделано/ждёт команды)
2026-09-24 10:26:36 +03:00
Repinoid
62abcd64f5
docs(providers): страница ресурсов-модификаторов (nubes_vc_org_ip_allocation, nubes_vc_nsxt_snat) + nav
2026-09-24 10:26:21 +03:00
Repinoid
3973f912fc
chore(docs): удалить docs/TODO/what_not_in_terraform.md + убрать ссылки на него из комментариев
2026-09-24 10:24:13 +03:00
Repinoid
73a7459a38
feat(provider): регистрация ресурсов-модификаторов vc_org_ip_allocation и vc_nsxt_snat
2026-09-24 10:22:17 +03:00
Repinoid
80d82a145a
feat(provider): ресурс nubes_vc_nsxt_snat (modify ipSpaceName, inverse no-needed)
2026-09-24 10:22:17 +03:00
Repinoid
22cf2595ee
feat(provider): ресурс nubes_vc_org_ip_allocation (modify vIPConfigure, uid орги) + тесты нормализации
2026-09-24 10:22:17 +03:00
Repinoid
574e300476
docs(plans): §12 — орга делается руками в ЛК, в tf только uid; правка генератора не блокер, нужны только 2 ресурса
2026-09-24 10:10:55 +03:00
Repinoid
cb8389c17f
docs(plans): §11 — ответы Opus раунд 3 (критерий отбора = явный список в конфиге генератора, релиз A только (б), Deprecated вместо падения)
2026-09-24 10:04:25 +03:00
Repinoid
664f04eb49
docs(plans): §10 — вопрос Опусу про безопасность универсальной правки графа генератора (5 сервисов с modify-only)
2026-09-24 10:00:57 +03:00
Repinoid
602b27ee1a
docs(plans): ревью Opus по плану — §9 (ответы на 5 вопросов, count строкой, обязательный follow-up по генератору)
2026-09-24 09:55:02 +03:00
Repinoid
97d5ca818e
docs(plans): план двух ресурсов-модификаторов (nubes_vc_org_ip_allocation, nubes_vc_nsxt_snat) + вопросы на ревью
2026-09-24 09:32:55 +03:00
Repinoid
bccf8f7320
docs(notes): раунд 2 Q&A с Opus (владелец параметра, массив vs элемент, keep_on_destroy, deprecated-переход, тип атрибута)
2026-09-24 09:31:10 +03:00
Repinoid
129dab97a0
docs(notes): Q&A с Opus по дизайну ресурсов-модификаторов + замечания к ответам
2026-09-24 09:29:22 +03:00
Repinoid
75700a92da
docs(notes): исправлен ложный факт «схема только из create» в CHAT_RESUME_IAC (loader.go:96 мержит create+modify)
2026-09-24 08:48:54 +03:00
Repinoid
51ff9b3751
docs(notes): разбор fresh-create HAR — state после create (vIPConfigure=[{}], ipSpaceName только в modify)
2026-09-24 08:48:54 +03:00
Repinoid
f7fffb9ed7
refactor: разложить рабочие материалы по NOTES/ и HOW_TO/, корневой README — карта проекта
...
- NOTES/: 10_plans, 20_prompts, 30_analysis, 40_chat_summaries, 60_reference + README в каждой папке
- HOW_TO/: все общие инструкции (сборка/заливка, DevOps-ранбук, добавление сервиса, миграция, генерация доков) + индекс «что нужно -> какой файл»
- новый README.md: карта проекта, пайплайн, стенды, реестр, запреты/грабли
- HOWTO-UPLOAD.md: исправлена легаси-схема версий (prod=1.*, dev=2.*, test=3.*)
- DEVOPS_BUILD_PIPELINE.md: пути скриптов -> TOOLS/scripts, universal_rebuild/main.go -> provider/main.go
- howitwasdone.md / MIGRATION_PLAN_FOR_AGENT.md: пометки о соответствии старых путей
- внутри перенесённых файлов обновлены ссылки на новые пути
2026-09-24 07:51:38 +03:00
Repinoid
2d8e435dd4
docs: пометить отменённый заход модификаторов как LEGACY + исправить ложные факты
...
- баннеры «ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО» на 4 файла HISTORY/OPUS/2026-09-22_modifier_* и docs/60_strategy/modifier_resources_ideology_and_specification.md
- vIPConfigure: replace-семантика, НЕ накопительная (по тесту docs/ORG_IP_MODIFIER_TEST_2026-09-22.md)
- обновлены ссылки на перенесённые материалы (docs/... -> NOTES/..., HOW_TO/...)
2026-09-24 07:51:25 +03:00
Repinoid
d93ff66482
chore: save current changes
2026-09-24 07:25:27 +03:00
Repinoid
a96e38fb1e
chore: save current changes
2026-09-23 19:23:31 +03:00
Repinoid
d78573de45
refactor(fullpipe): убрать зависимость от модификаторов (org_ips.tf, edge_network.tf) — чистые ресурсы vdc+nsxt
2026-09-23 08:55:26 +03:00
Repinoid
eaa4593622
chore(fullpipe): bump провайдера 2.0.16 -> 2.0.17 (чистая генерация без модификаторов)
2026-09-23 08:51:01 +03:00
Repinoid
a5a5f83730
chore(dev): bump провайдера 2.0.16 -> 2.0.17 (чистая генерация без модификаторов)
2026-09-23 08:46:32 +03:00
Repinoid
20ea79a489
docs(modifier): анализ inverse-архитектуры + промпты Опусу (глобальная архитектура оверлея)
2026-09-23 08:43:56 +03:00
Repinoid
d5dc1212ba
refactor(yaml-gen): убрать вплетение модификаторов — YAML = чистая полная выгрузка из API
2026-09-23 08:42:01 +03:00
Repinoid
016b7d246a
chore(fullpipe): bump провайдера 2.0.15 -> 2.0.16
2026-09-23 07:11:12 +03:00
Repinoid
200bf457ce
fix(gen): Update без modify перечитывает read-back поля через RefreshResourceState (устраняет устаревший state_params/ложный дрейф)
2026-09-23 07:04:02 +03:00
Repinoid
60bf218532
chore(fullpipe): bump провайдера 2.0.14 -> 2.0.15
2026-09-22 22:40:16 +03:00
Repinoid
b9fa18164c
fix(core,gen): UseStateForUnknown для Optional+Computed + live-dосылка без тихого fallback (R1+R3+A/B)
2026-09-22 22:35:45 +03:00
Repinoid
0473f80f69
chore(fullpipe): bump провайдера 2.0.13 -> 2.0.14
2026-09-22 22:10:28 +03:00
Repinoid
f62a094043
fix(fullpipe): ALB/VS/qos задаются в модификаторе vc_nsxt_network (resource vc_nsxt Update — no-op)
2026-09-22 22:07:14 +03:00
Repinoid
a011358660
fix(core): досылать незаданные modify-params из live state.params (а не paramValue формы) — устраняет сброс needEnableAVI/ALB
2026-09-22 22:04:09 +03:00
Repinoid
d33673a567
chore(fullpipe): bump провайдера 2.0.12 -> 2.0.13
2026-09-22 21:53:36 +03:00
Repinoid
e0ad8bb472
chore(dev): bump провайдера 2.0.12 -> 2.0.13
2026-09-22 21:44:59 +03:00
Repinoid
94c4c44ba4
fix(core): ShouldRemoveFromState читает deleted/404 через GetInstanceStateRaw без падения
2026-09-22 21:44:16 +03:00
Repinoid
4220f4f483
chore(fullpipe): bump провайдера 2.0.11 -> 2.0.12
2026-09-22 21:32:36 +03:00
Repinoid
c634a1c51b
docs: move root prompts
2026-09-22 21:26:26 +03:00
Repinoid
73357d0e0f
fix(gen): bt как функция в шаблоне modifier + обновить описание 2.0.12
2026-09-22 21:22:56 +03:00
Repinoid
bd46d11155
test(core,gen): unit-тесты modifierDesiredEqualsCurrent и ValidateSpec modifier
2026-09-22 21:20:43 +03:00
Repinoid
6a722e49cf
feat(yaml): реестр исключений модификаторов (delete_strategy/idempotency/delete_params)
2026-09-22 21:17:09 +03:00
Repinoid
6b0378cc0d
refactor(gen): шаблон modifier — reconcile(override), Delete стратегия, idempotency-вызов
2026-09-22 21:17:09 +03:00
Repinoid
25e988886d
feat(core): modifierDesiredEqualsCurrent + RunInstanceOperationUniversalByIdempotent + RunOperationByCodeIdempotent
2026-09-22 21:13:56 +03:00
Repinoid
17a803836a
refactor(core): вынести JSON-эквивалентность в core/jsonutil (+реэкспорт в resources_core)
2026-09-22 21:10:13 +03:00
Repinoid
8e24f8107e
feat(gen): GenModifier расширение (DeleteStrategy/Idempotency/DeleteParams) + LoadSpecs + ValidateSpec
2026-09-22 21:07:15 +03:00
Repinoid
6e297cc649
feat(lib): delete_strategy/idempotency/delete_params в OperationSpec (+DeleteParam)
2026-09-22 21:03:11 +03:00