Files
felhom-controller/REPORT.md
T

2.9 KiB

REPORT — retire drive-activation banner; add standalone "Kiszolgáló újraindítása" button

Repo: felhom-controller · Baseline: main @ 7cce19797 (v0.80.0) → v0.81.0 Commit: 242b835 (code + CHANGELOG + README). Date: 2026-06-23.

Why

In the intermediary-mount model an enrolled drive binds live into the running guest (agent disks.go — no pct set -mpN, no slot, no reboot), so the "… meghajtó aktiválásra vár / Újraindítás most (~30 mp)" banner was an obsolete relic of the old per-drive reboot model. It was also effectively dead since v0.78: pendingActivationDrives keyed attached by the agent's RAW MountPath but compared it to the now-STABLE sp.Path. Retired it; added a deliberate full-server restart affordance in its place (sibling to the controller-only restart).

Files changed

  • controller/internal/web/storage_handlers.go
    • Removed dead pendingActivationDrives helper + the now-unused internal/system import.
    • Renamed handleStorageActivateHandleServerReboot; split out testable serverReboot(w,r,agent) core.
    • Added GuestReboot(ctx) error to the diskAgent interface (*agentapi.Client already satisfies it).
    • Removed the /api/storage/activate case from ServeStorageAPI (→ 404).
  • controller/cmd/controller/main.go — mounted /api/server/reboot (RequireAuth+CsrfProtect) next to the storage route.
  • controller/internal/web/handlers.go — removed the data["PendingDrives"] feed.
  • controller/internal/web/templates/settings.html — removed the {{if .PendingDrives}} banner block and window.activatePendingDrives; added the "Kiszolgáló újraindítása" settings card + restartServer() JS (reuses the existing pollRestart() loop).
  • controller/internal/web/storage_handlers_test.gomockAgent gained GuestReboot; new test.
  • CHANGELOG.md (v0.81.0 entry), controller/README.md (full-server-restart section).

Note on naming

The HTTP handler is exported (HandleServerReboot), not the lowercase name in the spec snippet: cmd/controller/main.go wires it cross-package, and every web handler mounted there is exported. The unexported serverReboot core carries the logic and is what the test exercises (same split-out pattern as runStorageInit).

Test

TestHandleServerReboot_CallsGuestReboot (storage_handlers_test.go): a fake diskAgent asserts GuestReboot is invoked exactly once and the response is 202 with {ok:true, rebooting:true}.

go build ./...  → BUILD_OK
go vet ./...    → VET_OK
go test ./...   → ok (internal/web 1.640s, new test PASS); all packages ok

Grep confirmed zero remaining references to PendingDrives, pendingActivationDrives, activatePendingDrives, activate-drives-btn, /api/storage/activate, handleStorageActivate.

Deploy + live verification

To be filled after the build/deploy + §9 verification (banner gone, button present, route 200/404, regression).