Add boot image management with ISO extraction and serving
Upload Proxmox ISOs via API or dashboard UI, extract kernel+initrd using pure-Go iso9660 library, store on disk, and serve over HTTP for PXE booting. Dynamic kernel/initrd filenames per image replace the previous hardcoded paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ import (
|
||||
"provisioning/internal/db"
|
||||
"provisioning/internal/events"
|
||||
"provisioning/internal/httpserver"
|
||||
"provisioning/internal/image"
|
||||
"provisioning/internal/infra"
|
||||
"provisioning/internal/orchestrator"
|
||||
"provisioning/internal/pxe"
|
||||
@@ -45,11 +46,17 @@ func main() {
|
||||
}
|
||||
defer database.Close()
|
||||
|
||||
if err := os.MkdirAll(cfg.Images.Dir, 0o755); err != nil {
|
||||
log.Fatalf("create images dir: %v", err)
|
||||
}
|
||||
|
||||
hosts := &store.Hosts{DB: database}
|
||||
ops := &store.Operations{DB: database}
|
||||
locks := &store.Locks{DB: database, TTLMinutes: cfg.Locks.TTLMinutes}
|
||||
images := &store.Images{DB: database}
|
||||
|
||||
imageSvc := &image.Service{Store: images, ImageDir: cfg.Images.Dir}
|
||||
|
||||
hub := events.NewHub()
|
||||
|
||||
runner := &orchestrator.Runner{
|
||||
@@ -91,6 +98,8 @@ func main() {
|
||||
ServerTypes: serverTypes,
|
||||
}
|
||||
|
||||
imageAPI := &api.ImageAPI{Svc: imageSvc}
|
||||
|
||||
hostAPI := &api.HostAPI{
|
||||
Hosts: hosts,
|
||||
Ops: ops,
|
||||
@@ -117,6 +126,7 @@ func main() {
|
||||
Ops: ops,
|
||||
Locks: locks,
|
||||
Images: images,
|
||||
ImageSvc: imageSvc,
|
||||
Runner: runner,
|
||||
Orchestrator: hostOrch,
|
||||
Hub: hub,
|
||||
@@ -126,10 +136,12 @@ func main() {
|
||||
}
|
||||
|
||||
router := httpserver.NewRouter(httpserver.Deps{
|
||||
HostAPI: hostAPI,
|
||||
BootAPI: bootAPI,
|
||||
UI: ui,
|
||||
Hub: hub,
|
||||
HostAPI: hostAPI,
|
||||
BootAPI: bootAPI,
|
||||
ImageAPI: imageAPI,
|
||||
UI: ui,
|
||||
Hub: hub,
|
||||
ImageDir: cfg.Images.Dir,
|
||||
})
|
||||
|
||||
srv := &http.Server{
|
||||
|
||||
Reference in New Issue
Block a user