github.com/diptanu/nomad@v0.5.7-0.20170516172507-d72e86cbe3d9/command/server_force_leave.go (about) 1 package command 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 type ServerForceLeaveCommand struct { 9 Meta 10 } 11 12 func (c *ServerForceLeaveCommand) Help() string { 13 helpText := ` 14 Usage: nomad server-force-leave [options] <node> 15 16 Forces an server to enter the "left" state. This can be used to 17 eject nodes which have failed and will not rejoin the cluster. 18 Note that if the member is actually still alive, it will 19 eventually rejoin the cluster again. 20 21 General Options: 22 23 ` + generalOptionsUsage() 24 return strings.TrimSpace(helpText) 25 } 26 27 func (c *ServerForceLeaveCommand) Synopsis() string { 28 return "Force a server into the 'left' state" 29 } 30 31 func (c *ServerForceLeaveCommand) Run(args []string) int { 32 flags := c.Meta.FlagSet("server-force-leave", FlagSetClient) 33 flags.Usage = func() { c.Ui.Output(c.Help()) } 34 if err := flags.Parse(args); err != nil { 35 return 1 36 } 37 38 // Check that we got exactly one node 39 args = flags.Args() 40 if len(args) != 1 { 41 c.Ui.Error(c.Help()) 42 return 1 43 } 44 node := args[0] 45 46 // Get the HTTP client 47 client, err := c.Meta.Client() 48 if err != nil { 49 c.Ui.Error(fmt.Sprintf("Error initializing client: %s", err)) 50 return 1 51 } 52 53 // Call force-leave on the node 54 if err := client.Agent().ForceLeave(node); err != nil { 55 c.Ui.Error(fmt.Sprintf("Error force-leaving server %s: %s", node, err)) 56 return 1 57 } 58 59 return 0 60 }