// writeETCDPidFile () is to write the pid of etcd instance func writeETCDPidFile(pid int) { // create directory to store etcd pid if it doesn't exist utils.InitDir(etcdPidDir) if err := ioutil.WriteFile(etcdPidFile, []byte(strconv.Itoa(pid)), os.ModePerm); err != nil { log.WithFields(log.Fields{ "error": err, "path": etcdPidFile, "pid": string(pid), }).Fatal("Failed to write etcd pid to the file") } }
func doInit() { log.Debug("Initializing GlusterD context") utils.InitDir(config.LocalStateDir) initMyUUID() initOpVersion() Rest = rest.New() initStore() log.Debug("Initialized GlusterD context") }
func doInit() { log.Debug("Initializing GlusterD context") utils.InitDir(config.GetString("localstatedir")) initOpVersion() Rest = rest.New() // When glusterd is started for the first time, we will have Restart set to // false. That is when we'll have to initialize prefixes by passing true to // InitStore(). On subsequent restarts of glusterd, we would want to skip // initializing prefixes by passing false to InitStore() InitStore(!Restart) log.Debug("Initialized GlusterD context") }
func main() { // Set IP and hostname once. gdctx.SetHostnameAndIP() // Parse flags and handle version and logging before continuing parseFlags() showvers, _ := flag.CommandLine.GetBool("version") if showvers { dumpVersionInfo() return } logLevel, _ := flag.CommandLine.GetString("loglevel") initLog(logLevel, os.Stderr) log.WithField("pid", os.Getpid()).Info("GlusterD starting") // Read in config confFile, _ := flag.CommandLine.GetString("config") initConfig(confFile) // Change to working directory before continuing if e := os.Chdir(config.GetString("workdir")); e != nil { log.WithError(e).Fatalf("failed to change working directory") } // TODO: This really should go into its own function. utils.InitDir(config.GetString("localstatedir")) utils.InitDir(config.GetString("rundir")) utils.InitDir(config.GetString("logdir")) utils.InitDir(path.Join(config.GetString("rundir"), "gluster")) utils.InitDir(path.Join(config.GetString("logdir"), "glusterfs/bricks")) gdctx.MyUUID = gdctx.InitMyUUID() // Start embedded etcd server etcdConfig, err := etcdmgmt.GetEtcdConfig(true) if err != nil { log.WithField("Error", err).Fatal("Could not fetch config options for etcd.") } err = etcdmgmt.StartEmbeddedEtcd(etcdConfig) if err != nil { log.WithField("Error", err).Fatal("Could not start embedded etcd server.") } gdctx.Init() for _, c := range commands.Commands { gdctx.Rest.SetRoutes(c.Routes()) c.RegisterStepFuncs() } // Store self information in the store if GlusterD is coming up for // first time if !gdctx.Restart { peer.AddSelfDetails() } // Start listening for incoming RPC requests err = server.StartListener() if err != nil { log.Fatal("Could not register RPC listener. Aborting") } sigCh := make(chan os.Signal) signal.Notify(sigCh) go func() { for s := range sigCh { log.WithField("signal", s).Debug("Signal recieved") switch s { case os.Interrupt: log.WithField("signal", s).Info("Recieved SIGTERM. Stopping GlusterD.") gdctx.Rest.Stop() etcdmgmt.DestroyEmbeddedEtcd() server.StopServer() log.Info("Termintaing GlusterD.") os.Exit(0) default: continue } } }() // Start GlusterD REST server err = gdctx.Rest.Listen() if err != nil { log.Fatal("Could not start GlusterD Rest Server. Aborting.") } }