Add activity log system for provisioning lifecycle visibility
build-and-push / test (push) Failing after 32s
build-and-push / build-and-push (push) Has been skipped

Hosts stuck in states like pxe_ready had zero visibility into why.
This adds a persistent activity log that records every meaningful
step (state transitions, PXE events, cluster join stages, failures)
and surfaces it on the host detail page with live SSE updates.
Includes a stuck-detection warning banner when a host sits in
pxe_ready for >10 minutes with no iPXE request.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-13 23:30:21 -04:00
parent c3a1cf99f9
commit a6603b463f
12 changed files with 209 additions and 12 deletions
+7 -4
View File
@@ -54,16 +54,18 @@ func main() {
ops := &store.Operations{DB: database}
locks := &store.Locks{DB: database, TTLMinutes: cfg.Locks.TTLMinutes}
images := &store.Images{DB: database}
activity := &store.Activity{DB: database}
imageSvc := &image.Service{Store: images, ImageDir: cfg.Images.Dir}
hub := events.NewHub()
runner := &orchestrator.Runner{
Hosts: hosts,
Ops: ops,
Locks: locks,
Hub: hub,
Hosts: hosts,
Ops: ops,
Locks: locks,
Hub: hub,
Activity: activity,
}
pxeSupervisor := pxe.NewSupervisor(pxe.SupervisorConfig{
@@ -126,6 +128,7 @@ func main() {
Ops: ops,
Locks: locks,
Images: images,
Activity: activity,
ImageSvc: imageSvc,
Runner: runner,
Orchestrator: hostOrch,