func startDaemon() { fmt.Printf("%s\n", RexRayLogoAscii) var success []byte var failure []byte var conn net.Conn if !fg { success = []byte{0} failure = []byte{1} var dialErr error log.Printf("Dialing %s\n", client) conn, dialErr = net.Dial("unix", client) if dialErr != nil { panic(dialErr) } } writePidErr := util.WritePidFile(-1) if writePidErr != nil { if conn != nil { conn.Write(failure) } panic(writePidErr) } defer func() { r := recover() os.Remove(util.PidFile()) if r != nil { panic(r) } }() log.Printf("Created pid file, pid=%d\n", os.Getpid()) init := make(chan error) sigc := make(chan os.Signal, 1) stop := make(chan os.Signal) signal.Notify(sigc, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { rrdaemon.Start(c.Host, init, stop) }() initErrors := make([]error, 0) for initErr := range init { initErrors = append(initErrors, initErr) log.Println(initErr) } if conn != nil { if len(initErrors) == 0 { conn.Write(success) } else { conn.Write(failure) } conn.Close() } if len(initErrors) > 0 { return } sigv := <-sigc log.Printf("Received shutdown signal %v\n", sigv) stop <- sigv }
func startDaemon() { var out io.Writer = os.Stdout if !log.IsTerminal() { logFile, logFileErr := util.LogFile("rexray.log") failOnError(logFileErr) out = io.MultiWriter(os.Stdout, logFile) } log.SetOutput(out) fmt.Fprintf(out, "%s\n", rexRayLogoASCII) util.PrintVersion(out) fmt.Fprintln(out) var success []byte var failure []byte var conn net.Conn if !fg { success = []byte{0} failure = []byte{1} var dialErr error log.Printf("dialing %s", client) conn, dialErr = net.Dial("unix", client) if dialErr != nil { panic(dialErr) } } writePidErr := util.WritePidFile(-1) if writePidErr != nil { if conn != nil { conn.Write(failure) } panic(writePidErr) } defer func() { r := recover() os.Remove(util.PidFilePath()) if r != nil { panic(r) } }() log.Printf("created pid file, pid=%d", os.Getpid()) init := make(chan error) sigc := make(chan os.Signal, 1) stop := make(chan os.Signal) signal.Notify(sigc, syscall.SIGKILL, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { rrdaemon.Start(r.Config.Host, init, stop) }() var initErrors []error for initErr := range init { initErrors = append(initErrors, initErr) log.Println(initErr) } if conn != nil { if len(initErrors) == 0 { conn.Write(success) } else { conn.Write(failure) } conn.Close() } if len(initErrors) > 0 { return } sigv := <-sigc log.Printf("received shutdown signal %v", sigv) stop <- sigv }
persistent bool overrideby string } //RexrayCmd var RexrayCmd = &cobra.Command{ Use: "rexray", Run: func(cmd *cobra.Command, args []string) { InitConfig() if !daemon { cmd.Usage() return } if err := rrdaemon.Start(host); err != nil { log.Fatalf("Error starting daemon: %s", err) } }, } var versionCmd = &cobra.Command{ Use: "version", Run: func(cmd *cobra.Command, args []string) { fmt.Printf("\nRexray Version: %v\n", "0.1.150610") }, } var getdriversCmd = &cobra.Command{ Use: "get-drivers",