Add OpenStack request-body schemas and nested console PARAM sync.

This commit is contained in:
2026-07-18 08:47:38 +03:00
parent cbd0adca91
commit ae297258b1
46 changed files with 42717 additions and 40135 deletions
+22 -7
View File
@@ -2,10 +2,10 @@
# Лаборатория Pulumi: покрытие контрактов oVirt
Suite на Pulumi Automation API, который вызывает **каждую операцию** из
**100% coverage** здесь — это **HTTP contract matrix**: каждая операция из
`contracts/ovirt/<series>/api.json` для **всех series packs** Engine, плюс
**синтетический HEAD** для каждого GET-пути (в contracts нет HEAD; Engine его
принимает).
принимает). Это **не** число ресурсов Pulumi provider.
| Series | Операций (примерно) |
|--------|--------------------:|
@@ -16,10 +16,22 @@ make test-pulumi-smoke # выборка 3.6 + 4.5 (быстро)
make pulumi-tests # полная матрица (alias: make test-pulumi)
```
Layer B (опционально): только smoke lifecycle провайдера — не выдавать за
полноту API.
Отчёты (в `reports/`):
- `pulumi-contract-coverage.html` — сводка для человека (включая гистограмму методов)
- `pulumi-contract-coverage.json` — машиночитаемый результат
- `pulumi-contract-coverage.html` — сводка (гистограмма методов:
GET/PUT/POST/DELETE/HEAD)
- `pulumi-contract-coverage.json` — результат + `coverage`
(`probed/declared`, `critical`)
Пример pass-строки:
```text
COVERAGE 9150/9150 (critical=0)
METHODS {"DELETE":1146,"GET":2314,"HEAD":2314,"POST":2230,"PUT":1146}
```
Фильтры:
@@ -29,11 +41,14 @@ OVIRT_METHODS_FILTER=GET make pulumi-tests
SMOKE_ONLY=1 make test-pulumi-smoke
```
Все suites — **только в Docker**. Критерии pass:
Все suites — **только в Docker** (lab compose сидит **minimal** seed).
Критерии pass:
- Маршрут Engine достижим и возвращает обработанный статус (`200`/`201`/`202`/`204`,
`400`/`403`/`404`/`405`/`409`/`415`/`422`/`501`) — **не** `401` (после unload
каждой series suite заново логинится) и не транспортную / `5xx` ошибку.
- Для `200`/`201`/`202` тело ответа должно быть непустым (HEAD исключён).
- Полный прогон должен покрыть **GET, POST, PUT, DELETE и HEAD**; любые failures
или отсутствующие методы валят suite.
- Успешные **collection** GET должны возвращать **непустой** список с `id`
(пустой `[]` — дыра seed/`ov_api_objects`, чинить данные, не skip).
- Полный прогон должен покрыть **GET, POST, PUT, DELETE и HEAD**; любые failures,
отсутствующие методы или `probed != declared` валят suite (`critical=0`).