func (c *JoinCommand) Run(args []string) int { cmdFlags := flag.NewFlagSet("join", flag.ContinueOnError) cmdFlags.Usage = func() { c.Ui.Output(c.Help()) } rpcAddr := RPCAddrFlag(cmdFlags) if err := cmdFlags.Parse(args); err != nil { return 1 } addrs := cmdFlags.Args() if len(addrs) == 0 { c.Ui.Error("At least one address to join must be specified.") c.Ui.Error("") c.Ui.Error(c.Help()) return 1 } client, err := sr6.NewRPCClient(*rpcAddr) if err != nil { c.Ui.Error(fmt.Sprintf("Error connecting to sr6 agent: %s", err)) return 1 } defer client.Close() n, err := client.Join(addrs) if err != nil { c.Ui.Error(fmt.Sprintf("Error joining the cluster: %s", err)) return 1 } c.Ui.Output(fmt.Sprintf("Successfully joined cluster by contacting %d nodes.", n)) return 0 }
func (c *LeaveCommand) Run(args []string) int { cmdFlags := flag.NewFlagSet("leave", flag.ContinueOnError) cmdFlags.Usage = func() { c.Ui.Output(c.Help()) } rpcAddr := RPCAddrFlag(cmdFlags) if err := cmdFlags.Parse(args); err != nil { return 1 } client, err := sr6.NewRPCClient(*rpcAddr) if err != nil { c.Ui.Error(fmt.Sprintf("Error connecting to sr6 agent: %s", err)) return 1 } defer client.Close() if err := client.Leave(); err != nil { c.Ui.Error(fmt.Sprintf("Error leaving cluster: %s", err)) return 1 } return 0 }
func (c *MembersCommand) Run(args []string) int { cmdFlags := flag.NewFlagSet("agent", flag.ContinueOnError) cmdFlags.Usage = func() { c.Ui.Output(c.Help()) } rpcAddr := RPCAddrFlag(cmdFlags) if err := cmdFlags.Parse(args); err != nil { return 1 } client, err := sr6.NewRPCClient(*rpcAddr) if err != nil { c.Ui.Error(fmt.Sprintf("Error connecting to sr6 agent: %s", err)) return 1 } defer client.Close() members, err := client.Members() if err != nil { c.Ui.Error(fmt.Sprintf("Error getting cluster members: %s", err)) return 1 } result := columnize.SimpleFormat(output(members)) fmt.Println(result) return 0 }