Daemon logging to syslog (#152)
This commit is contained in:
@@ -5,6 +5,7 @@ warewulf:
|
||||
secure: true
|
||||
autobuild overlays: true
|
||||
update interval: 60
|
||||
syslog: false
|
||||
dhcp:
|
||||
enabled: true
|
||||
range start: 192.168.200.50
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
package start
|
||||
|
||||
import (
|
||||
"github.com/hpcng/warewulf/internal/pkg/warewulfconf"
|
||||
"github.com/hpcng/warewulf/internal/pkg/warewulfd"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
|
||||
if SetForeground {
|
||||
conf, err := warewulfconf.New()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Could not read Warewulf configuration file")
|
||||
}
|
||||
conf.Warewulf.Syslog = false
|
||||
return errors.Wrap(warewulfd.RunServer(), "failed to start Warewulf server")
|
||||
} else {
|
||||
return errors.Wrap(warewulfd.DaemonStart(), "failed to start Warewulf server")
|
||||
|
||||
@@ -10,43 +10,53 @@ import (
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
var singleton ControllerConf
|
||||
|
||||
func New() (ControllerConf, error) {
|
||||
var ret ControllerConf
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Opening Warewulf configuration file: %s\n", ConfigFile)
|
||||
data, err := ioutil.ReadFile(ConfigFile)
|
||||
if err != nil {
|
||||
fmt.Printf("error reading Warewulf configuration file\n")
|
||||
return ret, err
|
||||
if (ControllerConf{}) == singleton {
|
||||
wwlog.Printf(wwlog.DEBUG, "Opening Warewulf configuration file: %s\n", ConfigFile)
|
||||
data, err := ioutil.ReadFile(ConfigFile)
|
||||
if err != nil {
|
||||
fmt.Printf("error reading Warewulf configuration file\n")
|
||||
return ret, err
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Unmarshaling the Warewulf configuration\n")
|
||||
err = yaml.Unmarshal(data, &ret)
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
if ret.Ipaddr == "" {
|
||||
wwlog.Printf(wwlog.WARN, "IP address is not configured in warewulfd.conf\n")
|
||||
}
|
||||
if ret.Netmask == "" {
|
||||
wwlog.Printf(wwlog.WARN, "Netmask is not configured in warewulfd.conf\n")
|
||||
}
|
||||
|
||||
if ret.Network == "" {
|
||||
mask := net.IPMask(net.ParseIP(ret.Netmask).To4())
|
||||
size, _ := mask.Size()
|
||||
|
||||
sub := ipsubnet.SubnetCalculator(ret.Ipaddr, size)
|
||||
|
||||
ret.Network = sub.GetNetworkPortion()
|
||||
}
|
||||
|
||||
if ret.Warewulf.Port == 0 {
|
||||
ret.Warewulf.Port = 9873
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Returning warewulf config object\n")
|
||||
singleton = ret
|
||||
|
||||
} else {
|
||||
wwlog.Printf(wwlog.DEBUG, "Returning cached warewulf config object\n")
|
||||
|
||||
ret = singleton
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Unmarshaling the Warewulf configuration\n")
|
||||
err = yaml.Unmarshal(data, &ret)
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
if ret.Ipaddr == "" {
|
||||
wwlog.Printf(wwlog.WARN, "IP address is not configured in warewulfd.conf\n")
|
||||
}
|
||||
if ret.Netmask == "" {
|
||||
wwlog.Printf(wwlog.WARN, "Netmask is not configured in warewulfd.conf\n")
|
||||
}
|
||||
|
||||
if ret.Network == "" {
|
||||
mask := net.IPMask(net.ParseIP(ret.Netmask).To4())
|
||||
size, _ := mask.Size()
|
||||
|
||||
sub := ipsubnet.SubnetCalculator(ret.Ipaddr, size)
|
||||
|
||||
ret.Network = sub.GetNetworkPortion()
|
||||
}
|
||||
|
||||
if ret.Warewulf.Port == 0 {
|
||||
ret.Warewulf.Port = 9873
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Returning node object\n")
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ type WarewulfConf struct {
|
||||
Secure bool `yaml:"secure"`
|
||||
UpdateInterval int `yaml:"update interval"`
|
||||
AutobuildOverlays bool `yaml:"autobuild overlays"`
|
||||
Syslog bool `yaml:"syslog"`
|
||||
}
|
||||
|
||||
type DhcpConf struct {
|
||||
|
||||
@@ -3,6 +3,8 @@ package warewulfd
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"log/syslog"
|
||||
"net/http"
|
||||
"os"
|
||||
"strconv"
|
||||
@@ -10,12 +12,37 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/hpcng/warewulf/internal/pkg/node"
|
||||
"github.com/hpcng/warewulf/internal/pkg/warewulfconf"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
var logwriter syslog.Writer
|
||||
var loginit bool
|
||||
|
||||
func daemonLogf(message string, a ...interface{}) {
|
||||
prefix := fmt.Sprintf("[%s] ", time.Now().Format(time.UnixDate))
|
||||
fmt.Printf(prefix+message, a...)
|
||||
conf, err := warewulfconf.New()
|
||||
if err != nil {
|
||||
fmt.Printf("ERROR: Could not read Warewulf configuration file: %s\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
if conf.Warewulf.Syslog == true {
|
||||
if loginit == false {
|
||||
logwriter, err := syslog.New(syslog.LOG_NOTICE, "warewulfd")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
log.SetOutput(logwriter)
|
||||
loginit = true
|
||||
}
|
||||
log.SetFlags(0)
|
||||
log.SetPrefix("")
|
||||
|
||||
log.Printf(message, a...)
|
||||
} else {
|
||||
prefix := fmt.Sprintf("[%s] ", time.Now().Format(time.UnixDate))
|
||||
fmt.Printf(prefix+message, a...)
|
||||
}
|
||||
}
|
||||
|
||||
func getSanity(req *http.Request) (node.NodeInfo, error) {
|
||||
|
||||
Reference in New Issue
Block a user