templateToRender := flag.String("render", "", "render this template to stdout and exit")
commitIPAddress := flag.String("ip-address", "", "passed by dhcpd when a host is seen")
commitMACAddress := flag.String("mac-address", "", "passed by dhcpd when a host is seen")
+ service := flag.String("service.name", "", "if specified, does something with a service (see service.op)")
+ serviceOp := flag.String("service.op", "status", "service operation to perform (start, stop, status)")
renderAll := flag.Bool("render-all", false, "render all files")
flag.Parse()
logger.Panic(err)
}
+ if *service != "" {
+ svc := machines.GetService(*service)
+ if svc == nil {
+ logger.Panicf("no such service: %s", *service)
+ return
+ }
+ switch strings.ToLower(*serviceOp) {
+ case "start":
+ logger.Infof("starting service: %s", *service)
+ err = svc.EnsureStarted()
+ if err != nil {
+ logger.Panicf("failed to start service %q: %v", *service, err)
+ }
+ logger.Infof("service started: %s", *service)
+ case "stop":
+ logger.Infof("stopping service: %s", *service)
+ err = svc.EnsureStopped()
+ if err != nil {
+ logger.Panicf("failed to stop service %q: %v", *service, err)
+ }
+ logger.Infof("service stopped: %s", *service)
+ case "reload", "restart":
+ logger.Infof("restarting service: %s", *service)
+ err = svc.ReloadOrRestart(true)
+ if err != nil {
+ logger.Panicf("failed to restart service %q: %v", *service, err)
+ }
+ logger.Infof("service restarted: %s", *service)
+ case "status", "check":
+ status, err := svc.Status()
+ if err != nil {
+ logger.Panicf("failed to query status of service %q: %v", *service, err)
+ }
+ if status.Running {
+ logger.Infof("%s is running, pid %d", *service, status.Pid)
+ } else {
+ logger.Infof("%s is stopped", *service)
+ }
+ default:
+ logger.Panicf("unknown operation: %s", *serviceOp)
+ }
+ return
+ }
+
if *commitIPAddress != "" && *commitMACAddress != "" {
url := fmt.Sprintf("host/seen/%s/%s", *commitMACAddress, *commitIPAddress)
host := &machines.Host{}