Initial release of the oVirt/RHV Engine API simulator.

Stateful FastAPI lab with contract packs, Compose/Helm, Docker Hub release
targets, and Pulumi coverage across all Engine series (GET/POST/PUT/DELETE/HEAD).
This commit is contained in:
2026-07-18 04:49:28 +03:00
commit cbd0adca91
218 changed files with 246804 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
**Language / Язык:** [English](../../examples/ansible.md) | [Русский](ansible.md)
# Ansible
Используйте `ansible.builtin.uri` против Engine HTTPS:
```yaml
- name: List oVirt VMs
hosts: local
gather_facts: false
vars:
engine_api: "https://127.0.0.1/ovirt-engine/api"
tasks:
- name: GET /vms
ansible.builtin.uri:
url: "{{ engine_api }}/vms"
user: admin@internal
password: secret
force_basic_auth: true
validate_certs: false
headers:
Accept: application/json
Version: "4"
status_code: [200]
register: vms
```
Нативный suite (150 кейсов): `make test-ansible` / `make test-ansible-smoke` в
[`pulumi-tests/ansible/`](../../../pulumi-tests/README.ru.md).
+35
View File
@@ -0,0 +1,35 @@
**Language / Язык:** [English](../../examples/overview.md) | [Русский](overview.md)
# Клиенты и примеры
Используйте **inline-сниппеты** ниже и лабораторию Pulumi в
[`pulumi-tests/`](../../../pulumi-tests/README.ru.md).
## Base URL и учётные данные
| Параметр | Значение |
|---|---|
| Engine API | `https://127.0.0.1/ovirt-engine/api` |
| SSO token | `https://127.0.0.1/ovirt-engine/sso/oauth/token` |
| Web UI | `http://127.0.0.1:5000/` |
| Пользователь | `admin@internal` |
| Пароль | `secret` |
Отключите HTTP-прокси для локальных клиентов:
```bash
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy
export NO_PROXY='*'
```
## Руководства
| Руководство | Фокус |
|---|---|
| [Python requests](python-requests.md) | Сырой HTTPS Basic / OAuth |
| [Ansible](ansible.md) | Модуль `uri` против Engine |
| [Terraform](terraform.md) | Заметки по IaC |
| [Pulumi](pulumi.md) | Полное покрытие контрактов + HTML-отчёт |
| [Troubleshooting clients](troubleshooting-clients.md) | Типичные сбои клиентов |
Предварительно: `make up && make seed` (или `make seed-demo`).
+13
View File
@@ -0,0 +1,13 @@
**Language / Язык:** [English](../../examples/pulumi.md) | [Русский](pulumi.md)
# Pulumi
Лаборатория покрытия контрактов: [`pulumi-tests/pulumi/`](../../../pulumi-tests/README.ru.md).
```bash
make up && make seed
make test-pulumi-smoke
make test-pulumi
```
HTML-отчёт: `pulumi-tests/reports/pulumi-contract-coverage.html`
+43
View File
@@ -0,0 +1,43 @@
**Language / Язык:** [English](../../examples/python-requests.md) | [Русский](python-requests.md)
# Python (`requests`)
Минимальный паттерн против Engine gateway:
```python
import requests
BASE = "https://127.0.0.1/ovirt-engine/api"
AUTH = ("admin@internal", "secret")
HEADERS = {"Accept": "application/json", "Version": "4"}
r = requests.get(f"{BASE}/vms", auth=AUTH, headers=HEADERS, verify=False, timeout=60)
r.raise_for_status()
print(r.json())
```
OAuth password grant:
```python
token = requests.post(
"https://127.0.0.1/ovirt-engine/sso/oauth/token",
data={
"grant_type": "password",
"username": "admin@internal",
"password": "secret",
"scope": "ovirt-app-api",
},
verify=False,
timeout=60,
).json()["access_token"]
r = requests.get(
f"{BASE}/vms",
headers={**HEADERS, "Authorization": f"Bearer {token}"},
verify=False,
timeout=60,
)
```
Нативный suite: `make test-python` / `make test-python-smoke` в
[`pulumi-tests/`](../../../pulumi-tests/README.ru.md).
+15
View File
@@ -0,0 +1,15 @@
**Language / Язык:** [English](../../examples/terraform.md) | [Русский](terraform.md)
# Terraform
Нативный suite (150 кейсов) находится в
[`pulumi-tests/terraform/`](../../../pulumi-tests/README.ru.md):
```bash
make up && make seed
make test-terraform-smoke
make test-terraform
```
Направляйте провайдеры на Engine HTTPS с лабораторными учётными данными и
отключайте проверку TLS для self-signed сертификата Compose.
@@ -0,0 +1,38 @@
**Language / Язык:** [English](../../examples/troubleshooting-clients.md) | [Русский](troubleshooting-clients.md)
# Устранение неполадок клиентов
## Ошибки проверки TLS
Ожидаемо для self-signed сертификата Engine в Compose. Отключите проверку в
клиенте (`verify=False`, `insecure`, `validate_certs: false`).
## HTTP 401
Проверьте формат principal `user@internal` и пароль `secret`. Для OAuth укажите
`scope=ovirt-app-api`.
## Неверный host / порт
В Compose Engine по умолчанию на **`443`** (HTTPS), UI на **`5000`** (HTTP).
Helm без своего Ingress отдаёт FastAPI на **`8080`**. См.
[ports.md](../ports.md) и [kubernetes.md](../kubernetes.md).
## Пустые списки после seed
Дождитесь `/health/ready`. Lifespan сам загружает `minimal`, если БД ещё не
`demo`. Для плотности: `make seed-demo`.
## Помехи прокси
Песочницы IDE часто подставляют прокси, ломая локальный HTTPS. Сбросьте
переменные прокси ([overview.md](overview.md)).
## Сюрпризы Version / XML
Отправляйте `Version: 4` и `Accept: application/json`, если вы намеренно не
тестируете v3 или XML.
## Неверный инструмент / suite
Предпочитайте сниппеты в этой документации или suites в `pulumi-tests/`.