github.com/djenriquez/nomad-1@v0.8.1/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  }