# Гибридный lab-набор pulumi для vmware-api-simulator Гибрид под `pulumi-tests/`: 1. Официальный [`pulumi-vsphere`](https://www.pulumi.com/registry/packages/vsphere/) (SOAP/VIM через govmomi) 2. Полная REST-матрица `IMPLEMENTED` × majors **6–9** (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 6–9 (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×6–9 + 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.*`.