From d4e42b7b83bfc47d2cb2d8263ad2e60da1e21786 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Fri, 11 Mar 2022 14:52:01 +0100 Subject: [PATCH] allow download of named overlay --- internal/pkg/warewulfd/parser.go | 5 ++++- internal/pkg/warewulfd/runtime.go | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/pkg/warewulfd/parser.go b/internal/pkg/warewulfd/parser.go index a473f22d..169484fa 100644 --- a/internal/pkg/warewulfd/parser.go +++ b/internal/pkg/warewulfd/parser.go @@ -14,6 +14,7 @@ type parserInfo struct { remoteport int assetkey string uuid string + overlay string } func parseReq(req *http.Request) (parserInfo, error) { @@ -35,7 +36,9 @@ func parseReq(req *http.Request) (parserInfo, error) { if len(req.URL.Query()["uuid"]) > 0 { ret.uuid = req.URL.Query()["uuid"][0] } - + if len(req.URL.Query()["overlay"]) > 0 { + ret.overlay = req.URL.Query()["overlay"][0] + } if ret.hwaddr == "" { return ret, errors.New("no hwaddr encoded in GET") } diff --git a/internal/pkg/warewulfd/runtime.go b/internal/pkg/warewulfd/runtime.go index 689c4107..96f5bb2e 100644 --- a/internal/pkg/warewulfd/runtime.go +++ b/internal/pkg/warewulfd/runtime.go @@ -45,8 +45,16 @@ func RuntimeOverlaySend(w http.ResponseWriter, req *http.Request) { return } } - - if len(node.RuntimeOverlay.GetSlice()) != 0 { + if rinfo.overlay != "" { + fileName := overlay.OverlayImage(node.Id.Get(), []string{rinfo.overlay}) + if conf.Warewulf.AutobuildOverlays { + _ = overlay.BuildOverlay(node, []string{rinfo.overlay}) + } + err := sendFile(w, fileName, node.Id.Get()) + if err != nil { + daemonLogf("ERROR: %s\n", err) + } + } else if len(node.RuntimeOverlay.GetSlice()) != 0 { fileName := overlay.OverlayImage(node.Id.Get(), node.RuntimeOverlay.GetSlice()) updateStatus(node.Id.Get(), "RUNTIME_OVERLAY", node.RuntimeOverlay.Get(), strings.Split(req.RemoteAddr, ":")[0])