3.4 KiB
Language / Язык: English | Русский
Архитектура
Цели
vmware-api-simulator — stateful лабораторный эмулятор vSphere (Automation REST +
VIM SOAP). Главная цель дизайна — практическая совместимость клиентов:
сессии, inventory, жизненный цикл VM, обходы PropertyCollector, задачи,
stubs tagging/content library и роли AuthZ реализованы поверх большого
синтетического datastore, чтобы инструменты вроде curl, govc-подобных
потоков, pyvmomi и Terraform могли прогонять типовые пути без реального
vCenter.
Catalog majors 6–9 соответствуют floors vSphere 7.0 / 7.0U3 / 8.0 / 8.0U2.
Hot-swap меняет каталог только для browse/evidence в Web UI — он не
гейтит живые маршруты. Опциональный stub Proxmox /api2/* остаётся за
ENABLE_PVE_STUB (по умолчанию выключен).
Контекст системы
flowchart LR
Client["API clients<br/>pyvmomi / Terraform / govc / REST SDKs"]
Admin["Lab operator"]
UI["Web lab UI"]
API["FastAPI application"]
Gateway["HTTPS gateway :443"]
Contract["vSphere contract matrix"]
Domain["vsphere domain + inventory"]
DB[(PostgreSQL)]
Obs["Logs / Prometheus / OpenTelemetry"]
Client -->|"/api /rest /sdk"| Gateway
Gateway --> API
UI --> Gateway
Admin -->|"seed / migrate"| API
API --> Contract
API --> Domain
Domain --> DB
API --> Obs
Плоскости
| Плоскость | Путь | Заметки |
|---|---|---|
| Automation REST | /api, /rest |
Заголовок сессии vmware-api-session-id |
| VIM SOAP | /sdk |
Подмножество PropertyCollector + VM tasks |
| Lab UI helpers | /ui/api/* |
Каталог, demo seed, совместимость |
| Опциональный PVE stub | /api2/* |
Выкл., пока ENABLE_PVE_STUB=true |
Модель данных
Inventory живёт в vsphere_objects (MOID, типы, props JSON, parent-ссылки).
Sessions, credentials, tasks, tags, libraries, snapshots и permissions —
соседние таблицы (миграции 009_vsphere.sql, 010_vsphere_platform.sql).
DB-backed Automation stubs используют vsphere_api_state (011); сессии
transfer content library и строки HttpNfcLease — в vsphere_transfer_sessions /
vsphere_nfc_leases (012); views/tokens PropertyCollector и console tickets —
в vsphere_pc_state / vsphere_console_tickets (013).
Профили seed (small / large / big) строят детерминированный
кластер — по умолчанию large это 10 hosts / 1000 VMs (big = 20 / 2000).
AuthZ
Credentials отображаются в roles → privilege sets. Мутирующие обработчики
используют require_privilege(...); пути чтения — require_read. SOAP Login
выдаёт cookie, совместимый с VIM-сессиями.