func LoadConf(configFile string) (*Conf, error) { srvConf := &Conf{} conf, err := utils.InitConfigFromFile(configFile) if err != nil { log.Fatal(err) } srvConf.productName, _ = conf.ReadString("product", "test") if len(srvConf.productName) == 0 { log.Fatalf("invalid config: product entry is missing in %s", configFile) } srvConf.zkAddr, _ = conf.ReadString("zk", "") if len(srvConf.zkAddr) == 0 { log.Fatalf("invalid config: need zk entry is missing in %s", configFile) } srvConf.proxyId, _ = conf.ReadString("proxy_id", "") if len(srvConf.proxyId) == 0 { log.Fatalf("invalid config: need proxy_id entry is missing in %s", configFile) } srvConf.broker, _ = conf.ReadString("broker", "ledisdb") if len(srvConf.broker) == 0 { log.Fatalf("invalid config: need broker entry is missing in %s", configFile) } srvConf.slot_num, _ = conf.ReadInt("slot_num", 16) srvConf.net_timeout, _ = conf.ReadInt("net_timeout", 5) return srvConf, nil }
func main() { log.SetLevelByString("info") c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) signal.Notify(c, syscall.SIGTERM) go func() { <-c Fatal("ctrl-c or SIGTERM found, exit") }() // productName, _ = config.ReadString("product", "test") args, err := docopt.Parse(usage, nil, true, "codis config v0.1", true) if err != nil { log.Error(err) } // set config file if args["-c"] != nil { configFile = args["-c"].(string) config, err = utils.InitConfigFromFile(configFile) if err != nil { Fatal(err) } } else { config, err = utils.InitConfig() if err != nil { Fatal(err) } } // set output log file if args["-L"] != nil { log.SetOutputByName(args["-L"].(string)) } // set log level if args["--log-level"] != nil { log.SetLevelByString(args["--log-level"].(string)) } productName, _ = config.ReadString("product", "test") zkAddr, _ = config.ReadString("zk", "localhost:2181") zkConn, _ = zkhelper.ConnectToZk(zkAddr) zkLock = utils.GetZkLock(zkConn, productName) broker, _ = config.ReadString("broker", "ledisdb") slot_num, _ = config.ReadInt("slot_num", 16) log.Debugf("product: %s", productName) log.Debugf("zk: %s", zkAddr) log.Debugf("broker: %s", broker) if err := registerConfigNode(); err != nil { log.Fatal(errors.ErrorStack(err)) } defer unRegisterConfigNode() if err := removeOrphanLocks(); err != nil { log.Fatal(errors.ErrorStack(err)) } cmd := args["<command>"].(string) cmdArgs := args["<args>"].([]string) go http.ListenAndServe(":10086", nil) err = runCommand(cmd, cmdArgs) if err != nil { log.Fatal(errors.ErrorStack(err)) } }