Service management (systemctl)
Objective
Add service management endpoints for controlling systemd services. This is fundamental to any OS appliance — the ability to start, stop, restart, enable, and disable services, and query their status.
API Endpoints
GET /service - List all services (with status filter)
GET /service/{name} - Get service details (status, enabled, logs)
POST /service/{name}/start - Start a service
POST /service/{name}/stop - Stop a service
POST /service/{name}/restart - Restart a service
PUT /service/{name}/enable - Enable service at boot
PUT /service/{name}/disable - Disable service at boot
Operations
service.list.get(query) — list services with statusservice.status.get(query) — get single service statusservice.start.execute(modify) — start serviceservice.stop.execute(modify) — stop serviceservice.restart.execute(modify) — restart serviceservice.enable.execute(modify) — enable at bootservice.disable.execute(modify) — disable at boot
Provider
internal/provider/node/service/- Interface:
ProviderwithList(),Status(name),Start(name),Stop(name),Restart(name),Enable(name),Disable(name) - Implementation:
systemd_provider.gousingsystemctlvia cmdexec - Return type:
ServiceInfowith name, status (active/inactive/failed), enabled (true/false), description, PID, memory usage
Notes
- Filter by state (running, stopped, failed, enabled, disabled)
- Consider pagination for list endpoint
- Scopes:
service:read,service:write