Start a durable RSVP-TE group operation
/tasks/{id}/rsvp/batch/startSaves 1-64 members before dispatch and returns 202. Ordinary groups send Start, Stop, PCEP delegation, guarded MBB or periodic MBB once. leaf-pair-prune/graft preflight exactly one primary and detour P2MP tree, then dispatch in a safe order; a failed or uncertain first action leaves the second not-sent. path-apply carries distinct per-LSP Path members; topology-apply carries complete creates or receipt-guarded deletes. mixed-apply can combine Path, topology and per-agent stream create/delete members (64 total); stream deletes run first, then Path, topology and stream creates. Each stream member supplies its own task-owned agent and runtime generation. The parent persists each child only after native receipt and profile CAS. A lost reply is recovered by query; an interrupted Core never resends a mutation. Explicit resume copies only a proven unsent suffix.
Контракт
Параметр | Значение |
|---|---|
| Раздел | tasks |
| Авторизация | CookieAuth |
| Принимает | application/json |
| Возвращает | application/json |
Параметры
2 параметров
Имя | Где | Обязательный | Тип | Описание |
|---|---|---|---|---|
| id | path | да | integer | Canonical positive task ID |
| request | body | да | object | Agent, operation ID, profile revision, action, up to 64 identities or Path/topology/stream members, and action options; at most 64 KiB |
{ "action": "start", "admin-members": [ { "enabled": true, "identity": { "accept-detour": true, "endpoint": "<string>", "ext-tunnel-id": "<string>", "instance": 0, "kind": "p2p", "lsp-id": 0, "p2mp-id": 0, "send-detour": true, "sender": "<string>", "tunnel-id": 0 }, "ingress": true } ], "agent": "<string>", "expected-profile-revision": "<string>", "identities": [ { "accept-detour": true, "endpoint": "<string>", "ext-tunnel-id": "<string>", "instance": 0, "kind": "p2p", "lsp-id": 0, "p2mp-id": 0, "send-detour": true, "sender": "<string>", "tunnel-id": 0 } ], "operation-id": "<string>", "options": {}, "path-members": [ { "identity": { "accept-detour": true, "endpoint": "<string>", "ext-tunnel-id": "<string>", "instance": 0, "kind": "p2p", "lsp-id": 0, "p2mp-id": 0, "send-detour": true, "sender": "<string>", "tunnel-id": 0 }, "mbb": { "expected-mbb-attempts": 0, "lsp-id-end": 0, "lsp-id-start": 0, "new-lsp-id": 0, "retire-delay-ms": 0, "setup-timeout-ms": 0, "switch-delay-ms": 0 }, "path": {} } ], "runtime-generation": "<string>", "stream-members": [ { "action": "create", "agent": "<string>", "expected-create-operation-id": "<string>", "flow-id": 0, "identity": { "accept-detour": true, "endpoint": "<string>", "ext-tunnel-id": "<string>", "instance": 0, "kind": "p2p", "lsp-id": 0, "p2mp-id": 0, "send-detour": true, "sender": "<string>", "tunnel-id": 0 }, "rsvp-wire-flow-id": 0, "runtime-generation": "<string>", "stream": {}, "stream-name": "<string>" } ], "topology-members": [ { "action": "create", "expected-create-operation-id": "<string>", "identity": { "accept-detour": true, "endpoint": "<string>", "ext-tunnel-id": "<string>", "instance": 0, "kind": "p2p", "lsp-id": 0, "p2mp-id": 0, "send-detour": true, "sender": "<string>", "tunnel-id": 0 }, "lsp": {} } ] }
Ответы
8 ответов
Статус | Описание | Тип |
|---|---|---|
202 | Persisted operation | object |
400 | Invalid request or identity | object |
401 | Session required | object |
403 | Agent not registered for this task | object |
404 | Task not found | object |
409 | Task, profile or operation conflict | object |
500 | Database failure | object |
502 | Invalid registered agent address | object |
{ "action": "<string>", "agent": "<string>", "created-at": "<string>", "cursor": 0, "members": [ { "agent": "<string>", "child-operation-id": "<string>", "identity": {}, "mode": "<string>", "observed-at": "<string>", "phase": "<string>", "reason": "<string>", "runtime-generation": "<string>", "status": "<string>" } ], "operation-id": "<string>", "profile-revision": "<string>", "resume-of": "<string>", "status": "<string>", "task-id": 0, "terminal": true, "updated-at": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }{ "data": {}, "error": "<string>" }