open-consul/command/operautoget/operator_autopilot_get.go

80 lines
2.0 KiB
Go
Raw Normal View History

package operautoget
2017-02-24 23:54:49 +00:00
import (
"flag"
"fmt"
"github.com/hashicorp/consul/api"
"github.com/hashicorp/consul/command/flags"
"github.com/mitchellh/cli"
2017-02-24 23:54:49 +00:00
)
func New(ui cli.Ui) *cmd {
c := &cmd{UI: ui}
c.init()
return c
2017-02-24 23:54:49 +00:00
}
type cmd struct {
UI cli.Ui
flags *flag.FlagSet
http *flags.HTTPFlags
usage string
}
2017-02-24 23:54:49 +00:00
func (c *cmd) init() {
c.flags = flag.NewFlagSet("", flag.ContinueOnError)
c.http = &flags.HTTPFlags{}
flags.Merge(c.flags, c.http.ClientFlags())
flags.Merge(c.flags, c.http.ServerFlags())
c.usage = flags.Usage(usage, c.flags, c.http.ClientFlags(), c.http.ServerFlags())
2017-02-24 23:54:49 +00:00
}
func (c *cmd) Synopsis() string {
2017-02-24 23:54:49 +00:00
return "Display the current Autopilot configuration"
}
func (c *cmd) Help() string {
return c.usage
}
func (c *cmd) Run(args []string) int {
if err := c.flags.Parse(args); err != nil {
2017-02-24 23:54:49 +00:00
if err == flag.ErrHelp {
return 0
}
2017-04-21 00:02:42 +00:00
c.UI.Error(fmt.Sprintf("Failed to parse args: %v", err))
2017-02-24 23:54:49 +00:00
return 1
}
// Set up a client.
client, err := c.http.APIClient()
2017-02-24 23:54:49 +00:00
if err != nil {
2017-04-21 00:02:42 +00:00
c.UI.Error(fmt.Sprintf("Error initializing client: %s", err))
2017-02-24 23:54:49 +00:00
return 1
}
// Fetch the current configuration.
opts := &api.QueryOptions{
AllowStale: c.http.Stale(),
2017-02-24 23:54:49 +00:00
}
config, err := client.Operator().AutopilotGetConfiguration(opts)
if err != nil {
2017-04-21 00:02:42 +00:00
c.UI.Error(fmt.Sprintf("Error querying Autopilot configuration: %s", err))
2017-02-24 23:54:49 +00:00
return 1
}
2017-04-21 00:02:42 +00:00
c.UI.Output(fmt.Sprintf("CleanupDeadServers = %v", config.CleanupDeadServers))
c.UI.Output(fmt.Sprintf("LastContactThreshold = %v", config.LastContactThreshold.String()))
c.UI.Output(fmt.Sprintf("MaxTrailingLogs = %v", config.MaxTrailingLogs))
c.UI.Output(fmt.Sprintf("ServerStabilizationTime = %v", config.ServerStabilizationTime.String()))
c.UI.Output(fmt.Sprintf("RedundancyZoneTag = %q", config.RedundancyZoneTag))
c.UI.Output(fmt.Sprintf("DisableUpgradeMigration = %v", config.DisableUpgradeMigration))
c.UI.Output(fmt.Sprintf("UpgradeVersionTag = %q", config.UpgradeVersionTag))
2017-02-24 23:54:49 +00:00
return 0
}
const usage = `Usage: consul operator autopilot get-config [options]
Displays the current Autopilot configuration.`