From e7c6fe3abe43941810764638bc3782dae6035324 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 12 Feb 2021 22:59:27 -0800 Subject: [PATCH] Add ability to reload config file for warewulfd on SIGHUP --- internal/pkg/warewulfd/warewulfd.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/internal/pkg/warewulfd/warewulfd.go b/internal/pkg/warewulfd/warewulfd.go index ba90adcc..10a3e409 100644 --- a/internal/pkg/warewulfd/warewulfd.go +++ b/internal/pkg/warewulfd/warewulfd.go @@ -3,6 +3,9 @@ package warewulfd import ( "github.com/hpcng/warewulf/internal/pkg/wwlog" "net/http" + "os" + "os/signal" + "syscall" ) // TODO: https://github.com/danderson/netboot/blob/master/pixiecore/dhcp.go @@ -10,6 +13,23 @@ import ( func RunServer() error { + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGHUP) + + go func() { + for _ = range c { + err := LoadNodeDB() + if err != nil { + wwlog.Printf(wwlog.WARN, "Could not load database: %s\n", err) + } + } + }() + + err := LoadNodeDB() + if err != nil { + wwlog.Printf(wwlog.WARN, "Could not load database: %s\n", err) + } + wwlog.Printf(wwlog.DEBUG, "Registering handlers for the web service\n") http.HandleFunc("/ipxe/", IpxeSend) @@ -21,7 +41,11 @@ func RunServer() error { wwlog.Printf(wwlog.VERBOSE, "Starting HTTPD REST service\n") - http.ListenAndServe(":9873", nil) + err = http.ListenAndServe(":9873", nil) + if err != nil { + wwlog.Printf(wwlog.ERROR, "Could not start listening service: %s\n", err) + os.Exit(1) + } return nil }