7109e88e07
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PsnU2ASocYrvzqE82YDYW
47 lines
2.9 KiB
Markdown
47 lines
2.9 KiB
Markdown
# 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 `handleStorageActivate` → `HandleServerReboot`; 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.go` — `mockAgent` 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)._
|