1package command
2
3import (
4	"fmt"
5	"strings"
6
7	"github.com/posener/complete"
8)
9
10type OperatorAutopilotGetCommand struct {
11	Meta
12}
13
14func (c *OperatorAutopilotGetCommand) AutocompleteFlags() complete.Flags {
15	return mergeAutocompleteFlags(c.Meta.AutocompleteFlags(FlagSetClient))
16}
17
18func (c *OperatorAutopilotGetCommand) AutocompleteArgs() complete.Predictor {
19	return complete.PredictNothing
20}
21
22func (c *OperatorAutopilotGetCommand) Name() string { return "operator autopilot get-config" }
23func (c *OperatorAutopilotGetCommand) Run(args []string) int {
24	flags := c.Meta.FlagSet("autopilot", FlagSetClient)
25	flags.Usage = func() { c.Ui.Output(c.Help()) }
26
27	if err := flags.Parse(args); err != nil {
28		c.Ui.Error(fmt.Sprintf("Failed to parse args: %v", err))
29		return 1
30	}
31
32	// Set up a client.
33	client, err := c.Meta.Client()
34	if err != nil {
35		c.Ui.Error(fmt.Sprintf("Error initializing client: %s", err))
36		return 1
37	}
38
39	// Fetch the current configuration.
40	config, _, err := client.Operator().AutopilotGetConfiguration(nil)
41	if err != nil {
42		c.Ui.Error(fmt.Sprintf("Error querying Autopilot configuration: %s", err))
43		return 1
44	}
45	c.Ui.Output(fmt.Sprintf("CleanupDeadServers = %v", config.CleanupDeadServers))
46	c.Ui.Output(fmt.Sprintf("LastContactThreshold = %v", config.LastContactThreshold.String()))
47	c.Ui.Output(fmt.Sprintf("MaxTrailingLogs = %v", config.MaxTrailingLogs))
48	c.Ui.Output(fmt.Sprintf("ServerStabilizationTime = %v", config.ServerStabilizationTime.String()))
49	c.Ui.Output(fmt.Sprintf("EnableRedundancyZones = %v", config.EnableRedundancyZones))
50	c.Ui.Output(fmt.Sprintf("DisableUpgradeMigration = %v", config.DisableUpgradeMigration))
51	c.Ui.Output(fmt.Sprintf("EnableCustomUpgrades = %v", config.EnableCustomUpgrades))
52
53	return 0
54}
55
56func (c *OperatorAutopilotGetCommand) Synopsis() string {
57	return "Display the current Autopilot configuration"
58}
59
60func (c *OperatorAutopilotGetCommand) Help() string {
61	helpText := `
62Usage: nomad operator autopilot get-config [options]
63
64  Displays the current Autopilot configuration.
65
66General Options:
67
68  ` + generalOptionsUsage()
69
70	return strings.TrimSpace(helpText)
71}
72