Reject backup jobs without paths
CI / Test (store) (pull_request) Successful in 5s
CI / Lint (pull_request) Successful in 12s
CI / Test (rest) (pull_request) Successful in 20s
CI / Build (windows/amd64) (pull_request) Successful in 8s
CI / Build (linux/amd64) (pull_request) Successful in 8s
CI / Build (linux/arm64) (pull_request) Successful in 7s
CI / Test (server-http) (pull_request) Successful in 1m36s
e2e / Playwright vs docker-compose (pull_request) Successful in 1m26s

This commit is contained in:
2026-08-22 13:42:42 +01:00
parent 25866ff102
commit 4f56b8f705
3 changed files with 38 additions and 5 deletions
@@ -6,11 +6,12 @@ Three ways to trigger one:
1. **Scheduled** — the agent's local cron fires at the time set
on the schedule.
2. **Run-now** — operator clicks **Run now** on the host detail
right rail. Posts to `/hosts/{id}/run-backup` (defaults to all
source groups) or to a per-group form for finer control.
3. **API** `POST /api/hosts/{id}/jobs` with the appropriate
payload. Same audit + dispatch path.
2. **Run-now** — operator clicks **Run now** for a specific source
group. This uses `POST /hosts/{id}/source-groups/{gid}/run`.
3. **API** — use `POST /api/hosts/{id}/source-groups/{gid}/run` for a
configured source group. The lower-level `POST /api/hosts/{id}/jobs`
backup form requires explicit paths in `args`; an empty backup is
rejected instead of dispatching a job that restic cannot run.
In every case the server creates a `jobs` row, broadcasts a
`command.run` to the host, and lands the operator on the live