Prepare 0.1.0 for lab release: durable handlers, HTTP Compose, CI, and pulumi-tests.
- Harden DB-backed handlers and seed profiles; align client wire shapes for cluster resources, QEMU config, and node SSL fields - Serve plain HTTP on Compose :8006; keep TLS optional (--profile tls) and terminate HTTPS at Kubernetes Ingress - Add pulumi-tests (full contract surface majors 6–9 + BPG lifecycle) and make pulumi-tests - Ship bilingual docs, CHANGELOG, SECURITY, CONTRIBUTING, and GitHub Actions (make ci + Compose/Helm validation)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
**Language / Язык:** [English](../../domains/README.md) | [Русский](README.md)
|
||||
|
||||
# Руководства по доменам
|
||||
|
||||
Эти страницы описывают устойчивую семантику по областям API. Для исчерпывающих
|
||||
списков методов используйте каталог Web UI или OpenAPI (`/docs`) для активной
|
||||
major-версии — заявленное покрытие составляет **100%** для PVE 6–9.
|
||||
|
||||
| Руководство | Темы |
|
||||
|---|---|
|
||||
| [Core и кластер](core-cluster.md) | version, nodes, cluster resources/options/status |
|
||||
| [Access](access.md) | users, groups, roles, ACL, realms, tokens, TFA, OpenID |
|
||||
| [QEMU](qemu.md) | guests, power, disks, snapshots, clone/migrate, agent |
|
||||
| [LXC](lxc.md) | containers and parallel lifecycle operations |
|
||||
| [Storage и backup](storage-backup.md) | storages, content, vzdump / backup jobs |
|
||||
| [Firewall](firewall.md) | cluster / node / guest firewall objects |
|
||||
| [HA](ha.md) | groups, resources, status |
|
||||
| [Ceph](ceph.md) | simulated Ceph configuration and status |
|
||||
| [Pools](pools.md) | pools and membership |
|
||||
| [SDN](sdn.md) | zones, VNets, subnets, controllers, IPAM |
|
||||
| [Cluster extras](cluster-extras.md) | notifications, ACME, mapping, metrics servers |
|
||||
| [Tasks](tasks.md) | UPID workers, status, logs |
|
||||
|
||||
## Карта персистентности
|
||||
|
||||
- Guests / HA / storage / identity → нормализованные таблицы
|
||||
- Свободная конфигурация кластера → `clusters.metadata` jsonb
|
||||
- Операции на уровне узла (network, disks, apt, …) → `nodes.metadata` под ключом `ops`
|
||||
@@ -0,0 +1,21 @@
|
||||
**Language / Язык:** [English](../../domains/access.md) | [Русский](access.md)
|
||||
|
||||
# Access
|
||||
|
||||
Устойчивая идентификация и авторизация: users, groups, roles, ACL entries,
|
||||
realms, passwords, API tokens, permissions queries, tickets, TFA, OpenID,
|
||||
VNC tickets.
|
||||
|
||||
## Основное
|
||||
|
||||
- Ticket login и CSRF — см. [Authentication](../authentication.md).
|
||||
- При создании token секрет возвращается один раз; в хранилище сохраняются только
|
||||
хеши.
|
||||
- Наследование ACL и пересечение привилегий token ∩ owner.
|
||||
- Состояние realm / TFA / OpenID **локальное**; живые вызовы каталога или IdP не
|
||||
выполняются.
|
||||
|
||||
## Предзаполненные персоны
|
||||
|
||||
`root@pam`, `auditor@pve`, `operator@pve`, `storage@pve` — пароли и tokens см. в
|
||||
руководстве по authentication.
|
||||
@@ -0,0 +1,9 @@
|
||||
**Language / Язык:** [English](../../domains/ceph.md) | [Русский](ceph.md)
|
||||
|
||||
# Ceph
|
||||
|
||||
Пути API, связанные с Ceph, сохраняют симулированное состояние кластера, pool,
|
||||
OSD и monitor. Они не обращаются к живому кластеру Ceph.
|
||||
|
||||
Устаревшие алиасы путей (например, исторические написания `ceph/pools`) мапятся
|
||||
на общие handlers, чтобы старые major-версии оставались полностью маршрутизируемыми.
|
||||
@@ -0,0 +1,13 @@
|
||||
**Language / Язык:** [English](../../domains/cluster-extras.md) | [Русский](cluster-extras.md)
|
||||
|
||||
# Cluster extras
|
||||
|
||||
Дополнительные домены на уровне кластера с устойчивыми handlers:
|
||||
|
||||
- **Notifications** — состояние конфигурации endpoints и targets
|
||||
- **ACME** — симуляция account/plugin/certificate (без реальной регистрации в CA)
|
||||
- **Mapping** — PCI / USB / resource mappings
|
||||
- **Metrics servers** — симуляция конфигурации и экспорта PVE metrics-server
|
||||
- **Custom CPU models** и массовые guest actions — как заявлено в контракте
|
||||
|
||||
Точные пути для активной major-версии смотрите в каталоге Web UI.
|
||||
@@ -0,0 +1,25 @@
|
||||
**Language / Язык:** [English](../../domains/core-cluster.md) | [Русский](core-cluster.md)
|
||||
|
||||
# Core и кластер
|
||||
|
||||
## Version
|
||||
|
||||
`GET /version` отражает `source_version` **активного** контракта (cold-start
|
||||
snapshot или hot-swapped major).
|
||||
|
||||
## Nodes
|
||||
|
||||
- Endpoints списка и статуса устойчивы и формируются из seeded / созданных nodes.
|
||||
- Имя node по умолчанию в seed-профиле `small`: **`pve01`**.
|
||||
- Операционные мутации node (network, apt, disks, services, DNS/time/hosts,
|
||||
certificates, …) сохраняются в `nodes.metadata.ops`.
|
||||
|
||||
## Cluster
|
||||
|
||||
- `/cluster/resources` и связанные inventory views читают guests и storages из
|
||||
PostgreSQL.
|
||||
- Cluster options, status, tasks, logs, replication, config/join helpers
|
||||
сохраняют cluster metadata и связанные таблицы.
|
||||
|
||||
Работает для всех заявленных методов на major 6–9 для этих путей. Используйте
|
||||
каталог Web UI, чтобы проверить различия параметров между версиями.
|
||||
@@ -0,0 +1,10 @@
|
||||
**Language / Язык:** [English](../../domains/firewall.md) | [Русский](firewall.md)
|
||||
|
||||
# Firewall
|
||||
|
||||
Конфигурация firewall на уровне cluster, node и guest — rules, aliases, IP sets,
|
||||
security groups — в основном сохраняется через cluster/node metadata и связанные
|
||||
структуры.
|
||||
|
||||
Handlers покрывают заявленную firewall-поверхность для major 6–9. Примените
|
||||
нужную major-версию перед проверкой имён полей, специфичных для версии.
|
||||
@@ -0,0 +1,10 @@
|
||||
**Language / Язык:** [English](../../domains/ha.md) | [Русский](ha.md)
|
||||
|
||||
# HA
|
||||
|
||||
High-availability groups, resources, status и rules сохраняются в cluster
|
||||
metadata / таблицах HA.
|
||||
|
||||
Используйте профиль `ha-demo` (medium + HA resource для VM 100) или demo cluster
|
||||
для более богатых fixtures. HA здесь оркестрирует **симулированное** состояние
|
||||
размещения guest — реальные nodes не изолируются (fencing не выполняется).
|
||||
@@ -0,0 +1,15 @@
|
||||
**Language / Язык:** [English](../../domains/lxc.md) | [Русский](lxc.md)
|
||||
|
||||
# LXC
|
||||
|
||||
Container API повторяют паттерны жизненного цикла QEMU там, где это заявлено
|
||||
контрактом: CRUD, power, clone/migrate, snapshots, volume operations, consoles,
|
||||
RRD и firewall objects.
|
||||
|
||||
Мутации сохраняются в нормализованные container tables и связанные metadata.
|
||||
Асинхронные пути возвращают UPID по той же модели leased-worker, что и QEMU.
|
||||
|
||||
Seed-профили:
|
||||
|
||||
- `small` — CT `200` на `pve01`
|
||||
- `medium` / `large` / `demo-cluster` — множество containers
|
||||
@@ -0,0 +1,6 @@
|
||||
**Language / Язык:** [English](../../domains/pools.md) | [Русский](pools.md)
|
||||
|
||||
# Pools
|
||||
|
||||
Pool CRUD и membership ресурсов полностью покрыты и устойчивы. Seed `medium`
|
||||
включает development pool для экспериментов с membership.
|
||||
@@ -0,0 +1,19 @@
|
||||
**Language / Язык:** [English](../../domains/qemu.md) | [Русский](qemu.md)
|
||||
|
||||
# QEMU
|
||||
|
||||
Полная contract-поверхность для QEMU guests на активной major, включая:
|
||||
|
||||
- Create / sync & async config update / delete (UPID для async)
|
||||
- Power: start, stop, shutdown, reboot, reset, suspend, resume
|
||||
- Явная state machine + per-VM PostgreSQL lock
|
||||
- Snapshots (create/delete/rollback как tasks)
|
||||
- Clone и local migration (UPID)
|
||||
- Disk resize (sync; shrink отклоняется) и disk move (task)
|
||||
- Pending config view
|
||||
- Guest agent read-only subset (info, OS/hostname, network, time, ping) при
|
||||
`agent=1` и запущенном guest
|
||||
- Cloud-init, consoles, RRD, guest firewall objects — как заявлено в контракте
|
||||
|
||||
Индексированные поля контракта, такие как `scsi[n]`, принимают конкретные имена
|
||||
(`scsi0`, …). Неизвестные version-dependent parameters сохраняются в JSONB.
|
||||
@@ -0,0 +1,10 @@
|
||||
**Language / Язык:** [English](../../domains/sdn.md) | [Русский](sdn.md)
|
||||
|
||||
# SDN
|
||||
|
||||
Handlers software-defined networking покрывают заявленные zones, VNets, subnets,
|
||||
controllers, IPAM, DNS, fabrics, locks и связанные dry-run/rollback операции для
|
||||
активной major.
|
||||
|
||||
Состояние локально в базе симулятора. Переключение major 6–9 меняет набор SDN
|
||||
methods на wire; все заявленные реализованы.
|
||||
@@ -0,0 +1,18 @@
|
||||
**Language / Язык:** [English](../../domains/storage-backup.md) | [Русский](storage-backup.md)
|
||||
|
||||
# Storage и backup
|
||||
|
||||
## Storage
|
||||
|
||||
- Cluster и node storage inventories сохраняются в нормализованных storage tables.
|
||||
- Content listings и мутации обновляют `storage_contents` (и связанные строки).
|
||||
- Seed `broken-storage` помечает `local-lvm` недоступным для тестирования сбоев.
|
||||
|
||||
## Backup
|
||||
|
||||
- Backup jobs, metadata и task-пути в стиле `vzdump` создают устойчивые task rows
|
||||
и backup records.
|
||||
- Workers выполняют leased backup tasks аналогично guest operations.
|
||||
|
||||
Реальные удалённые backup targets не вызываются; состояние объектов остаётся
|
||||
внутри PostgreSQL.
|
||||
@@ -0,0 +1,25 @@
|
||||
**Language / Язык:** [English](../../domains/tasks.md) | [Русский](tasks.md)
|
||||
|
||||
# Tasks
|
||||
|
||||
Долгие операции возвращают **UPID** в стиле Proxmox. Task rows, events,
|
||||
опциональные resource locks и idempotency metadata фиксируются вместе.
|
||||
|
||||
## Паттерн для клиента
|
||||
|
||||
1. `POST`/`DELETE` mutation → прочитать UPID из `data`
|
||||
2. Опрашивать `GET /nodes/{node}/tasks/{upid}/status` до завершения
|
||||
3. При необходимости запросить `.../log`
|
||||
|
||||
## Workers
|
||||
|
||||
- Claim через `FOR UPDATE SKIP LOCKED`
|
||||
- Возобновляемые leases (`TASK_LEASE_SECONDS`)
|
||||
- Progress + append-only logs
|
||||
- Recovery после сбоя процесса
|
||||
|
||||
Длительность симуляции учитывает `SIMULATION_TIME_SCALE`. Безопасность lease
|
||||
worker использует wall-clock time, чтобы ускоренный сценарий не нарушал
|
||||
семантику распределённого claim.
|
||||
|
||||
См. [API surface](../api-surface.md) и [Operations](../operations.md).
|
||||
Reference in New Issue
Block a user