wrolpi/controller/lib
Roland e51e5fb2fb controller: group services into Core vs Optional & Maintenance
The Controller listed every wrolpi-* service in one flat table, which was
confusing for new users who couldn't tell always-on infrastructure from
one-off/dev/maintenance units.

Services are now split into two groups computed once in the backend and
exposed as `service.group`:

* Core Services      - persistent services enabled at boot (api, app, caddy,
                       kiwix, ...), the normal running system.
* Optional & Maintenance - one-off/dev/maintenance tasks (bootstrap, repair,
                       upgrade, *-dev, discovered wrolpi-*), plus persistent
                       services the user has disabled at boot (e.g. Samba with
                       no shares configured).

Rule: core iff kind == "persistent" and enabled; otherwise optional. Group
membership only changes when the user toggles Boot, never on start/stop or
polling, so rows stay put. Within each group, failed/stopped services sort
first so problems stay visible.

Feature parity across all three render paths: the React ControllerPage, the
server-side Jinja template, and the client-side poll refresh. Docker
containers have no group field and fall back to a single ungrouped list.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 19:46:13 -06:00
..
__init__.py Creating Controller service which will control WROLPi services, admin, SMART, disks, and status. nginx will fallback to Controller UI when React UI is unavailable (such as during upgrades). 2025-12-15 15:48:40 -07:00
admin.py Hotspot: address review comments. 2026-07-04 09:04:17 -06:00
config.py Controller: hide Root CA download until drive is ready 2026-07-18 13:44:35 -06:00
disks.py Disks: allow persisting the primary mount from the UI; clean NTFS before mounting. 2026-07-05 14:50:56 -06:00
docker_services.py Remove stale Postgres references after SQLite cutover. 2026-07-18 13:28:54 -06:00
fstab.py Disks: allow persisting the primary mount from the UI; clean NTFS before mounting. 2026-07-05 14:50:56 -06:00
fstab_migration.py Moving WROLPi-managed mounts off /etc/fstab onto a drive-resident fstab.yaml. 2026-05-24 12:44:05 -06:00
fstab_yaml.py Moving WROLPi-managed mounts off /etc/fstab onto a drive-resident fstab.yaml. 2026-05-24 12:44:05 -06:00
mount_executor.py Reconciler: uid/gid and ntfsfix for NTFS secondary mounts. 2026-07-06 20:30:29 -06:00
mount_runner.py Disks: allow persisting the primary mount from the UI; clean NTFS before mounting. 2026-07-05 14:50:56 -06:00
onboarding.py Moving WROLPi-managed mounts off /etc/fstab onto a drive-resident fstab.yaml. 2026-05-24 12:44:05 -06:00
readiness.py Checking readiness of main app in Controller instead of javascript requests, which break with CORS. 2026-03-08 16:05:56 -06:00
reconciler.py Reconciler: uid/gid and ntfsfix for NTFS secondary mounts. 2026-07-06 20:30:29 -06:00
samba.py Adding docker support for samba shares. 2026-03-29 11:14:38 -06:00
scripts.py Controller: add help.sh to the Maintenance Scripts. 2026-07-09 16:00:43 -06:00
smart.py Surface coarse SMART health for USB-bridge drives (#498) 2026-06-26 09:05:06 -06:00
status.py Fetching processes from PROCFS_PATH in docker container. 2026-05-30 15:59:14 -06:00
status_worker.py Warn in the navbar when a hard drive runs hot (#470) 2026-06-11 19:46:33 -06:00
systemd.py controller: group services into Core vs Optional & Maintenance 2026-07-22 19:46:13 -06:00
wrol_mode.py Creating Controller service which will control WROLPi services, admin, SMART, disks, and status. nginx will fallback to Controller UI when React UI is unavailable (such as during upgrades). 2025-12-15 15:48:40 -07:00