From e90616cafbd92303b0d35855716d8cdbc3c9bbbe Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Wed, 16 Aug 2023 16:49:10 +0200 Subject: [PATCH] calling the overlay build functions direclty The warewulfd process called `wwctl build -O [system|runtime] node` if autobuild was set. This created [system|runtime].img which isn't supported with the build model. Calling now BuildOverlay directly Signed-off-by: Christian Goll --- internal/pkg/overlay/overlay.go | 20 -------------------- internal/pkg/warewulfd/util.go | 27 +++++++++++++++------------ 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 6ef5278e..2dd9003d 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -19,26 +19,6 @@ import ( "github.com/pkg/errors" ) -/* - -func BuildSystemOverlay(nodeList []node.NodeInfo) error { - return nil -} - -func BuildRuntimeOverlay(nodeList []node.NodeInfo) error { - return nil -} - - -func FindSystemOverlays() ([]string, error) { - return findAllOverlays("system") -} - -func FindRuntimeOverlays() ([]string, error) { - return findAllOverlays("runtime") -} -*/ - /* Build all overlays (runtime and generic) for a node */ diff --git a/internal/pkg/warewulfd/util.go b/internal/pkg/warewulfd/util.go index e55bf553..9f2cd4a4 100644 --- a/internal/pkg/warewulfd/util.go +++ b/internal/pkg/warewulfd/util.go @@ -1,9 +1,11 @@ package warewulfd import ( + "fmt" "net/http" "os" + "github.com/hpcng/warewulf/internal/pkg/node" nodepkg "github.com/hpcng/warewulf/internal/pkg/node" "github.com/hpcng/warewulf/internal/pkg/overlay" "github.com/hpcng/warewulf/internal/pkg/util" @@ -61,21 +63,22 @@ func getOverlayFile( } if build { - wwlog.Serv("BUILD %15s, overlays %v", nodeId, stage_overlays) - - args := []string{"overlay", "build"} - - for _, overlayname := range stage_overlays { - args = append(args, "-O", overlayname) + nodeDB, errNested := node.New() + if err != nil { + return stage_file, errNested } - - args = append(args, nodeId) - - out, err := util.RunWWCTL(args...) - + myNode, errNested := nodeDB.FindAllNodes() + if err != nil { + return stage_file, errNested + } + myNode = node.FilterByName(myNode, []string{nodeId}) + if len(myNode) != 1 { + return stage_file, fmt.Errorf("couldn't find node %s", nodeId) + } + err = overlay.BuildOverlay(myNode[0], context, stage_overlays) if err != nil { wwlog.Error("Failed to build overlay: %s, %s, %s\n%s", - nodeId, stage_overlays, stage_file, string(out)) + nodeId, stage_overlays, stage_file, err) } }