Expand lab seed tiers, OpenAPI PARAMS, and console DATA/Params UX.
This commit is contained in:
+23
-58
@@ -2,77 +2,42 @@
|
||||
|
||||
Гибрид под `pulumi-tests/`:
|
||||
|
||||
1. Официальный [`pulumi-vsphere`](https://www.pulumi.com/registry/packages/vsphere/) (SOAP/VIM через govmomi)
|
||||
2. Полная REST-матрица `IMPLEMENTED` × majors **6–9** (deep + stub)
|
||||
1. **Layer A (обязателен для «100%»)** — HTTP contract matrix: все `IMPLEMENTED`
|
||||
REST `verb+path` × majors **6–9**, плюс синтетический **HEAD** на каждый GET
|
||||
2. **Layer B (smoke / lifecycle)** — официальный
|
||||
[`pulumi-vsphere`](https://www.pulumi.com/registry/packages/vsphere/)
|
||||
3. Deep REST CRUD (session / folder / tag / content library / VM)
|
||||
4. Все SOAP-операции из `/sdk/vimService.wsdl`
|
||||
4. SOAP-операции из `/sdk/vimService.wsdl` (без нового SOAP universe)
|
||||
|
||||
Одним `pulumi-vsphere` закрыть ~1092 REST `verb×path` нельзя — HTTP-матрица обязательна для полной уверенности.
|
||||
Одним `pulumi-vsphere` закрыть ~1092 REST `verb×path` нельзя — **100% = HTTP-матрица**
|
||||
(`coverage probed/declared`, `critical=0`), а не число provider-ресурсов.
|
||||
|
||||
## Критерии pass
|
||||
## Критерии pass (Layer A)
|
||||
|
||||
| Класс | Правило |
|
||||
|-------|---------|
|
||||
| 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’ы |
|
||||
| Проверка | Правило |
|
||||
|----------|---------|
|
||||
| Declared | `methods_for_major(M)` минус session DELETE, плюс `HEAD` на каждый GET |
|
||||
| Probed | Ровно один auth’d probe на каждый declared (`probed == declared`) |
|
||||
| Critical | `0` — нет 5xx/501; нет `"stub": true` / пустого тела на inventory-critical GET (major 9) |
|
||||
| Coverage | `{probed - critical}/{declared}` (aggregate + per major) |
|
||||
| Verb histogram | Включая `HEAD` |
|
||||
|
||||
## Что запускается
|
||||
|
||||
| Кейс | Слой | Заметки |
|
||||
|------|------|---------|
|
||||
| `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`.
|
||||
| `PU-INV` … `PU-TAG` | B · pulumi-vsphere | Lifecycle / inventory smoke |
|
||||
| `PU-REST` | **A · HTTP matrix** | `IMPLEMENTED` × 6–9 + HEAD (smoke: major 9) |
|
||||
| `PU-CRUD` / `PU-SOAP` | extras | Deep CRUD + существующий SOAP |
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
Из **корня репозитория**:
|
||||
|
||||
```bash
|
||||
make pulumi-tests # полный гибрид
|
||||
make pulumi-tests-smoke # PU-INV + REST smoke на одном major
|
||||
make pulumi-tests-smoke # PU-INV + Layer A major-9
|
||||
```
|
||||
|
||||
Или из этой директории:
|
||||
|
||||
```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.*`.
|
||||
Шлюз (в compose): `https://api-gateway`. Хост-алиас: `127.0.0.1:28443`
|
||||
(не занимает `https://localhost` / `:18443` основного lab — после тестов
|
||||
`make down`).
|
||||
Seed: `small`. Артефакты: `rest.coverage_line`, `rest.critical`, `rest.by_verb`.
|
||||
|
||||
Reference in New Issue
Block a user