Initial commit: VMware vSphere API simulator scaffold.

Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
This commit is contained in:
2026-07-18 04:42:11 +03:00
commit f8d3cbdd59
422 changed files with 361335 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# Гибридный lab-набор pulumi для vmware-api-simulator
Гибрид под `pulumi-tests/`:
1. Официальный [`pulumi-vsphere`](https://www.pulumi.com/registry/packages/vsphere/) (SOAP/VIM через govmomi)
2. Полная REST-матрица `IMPLEMENTED` × majors **69** (deep + stub)
3. Deep REST CRUD (session / folder / tag / content library / VM)
4. Все SOAP-операции из `/sdk/vimService.wsdl`
Одним `pulumi-vsphere` закрыть ~1092 REST `verb×path` нельзя — HTTP-матрица обязательна для полной уверенности.
## Критерии pass
| Класс | Правило |
|-------|---------|
| REST GET (inventory / deep) | 2xx, непустое тело, без `"stub": true` на critical-путях major 9 |
| REST stubs (universe) | нет 5xx/501; ответ есть; в отчёте как `stub` (не durable CRUD) |
| REST deep CRUD | create → GET nonempty → update (если есть) → delete → GET missing |
| SOAP WSDL (~45) | POST `/sdk` без 5xx; Create/Power/Clone/Destroy — проверка inventory |
| pulumi-vsphere | существующие кейсы + nonempty export’ы |
## Что запускается
| Кейс | Слой | Заметки |
|------|------|---------|
| `PU-INV` | pulumi-vsphere | Inventory data sources |
| `PU-FOLDER` | pulumi-vsphere | Folder create/destroy |
| `PU-VM` | pulumi-vsphere | VirtualMachine create/destroy |
| `PU-TAG` | pulumi-vsphere | TagCategory + Tag |
| `PU-REST` | REST matrix | `IMPLEMENTED` × majors 69 (smoke: только major 9) |
| `PU-CRUD` | REST CRUD | Session, folder, tagging, content library, VM |
| `PU-SOAP` | SOAP | Все WSDL ops |
Артефакты: HTML + JSON + JUnit в volume `lab-reports`. В JSON:
`rest.total` / `rest.failed`, `crud.failed`, `soap.failed`.
## Быстрый старт
Из **корня репозитория**:
```bash
make pulumi-tests # полный гибрид
make pulumi-tests-smoke # PU-INV + REST smoke на одном major
```
Или из этой директории:
```bash
cd pulumi-tests
make up
make test-pulumi # или: make test-pulumi-smoke
```
Шлюз (в compose): `https://api-gateway` (с хоста `127.0.0.1:18443`).
Seed-профиль: `small``Datacenter` / `Cluster` / `datastore1` / `VM Network` /
`web-01` / `esxi01.lab.local` / `/Datacenter/vm/production`.
## Цели Make
| Цель | Смысл |
|------|--------|
| `make test-pulumi` / `pulumi-tests` | Полный гибрид: pulumi-vsphere + REST×69 + CRUD + SOAP |
| `make test-pulumi-smoke` | `PU-INV` + REST major-9 smoke (без VM/tags/CRUD/SOAP) |
| `make up` / `down` / `seed` | Жизненный цикл lab-стека |
## Структура
```
pulumi-tests/
run_suite.py
report_html.py
lib/rest_matrix.py
lib/rest_crud.py
lib/soap_ops.py
programs/...
```
`PYTHONPATH` монтирует `/workspace` для импорта `app.vsphere.*`.