func entryPoint(cliArgs []string, stdin io.Reader, stdout io.Writer, stderr io.Writer) int { args, err := docopt.Parse(usage, cliArgs, true, version, true) if err != nil { fmt.Fprintln(stderr, err) return 1 } if args["server"].(bool) { stop := make(chan interface{}, 1) startApp := NewServerApp(args["<port>"].(string), args["<definitions_dir>"].(string)) if err := startApp.Setup(); err != nil { fmt.Fprintln(stderr, err) return 1 } fmt.Println("[ERSATZ] Listening on port " + startApp.Port) startApp.Run(stop) } return 0 }
func main() { usage := `Hot Potato Router Control Usage: hprctl add <vhost> <backend_ip:port> [--weight=<n>] hprctl del <vhost> <backend_ip:port> [--weight=<n>] hprctl show <vhost> hprctl list Args: add add a new vhost and backend dell del a vhost and a backend show show all backends from a given vhost list list all vhosts Options: -h --help Show this screen. --version Show version. --weight=<n> Weight in wrr [default: 1]. ` arguments, _ := docopt.Parse(usage, nil, true, "Hot Potato Router 0.3.0", false) if arguments["add"] == true { _, err := rc.ZAdd(fmt.Sprintf("hpr-backends::%s", arguments["<vhost>"]), arguments["--weight"], arguments["<backend_ip:port>"]) hpr_utils.CheckPanic(err, "Unable to write on hpr database") return } if arguments["del"] == true { _, err := rc.ZRem(fmt.Sprintf("hpr-backends::%s", arguments["<vhost>"]), arguments["--weight"], arguments["<backend_ip:port>"]) hpr_utils.CheckPanic(err, "Unable to write on hpr database") return } if arguments["show"] == true { bes, err := rc.ZRange(fmt.Sprintf("hpr-backends::%s", arguments["<vhost>"]), 0, -1, true) hpr_utils.CheckPanic(err, "Unable to write on hpr database") fmt.Printf(":: vhost [ %s ]\n", arguments["<vhost>"]) var url string for _, be := range bes { count, err := strconv.Atoi(be) if err != nil { url = be continue } fmt.Printf("-- backend %s weight=%d\n", url, count) } return } if arguments["list"] == true { keys, err := rc.Keys("hpr-backends::*") hpr_utils.CheckPanic(err, "Unable to write on hpr database") for _, k := range keys { fmt.Printf(":: vhost [ %s ]\n", strings.TrimPrefix(k, "hpr-backends::")) } return } }