Add GRUB config route, tests, and server route documentation

- Add /grub/{hwaddr} route for serving GRUB configuration files,
  replacing the shim handler with a config-based approach
- Add short URL aliases: 'system' for overlay-system, 'runtime' for
  overlay-runtime, and 'grub' stage in parser
- Add 'grub' to status stage tracking in request handling
- Add comprehensive test coverage for EFI, GRUB, initramfs, iPXE,
  overlay, and provision handlers (efi_test.go, grub_test.go,
  initramfs_test.go, ipxe_test.go, overlay_test.go)
- Expand existing parser and provision tests
- Remove shim.go (functionality folded into grub.go)
- Add userdocs/server/routes.rst documenting all warewulfd HTTP routes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
Jonathon Anderson
2026-03-06 11:38:40 -07:00
parent a886b4958b
commit 779434331c
14 changed files with 902 additions and 74 deletions

View File

@@ -42,13 +42,19 @@ func configureRootHandler(apiHandler http.Handler) *slashFix {
wwHandler.HandleFunc("/provision/", warewulfd.HandleProvision)
wwHandler.HandleFunc("/ipxe/", warewulfd.HandleIpxe)
wwHandler.HandleFunc("/efiboot/", warewulfd.HandleEfiBoot)
wwHandler.HandleFunc("/grub/", warewulfd.HandleGrub)
wwHandler.HandleFunc("/kernel/", warewulfd.HandleKernel)
wwHandler.HandleFunc("/image/", warewulfd.HandleImage)
wwHandler.HandleFunc("/initramfs/", warewulfd.HandleInitramfs)
wwHandler.HandleFunc("/system/", warewulfd.HandleSystemOverlay)
wwHandler.HandleFunc("/runtime/", warewulfd.HandleRuntimeOverlay)
wwHandler.HandleFunc("/status", warewulfd.HandleStatus)
/* Deprecated */
wwHandler.HandleFunc("/container/", warewulfd.HandleImage)
wwHandler.HandleFunc("/overlay-system/", warewulfd.HandleSystemOverlay)
wwHandler.HandleFunc("/overlay-runtime/", warewulfd.HandleRuntimeOverlay)
wwHandler.HandleFunc("/overlay-file/", warewulfd.HandleOverlayFile)
wwHandler.HandleFunc("/status", warewulfd.HandleStatus)
if apiHandler != nil {
wwHandler.Handle("/api/", apiHandler)