From 719de68410ed67d0307519c00a40f26338aabaec Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 1 Oct 2021 00:28:40 -0700 Subject: [PATCH 1/7] Initial refactor and cleanup of wwlog --- internal/pkg/warewulfd/util.go | 5 +++-- internal/pkg/wwlog/wwlog.go | 40 ++++++++++------------------------ 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/internal/pkg/warewulfd/util.go b/internal/pkg/warewulfd/util.go index 840b1ef1..be8214f8 100644 --- a/internal/pkg/warewulfd/util.go +++ b/internal/pkg/warewulfd/util.go @@ -36,10 +36,11 @@ func daemonLogf(message string, a ...interface{}) { } log.SetOutput(logwriter) loginit = true + + log.SetFlags(0) + log.SetPrefix("") } - log.SetFlags(0) - log.SetPrefix("") log.Printf(message, a...) } else { diff --git a/internal/pkg/wwlog/wwlog.go b/internal/pkg/wwlog/wwlog.go index c5b84b5a..bad38346 100644 --- a/internal/pkg/wwlog/wwlog.go +++ b/internal/pkg/wwlog/wwlog.go @@ -1,8 +1,8 @@ package wwlog import ( - "log" - "strings" + "fmt" + "os" ) const ( @@ -16,55 +16,39 @@ const ( var ( logLevel = INFO - Indent string ) func SetLevel(level int) { logLevel = level - if level == DEBUG { - log.SetFlags(log.LstdFlags | log.Lmicroseconds | log.Lmsgprefix) - } else { - log.SetFlags(0) - } - Printf(DEBUG, "Set log level to: %d\n", logLevel) } -func SetIndent(i int) { - Indent = strings.Repeat(" ", i) -} - -func prefixLevel(level int) { +func prefixGen(level int) string { if level == DEBUG { - log.SetPrefix("[DEBUG] " + Indent) + return "[DEBUG]" } else if level == VERBOSE { - log.SetPrefix("[VERBOSE] " + Indent) + return "[VERBOSE]" } else if level == INFO { - log.SetPrefix("[INFO] " + Indent) + return "[INFO]" } else if level == WARN { - log.SetPrefix("[WARN] " + Indent) + return "[WARNING]" } else if level == ERROR { - log.SetPrefix("[ERROR] " + Indent) + return "[ERROR]" } else if level == CRITICAL { - log.SetPrefix("[CRITICAL] " + Indent) + return "[CRITICAL]" } + return "[UNDEF]" } func Println(level int, message string) { if level <= logLevel { - prefixLevel(level) - log.Println(message) + fmt.Fprintln(os.Stderr, prefixGen(level)+" "+message) } - - log.SetPrefix("[LOG] " + Indent) } func Printf(level int, message string, a ...interface{}) { if level <= logLevel { - prefixLevel(level) - log.Printf(message, a...) + fmt.Fprintf(os.Stderr, prefixGen(level)+" "+message, a...) } - - log.SetPrefix("[LOG] " + Indent) } From 93b0631121c72a683025d347cfa0c837f97a9821 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 1 Oct 2021 20:56:03 -0700 Subject: [PATCH 2/7] Better logic to locate kernels --- internal/pkg/kernel/kernel.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index 7b342a2b..d4ca00d1 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -100,11 +100,11 @@ func ListKernels() ([]string, error) { } func Build(kernelVersion string, kernelName string, root string) (string, error) { - kernelImage := path.Join(root, "/boot/vmlinuz-"+kernelVersion) kernelDrivers := path.Join(root, "/lib/modules/"+kernelVersion) kernelDestination := KernelImage(kernelName) driversDestination := KmodsImage(kernelName) versionDestination := KernelVersion(kernelName) + var kernelSource string // Create the destination paths just in case it doesn't exist err := os.MkdirAll(path.Dir(kernelDestination), 0755) @@ -122,12 +122,16 @@ func Build(kernelVersion string, kernelName string, root string) (string, error) return "", fmt.Errorf("failed to create version dest: %s", err) } - if !util.IsFile(kernelImage) { - if !util.IsFile(kernelImage + ".gz") { - return "", errors.New("Could not locate kernel image") - } else { - kernelImage = kernelImage + ".gz" - } + if util.IsFile(path.Join(root, "/boot/vmlinuz-"+kernelVersion)) { + kernelSource = path.Join(root, "/boot/vmlinuz-"+kernelVersion) + } else if util.IsFile(path.Join(root, "/boot/vmlinuz-"+kernelVersion+".gz")) { + kernelSource = path.Join(root, "/boot/vmlinuz-"+kernelVersion+".gz") + } else if util.IsFile(path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz")) { + kernelSource = path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz") + } else if util.IsFile(path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz.gz")) { + kernelSource = path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz.gz") + } else { + return "", errors.New("Could not locate kernel image") } if !util.IsDir(kernelDrivers) { @@ -135,8 +139,8 @@ func Build(kernelVersion string, kernelName string, root string) (string, error) } wwlog.Printf(wwlog.VERBOSE, "Setting up Kernel\n") - if _, err := os.Stat(kernelImage); err == nil { - kernel, err := os.Open(kernelImage) + if _, err := os.Stat(kernelSource); err == nil { + kernel, err := os.Open(kernelSource) if err != nil { return "", errors.Wrap(err, "could not open kernel") } @@ -159,7 +163,7 @@ func Build(kernelVersion string, kernelName string, root string) (string, error) } else { - err := util.CopyFile(kernelImage, kernelDestination) + err := util.CopyFile(kernelSource, kernelDestination) if err != nil { return "", errors.Wrap(err, "could not copy kernel") } From 6c27b86481c87b253f2887f65a3ad8c8b5728162 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Tue, 28 Dec 2021 13:56:09 -0800 Subject: [PATCH 3/7] Accepted suggestions from PaulC. --- internal/pkg/wwlog/wwlog.go | 47 ++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/internal/pkg/wwlog/wwlog.go b/internal/pkg/wwlog/wwlog.go index bad38346..b2767dc7 100644 --- a/internal/pkg/wwlog/wwlog.go +++ b/internal/pkg/wwlog/wwlog.go @@ -25,30 +25,39 @@ func SetLevel(level int) { } func prefixGen(level int) string { - if level == DEBUG { - return "[DEBUG]" - } else if level == VERBOSE { - return "[VERBOSE]" - } else if level == INFO { - return "[INFO]" - } else if level == WARN { - return "[WARNING]" - } else if level == ERROR { - return "[ERROR]" - } else if level == CRITICAL { - return "[CRITICAL]" + switch level { + case DEBUG: + return "[DEBUG] : " + case VERBOSE: + return "[VERBOSE] : " + case INFO: + return "[INFO] : " + case WARN: + return "[WARNING] : " + case ERROR: + return "[ERROR] : " + case CRITICAL: + return "[CRITICAL]: " + } + return "[UNDEF] : " +} + +func printlog(level int, message string) { + if level == INFO && logLevel <= INFO { + fmt.Printf(message) + } else if level <= logLevel { + if level < INFO { + fmt.Fprintf(os.Stderr, prefixGen(level)+message) + } else { + fmt.Printf(prefixGen(level) + message) + } } - return "[UNDEF]" } func Println(level int, message string) { - if level <= logLevel { - fmt.Fprintln(os.Stderr, prefixGen(level)+" "+message) - } + printlog(level, message) } func Printf(level int, message string, a ...interface{}) { - if level <= logLevel { - fmt.Fprintf(os.Stderr, prefixGen(level)+" "+message, a...) - } + printlog(level, fmt.Sprintf(message, a...)) } From 148431e8f2d80bc0a13669f94ecb08306c662ba2 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Tue, 28 Dec 2021 13:56:30 -0800 Subject: [PATCH 4/7] Minor cleanup of output --- internal/pkg/node/constructors.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index 596a6b43..0d8b1c0f 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -1,7 +1,6 @@ package node import ( - "fmt" "io/ioutil" "sort" "strings" @@ -17,10 +16,9 @@ const ConfigFile = "/etc/warewulf/nodes.conf" func New() (nodeYaml, error) { var ret nodeYaml - wwlog.Printf(wwlog.DEBUG, "Opening node configuration file: %s\n", ConfigFile) + wwlog.Printf(wwlog.VERBOSE, "Opening node configuration file: %s\n", ConfigFile) data, err := ioutil.ReadFile(ConfigFile) if err != nil { - fmt.Printf("error reading node configuration file\n") return ret, err } From 556d453dd50dfc3dc8d3b309aa0a76056691abda Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Tue, 28 Dec 2021 14:07:43 -0800 Subject: [PATCH 5/7] minor fix to git version string --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 53efc9f1..0c841da9 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ RELEASE ?= 1 SRC ?= main -VERSION_FULL ?= $(shell test -e .git && git describe --tags --long --first-parent) +VERSION_FULL ?= $(shell test -e .git && git describe --tags --long --first-parent --always) ifeq ($(VERSION_FULL),) VERSION_FULL := $(VERSION) endif From 29bcbd264ab327d43f599f855a7e3a54a2f06db7 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Tue, 28 Dec 2021 14:12:03 -0800 Subject: [PATCH 6/7] Fix linting error --- internal/pkg/wwlog/wwlog.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/pkg/wwlog/wwlog.go b/internal/pkg/wwlog/wwlog.go index b2767dc7..8eba3ade 100644 --- a/internal/pkg/wwlog/wwlog.go +++ b/internal/pkg/wwlog/wwlog.go @@ -44,7 +44,7 @@ func prefixGen(level int) string { func printlog(level int, message string) { if level == INFO && logLevel <= INFO { - fmt.Printf(message) + fmt.Print(message) } else if level <= logLevel { if level < INFO { fmt.Fprintf(os.Stderr, prefixGen(level)+message) From 26a5eae20dce2ad66c1823884dc172e3f3e3d608 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Tue, 28 Dec 2021 14:52:39 -0800 Subject: [PATCH 7/7] Use a slice array for the kernel search path --- internal/pkg/kernel/kernel.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/internal/pkg/kernel/kernel.go b/internal/pkg/kernel/kernel.go index d4ca00d1..1cdaafe9 100644 --- a/internal/pkg/kernel/kernel.go +++ b/internal/pkg/kernel/kernel.go @@ -16,6 +16,16 @@ import ( "github.com/hpcng/warewulf/internal/pkg/wwlog" ) +var ( + kernelSearchPaths = []string{ + // This is a printf format where the %s will be the kernel version + "/boot/vmlinuz-%s", + "/boot/vmlinuz-%s.gz", + "/lib/mmodules/%s/vmlinuz", + "/lib/mmodules/%s/vmlinuz.gz", + } +) + func ParentDir() string { return path.Join(config.LocalStateDir, "provision/kernel") } @@ -122,16 +132,20 @@ func Build(kernelVersion string, kernelName string, root string) (string, error) return "", fmt.Errorf("failed to create version dest: %s", err) } - if util.IsFile(path.Join(root, "/boot/vmlinuz-"+kernelVersion)) { - kernelSource = path.Join(root, "/boot/vmlinuz-"+kernelVersion) - } else if util.IsFile(path.Join(root, "/boot/vmlinuz-"+kernelVersion+".gz")) { - kernelSource = path.Join(root, "/boot/vmlinuz-"+kernelVersion+".gz") - } else if util.IsFile(path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz")) { - kernelSource = path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz") - } else if util.IsFile(path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz.gz")) { - kernelSource = path.Join(root, "/lib/modules/"+kernelVersion+"/vmlinuz.gz") + for _, path := range kernelSearchPaths { + testPath := fmt.Sprintf(path, kernelVersion) + wwlog.Printf(wwlog.VERBOSE, "Looking for kernel at: %s\n", testPath) + if util.IsFile(testPath) { + kernelSource = testPath + break + } + } + + if kernelSource == "" { + wwlog.Printf(wwlog.ERROR, "Could not locate kernel image\n") + return "", errors.New("could not locate kernel image") } else { - return "", errors.New("Could not locate kernel image") + wwlog.Printf(wwlog.INFO, "Found kernel at: %s\n", kernelSource) } if !util.IsDir(kernelDrivers) {