f8d3cbdd59
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.
39 lines
2.0 KiB
Markdown
39 lines
2.0 KiB
Markdown
**Language / Язык:** [English](../../domains/tasks.md) | [Русский](tasks.md)
|
||
|
||
# Tasks
|
||
|
||
Длительные операции (power, clone, relocate, snapshot, OVF deploy, guest
|
||
customize) возвращают CIS-style task id:
|
||
[`app/vsphere/domain/tasks.py`](../../../app/vsphere/domain/tasks.py),
|
||
[`app/vsphere/rest/tasks.py`](../../../app/vsphere/rest/tasks.py).
|
||
|
||
## Эндпоинты
|
||
|
||
| Метод | Путь | Заметки |
|
||
|---|---|---|
|
||
| GET | `/api/cis/tasks` | Список недавних задач (до 200 последних) |
|
||
| GET | `/api/cis/tasks/{task}` | Status, progress, `service`/`operation`, `result`/`error` |
|
||
|
||
## Паттерн клиента
|
||
|
||
1. Мутация `POST`/`DELETE` → прочитайте task id из `{ "task": "task-…" }`
|
||
(REST) или SOAP MoRef `*_Task`.
|
||
2. Опрашивайте `GET /api/cis/tasks/{task}`, пока `status` не станет
|
||
`SUCCEEDED` или `FAILED`.
|
||
3. В `result` — результат операции (например `{"vm": "vm-104"}` при
|
||
create/clone/deploy).
|
||
|
||
## Основные моменты
|
||
|
||
- Строки задач коммитятся в `vsphere_tasks` (`id`, `description`, `status`,
|
||
`service`, `operation`, `result`, `error`, `completed_at`).
|
||
- `progress` синтезируется как `50` во время выполнения и `100` в терминальном
|
||
состоянии — дробный progress этот симулятор не моделирует.
|
||
- Одно и то же хранилище задач обслуживает и REST `/api/cis/tasks`, и SOAP
|
||
task MoRefs, поэтому Terraform apply (SOAP `CreateVM_Task`) и REST-опрос
|
||
того же id видят согласованное состояние.
|
||
- Длительности симуляции учитывают `SIMULATION_TIME_SCALE`
|
||
(больше = быстрее завершение).
|
||
|
||
См. [Поверхность API](../api-surface.md) и [Эксплуатация](../operations.md).
|