Initial commit: stateful OpenStack API laboratory simulator.

Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm
packaging, API contract packs, and pytest/Pulumi coverage labs.
This commit is contained in:
2026-07-18 04:26:48 +03:00
commit 6033967e6a
509 changed files with 464404 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
**Language / Язык:** [English](../api-surface.md) | [Русский](api-surface.md)
# Поверхность API
## Surface-complete пакеты
Каждый пакет серии OpenStack перечисляет операции **method + path**. При старте
каждая уникальная пара `(method, path)` регистрируется как отдельный маршрут FastAPI
(`os-contract:…`), в стиле Proxmox. Stateful-обработчики из специализированных
модулей ищутся через `HandlerRegistry`; всё остальное уходит в schema-движок
(лабораторный JSON `os_api_objects`).
| Series | Services | Operations (approx.) |
|---|---|---|
| Yoga | 28 | ~1060 |
| Antelope | 28 | ~1108 |
| Caracal | 28 | ~1196 |
| Dalmatian | 28 | ~1357 |
Авторитетные числа: [api_coverage.md](api_coverage.md).
## Handlers vs schema fallback
| Слой | Сервисы / ресурсы |
|---|---|
| **Специализированные handlers** | Keystone tokens/catalog, Nova servers/flavors/keypairs/…, Neutron nets/ports/…, Glance images, Cinder volumes, Heat stacks, Swift, Ironic nodes, Octavia LBs, Placement RPs |
| **Schema fallback** | Остальные коллекции пакета (Barbican, Manila, Designate, Magnum, …), включая вложенные пути |
## Microversions
Заголовки вроде `OpenStack-API-Version: compute 2.79` и
`X-OpenStack-Nova-API-Version` принимаются и фильтруются по метаданным пакета.
Переопределения можно задать в Web UI Environment drawer.
## Actions
Nova-style `POST /servers/{id}/action` и аналогичные ops пакета `kind=action`
обрабатываются schema/action-путём (обновление power state для типичных actions).
## Ошибки
Ошибки в форме OpenStack (`OpenStackError`) с `code`, `title`, `message`.
Неизвестные маршруты, отсутствующие в активном contract-пакете, возвращают
стандартный FastAPI `404`.