From 22df58eab474fa947fd7378a6a3a9b7d4fd034be Mon Sep 17 00:00:00 2001 From: John Hanks Date: Tue, 25 Jul 2023 18:53:14 -0500 Subject: [PATCH 1/5] More aggressive cleaning based on contents of .gitignore. --- Makefile | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index f5c1dacc..2bfb9f10 100644 --- a/Makefile +++ b/Makefile @@ -281,17 +281,36 @@ wwapird: ## Build the rest api server (revese proxy to the grpc api server). go build -o ./wwapird internal/app/api/wwapird/wwapird.go contclean: + rm -f $(WAREWULF)-$(VERSION).tar.gz + rm -f bash_completion + rm -f config + rm -f config_defaults + rm -f Defaults.mk + rm -f etc/wwapi{c,d,rd}.conf + rm -f etc/wwapi{c,d,rd}.config + rm -f include/systemd/warewulfd.service + rm -f internal/pkg/buildconfig/setconfigs.go + rm -f internal/pkg/config/buildconfig.go + rm -f man_page + rm -f print_defaults + rm -f update_configuration + rm -f usr/share/man/man1/ + rm -f warewulf.spec + rm -f warewulf-*.tar.gz + rm -f wwapic + rm -f wwapid + rm -f wwapird rm -f wwclient rm -f wwctl - rm -rf .dist - rm -f $(WAREWULF)-$(VERSION).tar.gz - rm -rf man_pages - rm -f warewulf.spec - rm -f config - rm -f Defaults.mk rm -rf $(TOOLS_DIR) - rm -f update_configuration - rm -f etc/wwapi{c,d,rd}.conf + rm -rf bash_completion.d + rm -rf /config + rm -rf .dist/ + rm -rf _dist/ + rm -rf etc/bash_completion.d/ + rm -rf man_pages + rm -rf userdocs/_* + rm -rf userdocs/reference/* clean: contclean rm -rf vendor From 6a53b9aa19011113840c51efaa27795a58d16d60 Mon Sep 17 00:00:00 2001 From: John Hanks Date: Tue, 25 Jul 2023 18:54:06 -0500 Subject: [PATCH 2/5] Replace deprecated io.ioutil functions with new os versions. --- internal/app/wwctl/overlay/imprt/main_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/app/wwctl/overlay/imprt/main_test.go b/internal/app/wwctl/overlay/imprt/main_test.go index e74c84b5..bbed5a63 100644 --- a/internal/app/wwctl/overlay/imprt/main_test.go +++ b/internal/app/wwctl/overlay/imprt/main_test.go @@ -2,7 +2,6 @@ package imprt import ( "fmt" - "io/ioutil" "os" "testing" @@ -13,7 +12,7 @@ import ( ) func Test_List(t *testing.T) { - tmpdir, err := ioutil.TempDir(os.TempDir(), "warewulf") + tmpdir, err := os.MkdirTemp(os.TempDir(), "warewulf") if err != nil { t.Errorf("Could not create temp folder: %v", err) t.FailNow() @@ -34,7 +33,7 @@ func Test_List(t *testing.T) { t.FailNow() } - file, err := ioutil.TempFile(tmpdir, "file") + file, err := os.CreateTemp(tmpdir, "file") if err != nil { t.Errorf("Could not create tempfile") t.FailNow() From 082eddc0f70914e77dbbf06cd4418ff8de7f5a0e Mon Sep 17 00:00:00 2001 From: griznog Date: Wed, 26 Jul 2023 07:22:43 -0500 Subject: [PATCH 3/5] Update CHANGELOG. --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c5cb06..3df7afb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - New documentation for development environment (Vagrant) ### Fixed - +- More aggressive `make clean`. +- Replace deprecated `io.utils` functions with new `os` functions. - The correct header is now displayed when `-al` flags are specified to overlay list. - Added a missing `.ww` extension to the `70-ww4-netname.rules` template in the From e05438fdc03df88346bcaf9cf7fd1a615c4c433a Mon Sep 17 00:00:00 2001 From: griznog Date: Wed, 26 Jul 2023 11:46:13 -0500 Subject: [PATCH 4/5] Use warewulf.conf from build instead of installed warewulf.conf. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 2bfb9f10..53316639 100644 --- a/Makefile +++ b/Makefile @@ -203,7 +203,7 @@ files: all install -m 0644 include/firewalld/warewulf.xml $(DESTDIR)$(FIREWALLDDIR) install -m 0644 include/systemd/warewulfd.service $(DESTDIR)$(SYSTEMDDIR) install -m 0644 LICENSE.md $(DESTDIR)$(WWDOCDIR) - ./wwctl genconfig completions > $(DESTDIR)$(BASHCOMPDIR)/wwctl + ./wwctl --warewulfconf etc/warewulf.conf genconfig completions > $(DESTDIR)$(BASHCOMPDIR)/wwctl cp man_pages/*.1* $(DESTDIR)$(MANDIR)/man1/ cp man_pages/*.5* $(DESTDIR)$(MANDIR)/man5/ install -m 0644 staticfiles/README-ipxe.md $(DESTDIR)$(WWDATADIR)/ipxe From 13c426de1c39b24bd4b3a202f67328783d89fa1a Mon Sep 17 00:00:00 2001 From: griznog Date: Thu, 27 Jul 2023 07:27:20 -0500 Subject: [PATCH 5/5] Add an argument to the runtime/system overlay related functions to carry the context to getOverlayFile() for building the img name. --- internal/pkg/overlay/config.go | 24 ++++++++++++++++++++++-- internal/pkg/overlay/overlay.go | 25 +++++++++++++++++-------- internal/pkg/warewulfd/provision.go | 8 +++++++- internal/pkg/warewulfd/util.go | 5 +++-- 4 files changed, 49 insertions(+), 13 deletions(-) diff --git a/internal/pkg/overlay/config.go b/internal/pkg/overlay/config.go index d2a9e924..8cc09d95 100644 --- a/internal/pkg/overlay/config.go +++ b/internal/pkg/overlay/config.go @@ -5,6 +5,7 @@ import ( "path" "strings" + "github.com/hpcng/warewulf/internal/pkg/wwlog" warewulfconf "github.com/hpcng/warewulf/internal/pkg/config" ) @@ -30,7 +31,26 @@ func OverlaySourceDir(overlayName string) string { /* Returns the overlay name of the image for a given node */ -func OverlayImage(nodeName string, overlayName []string) string { +func OverlayImage(nodeName string, overlayName []string, img_context ...string) string { + var name string + var context string + + /* Check optional context argument. If missing, default to legacy. */ + if len(img_context) == 0 { + context = "legacy" + } else { + context = img_context[0] + } + conf := warewulfconf.Get() - return path.Join(conf.Paths.WWProvisiondir, "overlays/", nodeName, strings.Join(overlayName, "-")+".img") + + switch context { + case "legacy": + name = strings.Join(overlayName, "-")+".img" + default: + wwlog.Warn("Context %s passed to OverlayImage(), using %s to build image name.", context, "__" + strings.ToUpper(context) + "__") + name = "__" + strings.ToUpper(context) + "__.img" + } + + return path.Join(conf.Paths.WWProvisiondir, "overlays/", nodeName, name) } diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 0d441cc7..ec505c28 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -47,13 +47,13 @@ func BuildAllOverlays(nodes []node.NodeInfo) error { sysOverlays := n.SystemOverlay.GetSlice() wwlog.Info("Building system overlays for %s: [%s]", n.Id.Get(), strings.Join(sysOverlays, ", ")) - err := BuildOverlay(n, sysOverlays) + err := BuildOverlay(n, sysOverlays, "system") if err != nil { return errors.Wrapf(err, "could not build system overlays %v for node %s", sysOverlays, n.Id.Get()) } runOverlays := n.RuntimeOverlay.GetSlice() wwlog.Info("Building runtime overlays for %s: [%s]", n.Id.Get(), strings.Join(runOverlays, ", ")) - err = BuildOverlay(n, runOverlays) + err = BuildOverlay(n, runOverlays, "runtime") if err != nil { return errors.Wrapf(err, "could not build runtime overlays %v for node %s", runOverlays, n.Id.Get()) } @@ -66,11 +66,12 @@ func BuildAllOverlays(nodes []node.NodeInfo) error { func BuildSpecificOverlays(nodes []node.NodeInfo, overlayNames []string) error { for _, n := range nodes { - wwlog.Info("Building overlay for %s: %v", n.Id.Get(), overlayNames) - err := BuildOverlay(n, overlayNames) - if err != nil { - return errors.Wrapf(err, "could not build overlay for node %s: %v", n.Id.Get(), overlayNames) + for _, overlayName := range overlayNames { + err := BuildOverlay(n, []string{overlayName}) + if err != nil { + return errors.Wrapf(err, "could not build overlay %s for node %s", overlayName, n.Id.Get()) + } } } @@ -139,10 +140,18 @@ func OverlayInit(overlayName string) error { /* Build the given overlays for a node and create a Image for them */ -func BuildOverlay(nodeInfo node.NodeInfo, overlayNames []string) error { +func BuildOverlay(nodeInfo node.NodeInfo, overlayNames []string, img_context ...string) error { + var context string + /* Check optional context argument. If missing, default to legacy. */ + if len(img_context) == 0 { + context = "legacy" + } else { + context = img_context[0] + } + // create the dir where the overlay images will reside name := fmt.Sprintf("overlay %s/%v", nodeInfo.Id.Get(), overlayNames) - overlayImage := OverlayImage(nodeInfo.Id.Get(), overlayNames) + overlayImage := OverlayImage(nodeInfo.Id.Get(), overlayNames, context) overlayImageDir := path.Dir(overlayImage) err := os.MkdirAll(overlayImageDir, 0755) diff --git a/internal/pkg/warewulfd/provision.go b/internal/pkg/warewulfd/provision.go index 60457208..d83fd70d 100644 --- a/internal/pkg/warewulfd/provision.go +++ b/internal/pkg/warewulfd/provision.go @@ -59,6 +59,8 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) { status_stage := status_stages[rinfo.stage] var stage_overlays []string var stage_file string = "" + var img_context string = "legacy" /* Default to old image name behavior */ + // TODO: when module version is upgraded to go1.18, should be 'any' type var tmpl_data interface{} @@ -128,6 +130,7 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) { } else if rinfo.stage == "system" { if len(node.SystemOverlay.GetSlice()) != 0 { stage_overlays = node.SystemOverlay.GetSlice() + img_context = rinfo.stage } else { wwlog.Warn("No system overlay set for node %s", node.Id.Get()) } @@ -135,8 +138,10 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) { } else if rinfo.stage == "runtime" { if rinfo.overlay != "" { stage_overlays = []string{rinfo.overlay} + img_context = "legacy" } else if len(node.RuntimeOverlay.GetSlice()) != 0 { stage_overlays = node.RuntimeOverlay.GetSlice() + img_context = rinfo.stage } else { wwlog.Warn("No runtime overlay set for node %s", node.Id.Get()) } @@ -147,7 +152,8 @@ func ProvisionSend(w http.ResponseWriter, req *http.Request) { stage_file, err = getOverlayFile( node.Id.Get(), stage_overlays, - conf.Warewulf.AutobuildOverlays) + conf.Warewulf.AutobuildOverlays, + img_context ) if err != nil { w.WriteHeader(http.StatusInternalServerError) diff --git a/internal/pkg/warewulfd/util.go b/internal/pkg/warewulfd/util.go index 6b2275fe..4e497c6f 100644 --- a/internal/pkg/warewulfd/util.go +++ b/internal/pkg/warewulfd/util.go @@ -44,9 +44,10 @@ func sendFile( func getOverlayFile( nodeId string, stage_overlays []string, - autobuild bool ) (stage_file string, err error) { + autobuild bool, + img_context string) (stage_file string, err error) { - stage_file = overlay.OverlayImage(nodeId, stage_overlays) + stage_file = overlay.OverlayImage(nodeId, stage_overlays, img_context) err = nil build := !util.IsFile(stage_file)