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 }