Files
inecs f8d3cbdd59 Initial commit: VMware vSphere API simulator scaffold.
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
2026-07-18 04:42:11 +03:00

38 lines
1.5 KiB
Markdown

**Language / Язык:** [English](tasks.md) | [Русский](../ru/domains/tasks.md)
# Tasks
Long-running operations (power, clone, relocate, snapshot, OVF deploy, guest
customize) return a CIS-style task id:
[`app/vsphere/domain/tasks.py`](../../app/vsphere/domain/tasks.py),
[`app/vsphere/rest/tasks.py`](../../app/vsphere/rest/tasks.py).
## Endpoints
| Method | Path | Notes |
|---|---|---|
| GET | `/api/cis/tasks` | List recent tasks (most recent 200) |
| GET | `/api/cis/tasks/{task}` | Status, progress, `service`/`operation`, `result`/`error` |
## Client pattern
1. `POST`/`DELETE` mutation → read the task id from `{ "task": "task-…" }`
(REST) or the SOAP `*_Task` MoRef.
2. Poll `GET /api/cis/tasks/{task}` until `status` is `SUCCEEDED` or `FAILED`.
3. `result` holds operation-specific output (for example `{"vm": "vm-104"}`
on create/clone/deploy).
## Highlights
- Task rows commit to `vsphere_tasks` (`id`, `description`, `status`,
`service`, `operation`, `result`, `error`, `completed_at`).
- `progress` is synthesized as `50` while running and `100` once terminal —
this simulator does not model fractional progress.
- The same task store backs both REST `/api/cis/tasks` and SOAP task MoRefs,
so a Terraform apply (SOAP `CreateVM_Task`) and a REST poll of the same id
see consistent state.
- Simulation durations honour `SIMULATION_TIME_SCALE`
(higher = faster simulated completion).
See [API surface](../api-surface.md) and [Operations](../operations.md).