Various more updates around Warewulf service and erorr cleanup

This commit is contained in:
Gregory Kurtzer
2021-09-10 18:25:58 -07:00
parent 2cabe4b806
commit 09652cd56d
6 changed files with 34 additions and 29 deletions

View File

@@ -25,6 +25,10 @@ func DaemonStart() error {
}
} else {
if util.IsFile(WAREWULFD_PIDFILE) {
return errors.New("process is already running")
}
os.Setenv("WAREWULFD_BACKGROUND", "1")
f, err := os.OpenFile(WAREWULFD_LOGFILE, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
@@ -49,6 +53,8 @@ func DaemonStart() error {
fmt.Fprintf(p, "%d", pid)
fmt.Printf("Started Warewulf server at PID: %d\n", pid)
}
return nil
@@ -56,27 +62,24 @@ func DaemonStart() error {
func DaemonStatus() error {
if !util.IsFile(WAREWULFD_PIDFILE) {
fmt.Printf("Warewulf daemon process not running (%s)\n", WAREWULFD_PIDFILE)
return nil
return errors.New("Warewulf server is not running")
}
dat, err := ioutil.ReadFile(WAREWULFD_PIDFILE)
if err != nil {
return err
return errors.Wrap(err, "could not read Warewulfd PID file")
}
pid, _ := strconv.Atoi(string(dat))
process, err := os.FindProcess(pid)
if err != nil {
fmt.Printf("Failed to find process: %s\n", err)
return err
return errors.Wrap(err, "failed to find running PID")
} else {
err := process.Signal(syscall.Signal(0))
if err != nil {
fmt.Printf("SIGCONT on pid %d returned: %v\n", pid, err)
return err
return errors.Wrap(err, "failed to send process SIGCONT")
} else {
fmt.Printf("Warewulf daemon is running at PID: %d\n", pid)
fmt.Printf("Warewulf server is running at PID: %d\n", pid)
}
}
@@ -85,26 +88,22 @@ func DaemonStatus() error {
func DaemonReload() error {
if !util.IsFile(WAREWULFD_PIDFILE) {
fmt.Printf("Warewulf daemon process not running (%s)\n", WAREWULFD_PIDFILE)
return nil
return errors.New("Warewulf server is not running")
}
dat, err := ioutil.ReadFile(WAREWULFD_PIDFILE)
if err != nil {
return err
return errors.Wrap(err, "could not read Warewulfd PID file")
}
pid, _ := strconv.Atoi(string(dat))
process, err := os.FindProcess(pid)
if err != nil {
fmt.Printf("Failed to find process: %s\n", err)
return err
return errors.Wrap(err, "failed to find running PID")
} else {
err := process.Signal(syscall.Signal(syscall.SIGHUP))
if err != nil {
fmt.Printf("SIGCONT on pid %d returned: %v\n", pid, err)
return err
return errors.Wrap(err, "failed to send process SIGHUP")
}
}
@@ -113,7 +112,7 @@ func DaemonReload() error {
func DaemonStop() error {
if !util.IsFile(WAREWULFD_PIDFILE) {
fmt.Printf("Warewulf daemon process not running (%s)\n", WAREWULFD_PIDFILE)
fmt.Printf("Warewulf daemon process not running\n")
return nil
}
@@ -122,20 +121,21 @@ func DaemonStop() error {
return err
}
_ = os.Remove(WAREWULFD_PIDFILE)
pid, _ := strconv.Atoi(string(dat))
process, err := os.FindProcess(pid)
if err != nil {
fmt.Printf("Failed to find process: %s\n", err)
return errors.Wrap(err, "failed to find running PID")
} else {
err := process.Signal(syscall.Signal(15))
if err != nil {
fmt.Printf("SIGCONT on pid %d returned: %v\n", pid, err)
return errors.Wrap(err, "failed to send process SIGTERM")
} else {
fmt.Printf("Terminated Warewulf process at PID: %d\n", pid)
fmt.Printf("Terminated Warewulf server at PID: %d\n", pid)
}
}
os.Remove(WAREWULFD_PIDFILE)
return nil
}