feat(web): add systemd_control helper for worker unit management

Thin async wrapper over `systemctl` — never shell=True, always
create_subprocess_exec. Unit names are built from
`decnet-<validated-name>.service`; the regex check is defence in depth
on top of the router-level KNOWN_WORKERS validation.

Exposes start / stop / is_active / list_installed; last is cached for
30s to keep the Workers panel cheap under REFRESH spam. On non-systemd
hosts list_installed returns an empty set, so the UI renders with
every row marked not-installed instead of 500-ing.
This commit is contained in:
2026-04-22 14:08:35 -04:00
parent a41ef52249
commit fcaac648a4
4 changed files with 269 additions and 0 deletions

View File