listen mutliple times on SIGHUP

This commit is contained in:
Christian Goll
2021-12-22 15:47:20 +01:00
parent 83d0ce88f5
commit 6d1b3c66c5

View File

@@ -133,21 +133,28 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
wwid := strings.Split(wwid_tmp[1], " ")[0] wwid := strings.Split(wwid_tmp[1], " ")[0]
duration := 300
if conf.Warewulf.UpdateInterval > 0 {
duration = conf.Warewulf.UpdateInterval
}
stopTimer := time.NewTimer(time.Duration(duration) * time.Second)
// listen on SIGHUP // listen on SIGHUP
sigs := make(chan os.Signal, 1) sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGINT) signal.Notify(sigs, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGINT)
go func() { go func() {
sig := <-sigs for {
switch sig { sig := <-sigs
case syscall.SIGHUP: switch sig {
log.Printf("Received SIGNAL: %s\n", sig) case syscall.SIGHUP:
updateSystem(conf.Ipaddr, conf.Warewulf.Port, wwid, tag, localUUID) log.Printf("Received SIGNAL: %s\n", sig)
case syscall.SIGTERM, syscall.SIGINT: stopTimer.Stop()
wwlog.Printf(wwlog.INFO, "termination wwclient!, %v", sig) stopTimer.Reset(0)
cleanUp() case syscall.SIGTERM, syscall.SIGINT:
os.Exit(0) wwlog.Printf(wwlog.INFO, "termination wwclient!, %v", sig)
cleanUp()
os.Exit(0)
}
} }
}() }()
var finishedInitialSync bool = false var finishedInitialSync bool = false
@@ -159,11 +166,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
finishedInitialSync = true finishedInitialSync = true
} }
if conf.Warewulf.UpdateInterval > 0 { <-stopTimer.C
time.Sleep(time.Duration(conf.Warewulf.UpdateInterval*1000) * time.Millisecond) stopTimer.Reset(time.Duration(duration) * time.Second)
} else {
time.Sleep(30000 * time.Millisecond * 1000)
}
} }
} }