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:
@@ -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).
|
||||
@@ -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`).
|
||||
@@ -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`
|
||||
@@ -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).
|
||||
@@ -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/`.
|
||||
Reference in New Issue
Block a user