docs(todo): postgresConf переведён платформой в map-fixed — зафиксировано, изменений не делал
По сообщению Виталия Зайцева (02.10.2026): «В Postgres поправил cfs-параметр postgresConf, это нужно будет учесть на всякий». В docs/TODO/postgres_conf_map_fixed.md записано: - суть: cfs-параметр postgresConf (id 792) сменил тип array-map-fixed -> map-fixed, вместо generic paramName/paramValue теперь поля log_connections/log_disconnections (off|on, default off); в провайдере это меняет атрибут postgres_conf со строки JSON на вложенный объект; - источники: новая спека generated/dev/resources_yaml/90_postgres.yaml, старая — .bak-20260930T183804Z и provider/resources_yaml/90_postgres.yaml; код — provider/internal/resources_gen/90_postgres_resource.go:99 (types.String) против generated/dev/go/90_postgres_resource.go:75-79,104; - почему критично: ломающее изменение типа атрибута для всех, у кого есть postgres_conf; - план: 01 -> 02 -> правка манифестов (TEST_STAND/CRUD/pg/postgres.tf, DEV_STAND/CRUD/postgres.tf:30, DEV_STAND/POSTGRES/nubes_postgres.tf:30, проверить PROD_STAND/*) -> 03 с новой версией -> учесть state -> правки документации и 04; - критерии готовности и связанные документы. Ничего в коде, манифестах, провайдере и на стендах не менял.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# `postgresConf`: платформа перевела параметр из `array-map-fixed` в `map-fixed`
|
||||
|
||||
Дата: 2026-10-02 | Статус: **не начато** (по указанию владельца: «ничего пока не меняй»)
|
||||
|
||||
Сообщение из чата (Виталий Зайцев, 02.10.2026 12:26):
|
||||
«В Postgres поправил cfs-параметр postgresConf, это нужно будет учесть на всякий».
|
||||
|
||||
## Что за параметр
|
||||
|
||||
`postgresConf` — cfs-параметр сервиса PostgreSQL (id **792**), дополнительные настройки серверного
|
||||
конфига. В провайдере выходит атрибутом `postgres_conf`.
|
||||
|
||||
## Что изменилось
|
||||
|
||||
| | Было | Стало |
|
||||
|---|---|---|
|
||||
| Тип параметра | `array-map-fixed` (массив объектов) | `map-fixed` (один объект) |
|
||||
| Поля | generic-пара `paramValue` (id 117) + `paramName` (id 118, значения только `log_connections` / `log_disconnections`) | конкретные поля `log_connections` (id 118), `log_disconnections` (id 117) |
|
||||
| Значения | строки, в стенде писали `"''"` | `off` \| `on`, по умолчанию `off` |
|
||||
| В Terraform | `postgres_conf = jsonencode([{ paramName = "log_connections", paramValue = "''" }])` — **строка JSON** | `postgres_conf = { log_connections = "on" }` — **вложенный объект** |
|
||||
|
||||
Источники:
|
||||
|
||||
- новая спека — `generated/dev/resources_yaml/90_postgres.yaml` (блок `postgresConf`, id 792:
|
||||
`data_type: map-fixed`, `sub_params` id 117/118);
|
||||
- старая спека — `generated/dev/resources_yaml.bak-20260930T183804Z/90_postgres.yaml` (id 792:
|
||||
`data_type: array-map-fixed`, `paramValue`/`paramName`), она же закоммичена в
|
||||
`provider/resources_yaml/90_postgres.yaml`;
|
||||
- сгенерированный код: залитый провайдер — `provider/internal/resources_gen/90_postgres_resource.go:99`
|
||||
(`PostgresConf types.String`), новая генерация — `generated/dev/go/90_postgres_resource.go:75-79`
|
||||
и `:104` (`PostgresConf *PostgresPostgresConfModel{ LogConnections, LogDisconnections }`);
|
||||
- почему важны ключи: платформа парсит значение как JSON, при неверных ключах отвечает
|
||||
`Invalid JSON String` (`HISTORY/60_stands/2026-10-01_test_crud_pg_create_failure.md:24`).
|
||||
|
||||
## Почему это критично
|
||||
|
||||
Смена **типа атрибута** (строка JSON → объект) — ломающее изменение: после заливки нового
|
||||
провайдера манифесты со старым `postgres_conf` перестанут работать. Значит, провайдер и все
|
||||
манифесты надо менять **вместе**, и предупредить тех, у кого уже есть `postgres_conf`.
|
||||
|
||||
## Что сделать (порядок)
|
||||
|
||||
1. Спеки из API: `./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/test`
|
||||
(в `generated/dev/resources_yaml` форма уже новая, но `provider/resources_yaml/90_postgres.yaml`
|
||||
старая — а её использует `TOOLS/scripts/dev-materialize.sh:28`; при работе через материализацию
|
||||
старую спеку заменить).
|
||||
2. Генерация: `./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/test`
|
||||
(читает спеки из `generated/<стенд>/resources_yaml` — `TOOLS/scripts/02_generate_resources_and_docs_v2.sh:67`).
|
||||
Заодно обновятся сгенерированные страницы (`postgres_params_create.md` и др.).
|
||||
3. Поправить манифесты (пять мест ищем по `param_name`/`paramName`):
|
||||
- `TEST_STAND/CRUD/pg/postgres.tf`;
|
||||
- `DEV_STAND/CRUD/postgres.tf:30`;
|
||||
- `DEV_STAND/POSTGRES/nubes_postgres.tf:30`;
|
||||
- `PROD_STAND/PG1/resources.tf`, `PROD_STAND/POSTGRES/resources.tf` — **проверить**: в них
|
||||
`postgres_conf` мог не использоваться, тогда правок не нужно.
|
||||
|
||||
Новый вид:
|
||||
```hcl
|
||||
postgres_conf = {
|
||||
log_connections = "off" # off | on
|
||||
log_disconnections = "off"
|
||||
}
|
||||
```
|
||||
4. Собрать и залить новую версию провайдера:
|
||||
`./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test <ver>`
|
||||
(диапазоны: test `3.*.*`, dev `2.*.*`, prod `1.*.*`; версию выбирает владелец).
|
||||
5. Учесть state стендов: там лежит старая форма
|
||||
(`TEST_STAND/CRUD/pg/terraform.tfstate:120` → `"postgresConf": "[{\"paramName\":...}]"`),
|
||||
поэтому первый `plan` покажет расхождение — либо принять modify-операцию, либо привести state.
|
||||
`apply` делает владелец.
|
||||
6. Документация: поправить ручную страницу `docs/curated/crud/three_apps.md:182` («ключи строго
|
||||
`paramName` / `paramValue`» — станет неверно), затем `04_build_and_publish_docs.sh` и публикация.
|
||||
|
||||
## Критерии готовности
|
||||
|
||||
- в манифестах всех стендов — объект `postgres_conf` с полями `log_connections`/`log_disconnections`;
|
||||
- новая версия провайдера в реестре, `terraform plan` на стенде не падает и показывает ожидаемое
|
||||
изменение только по этому параметру;
|
||||
- в документации нет упоминаний `paramName`/`paramValue` для `postgres_conf`;
|
||||
- в `VERSIONS.md` отмечено ломающее изменение (пользователям с заполненным `postgres_conf` нужно
|
||||
править манифест).
|
||||
|
||||
## Связанные документы
|
||||
|
||||
- `HISTORY/30_provider/2026-07-16_subparams_nested_terraform_attributes.md` — переход на вложенные
|
||||
атрибуты (`array-map-fixed` → `ListNestedAttribute`);
|
||||
- `HISTORY/60_stands/2026-10-01_test_crud_pg_create_failure.md` — реальный сбой с `Invalid JSON String`;
|
||||
- `HOW_TO/HOWTO_ADD_NEW_SERVICE.md:87` — таблица типов параметров (`array-map-fixed`, `map-fixed`);
|
||||
- `TEST_STAND/CRUD/README.md`, `docs/curated/crud/three_apps.md` — там описан `postgres_conf`.
|
||||
Reference in New Issue
Block a user