From 10b5f606d490fc469ab53032c10d46ef0d8804e3 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Mon, 21 Mar 2022 10:55:09 +0100 Subject: [PATCH 1/3] set default value for gateway --- internal/pkg/node/constructors.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 789bc9d4..23877311 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -44,6 +44,11 @@ func New() (nodeYaml, error) { return ret, nil } +/* +Get all the nodes of a configuration. This function also merges +the nodes with the given profiles and set the default values +for every node +*/ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { var ret []NodeInfo wwconfig, err := warewulfconf.New() @@ -125,6 +130,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname].Ipaddr6.SetDefault(ipv6str) } n.NetDevs[devname].Netmask.Set(netdev.Netmask) + n.NetDevs[devname].Netmask.SetDefault("255.255.255.0") n.NetDevs[devname].Hwaddr.Set(netdev.Hwaddr) n.NetDevs[devname].Gateway.Set(netdev.Gateway) n.NetDevs[devname].Type.Set(netdev.Type) From 6fab42fda18e1adc58ed5507ee4eebb500c93b32 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Mon, 21 Mar 2022 10:13:48 +0100 Subject: [PATCH 2/3] do not write master file for templates --- internal/pkg/overlay/overlay.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 2538547f..3785437f 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -358,17 +358,26 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir fileScanner := bufio.NewScanner(bytes.NewReader(buffer.Bytes())) fileScanner.Split(bufio.ScanLines) reg := regexp.MustCompile(`.*{{\s*/\*\s*file\s*["'](.*)["']\s*\*/\s*}}.*`) + foundFileComment := false for fileScanner.Scan() { line := fileScanner.Text() filenameFromTemplate := reg.FindAllStringSubmatch(line, -1) if len(filenameFromTemplate) != 0 { - err = carefulWriteBuffer(path.Join(outputDir, destFileName), - fileBuffer, backupFile, info.Mode()) - if err != nil { - return errors.Wrap(err, "could not write file from template") + wwlog.Printf(wwlog.DEBUG, "Found multifle comment, new filename %s\n", filenameFromTemplate[0][1]) + if foundFileComment { + err = carefulWriteBuffer(path.Join(outputDir, destFileName), + fileBuffer, backupFile, info.Mode()) + if err != nil { + return errors.Wrap(err, "could not write file from template") + } + err = util.CopyUIDGID(location, path.Join(outputDir, destFileName)) + if err != nil { + return errors.Wrap(err, "failed setting permissions on template output file") + } + fileBuffer.Reset() } destFileName = path.Join(path.Dir(destFile), filenameFromTemplate[0][1]) - fileBuffer.Reset() + foundFileComment = true } else { _, _ = fileBuffer.WriteString(line + "\n") } @@ -377,7 +386,7 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir if err != nil { return errors.Wrap(err, "could not write file from template") } - err = util.CopyUIDGID(location, path.Join(outputDir, destFile)) + err = util.CopyUIDGID(location, path.Join(outputDir, destFileName)) if err != nil { return errors.Wrap(err, "failed setting permissions on template output file") } From baae8324c9545ea5c09144c3b763fd08ea1a9221 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Thu, 24 Mar 2022 10:04:11 +0100 Subject: [PATCH 3/3] add noit always newline on template --- internal/pkg/overlay/overlay.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 3785437f..212e603f 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -356,14 +356,14 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir var fileBuffer bytes.Buffer // search for magic file name comment fileScanner := bufio.NewScanner(bytes.NewReader(buffer.Bytes())) - fileScanner.Split(bufio.ScanLines) + fileScanner.Split(scanLines) reg := regexp.MustCompile(`.*{{\s*/\*\s*file\s*["'](.*)["']\s*\*/\s*}}.*`) foundFileComment := false for fileScanner.Scan() { line := fileScanner.Text() filenameFromTemplate := reg.FindAllStringSubmatch(line, -1) if len(filenameFromTemplate) != 0 { - wwlog.Printf(wwlog.DEBUG, "Found multifle comment, new filename %s\n", filenameFromTemplate[0][1]) + wwlog.Printf(wwlog.DEBUG, "Found multifile comment, new filename %s\n", filenameFromTemplate[0][1]) if foundFileComment { err = carefulWriteBuffer(path.Join(outputDir, destFileName), fileBuffer, backupFile, info.Mode()) @@ -379,7 +379,7 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir destFileName = path.Join(path.Dir(destFile), filenameFromTemplate[0][1]) foundFileComment = true } else { - _, _ = fileBuffer.WriteString(line + "\n") + _, _ = fileBuffer.WriteString(line) } } err = carefulWriteBuffer(path.Join(outputDir, destFileName), fileBuffer, backupFile, info.Mode()) @@ -449,3 +449,20 @@ func carefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, p _, err = buffer.WriteTo(w) return err } + +// Simple version of ScanLines, but include the line break +func scanLines(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + if i := bytes.IndexByte(data, '\n'); i >= 0 { + // We have a full newline-terminated line. + return i + 1, data[0 : i+1], nil + } + // If we're at EOF, we have a final, non-terminated line. Return it. + if atEOF { + return len(data), data, nil + } + // Request more data. + return 0, nil, nil +}