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
+56 -13
View File
@@ -2,22 +2,63 @@
# Web UI
Console URL (Compose default): [http://127.0.0.1:5000/](http://127.0.0.1:5000/)
Interactive console for browsing Engine contract operations, issuing lab tokens,
sending Try-it requests, and managing seed data.
Drawer UX matches the other laboratory simulators in this family:
Compose default URL: [http://127.0.0.1:5000/](http://127.0.0.1:5000/)
(With `make up-local`, use the local UI port from your `.env`, e.g. `6080` / `7080`.)
![Console](images/web-ui/console.png)
## Workspace
| Area | Purpose |
|---|---|
| Auth | Issue lab tokens / show principal |
| API catalog | Browse contract operations for the active series |
| Coverage | Pack / handler coverage summary |
| Help | Short operator notes |
| Data | Reseed `minimal` / `demo` |
| Environment | Active series, runtime hints, **Apply pack** hot-swap |
| Endpoint picker | Searchable catalog of contract paths (Engine series pack) |
| Method tabs | `GET` / `POST` / `PUT` / `DELETE` for the selected path |
| Request body | Engine-shaped JSON sample for create/update/action |
| Params | Flattened path + body fields for quick edits |
| Response | Status + JSON tree for the last call |
| History | Recent Try-it requests (replay / restore) |
![Endpoints drawer](images/web-ui/endpoints.png)
![POST /vms with Engine-shaped body](images/web-ui/request-body.png)
![Request parameters](images/web-ui/request-params.png)
Request bodies follow the real Engine convention (root-wrapped entity or
`action`). Samples include nested refs (`cluster`, `template`, CPU topology,
storage domains) aligned with the seeded lab inventory — not a one-field stub.
![History](images/web-ui/history.png)
## Drawers
| Drawer | Purpose |
|---|---|
| Authentication | Engine SSO password grant / paste Bearer token |
| API catalog | Browse series packs; **Apply as runtime** hot-swap |
| Help → Compatibility | Declared / implemented / verified surface summary |
| Data | Reseed `minimal` / `small` / `large` / `big` |
| Environment | Runtime series + datacenter inventory overview |
![Authentication](images/web-ui/authentication.png)
Default lab principals: `admin@internal`, `ops@internal`, `developer@internal`,
`demo@internal` / `secret`. Scope: `ovirt-app-api`.
![API catalog](images/web-ui/api-catalog.png)
![Help / compatibility](images/web-ui/help-compatibility.png)
![Data presets](images/web-ui/data.png)
![Environment](images/web-ui/environment.png)
## Series hot-swap
From Environment (or UI API):
From **API catalog****Apply as runtime** (or UI API):
- `POST /ui/api/ovirt/contracts/activate` with `{"series":"4.4"}`
- `POST /ui/api/contract/apply?major=N`
@@ -26,8 +67,10 @@ This remounts the in-memory contract routes without rebuilding the image. A
process restart restores the cold-start `OVIRT_SERIES` value. See
[API versions](api-versions.md).
Branding uses oVirt blue `#0076B6` and charcoal `#1D2226`.
## Notes
The UI talks to the same simulator process as the Engine API; only the published
listener differs ([ports.md](ports.md)). OpenAPI schema:
[http://127.0.0.1:5000/docs](http://127.0.0.1:5000/docs) (also on Engine port).
- Branding uses oVirt blue `#0076B6` and charcoal `#1D2226`.
- The UI talks to the same simulator process as the Engine API; only the
published listener differs ([ports.md](ports.md)).
- OpenAPI schema: [http://127.0.0.1:5000/docs](http://127.0.0.1:5000/docs)
(also available on the Engine HTTPS port).