69 lines
1.5 KiB
Go
69 lines
1.5 KiB
Go
package command
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/mitchellh/cli"
|
|
)
|
|
|
|
var _ cli.Command = (*CatalogListDatacentersCommand)(nil)
|
|
|
|
type CatalogListDatacentersCommand struct {
|
|
BaseCommand
|
|
}
|
|
|
|
func (c *CatalogListDatacentersCommand) Help() string {
|
|
helpText := `
|
|
Usage: consul catalog datacenters [options]
|
|
|
|
Retrieves the list of all known datacenters. This datacenters are sorted in
|
|
ascending order based on the estimated median round trip time from the servers
|
|
in this datacenter to the servers in the other datacenters.
|
|
|
|
To retrieve the list of datacenters:
|
|
|
|
$ consul catalog datacenters
|
|
|
|
For a full list of options and examples, please see the Consul documentation.
|
|
|
|
` + c.BaseCommand.Help()
|
|
|
|
return strings.TrimSpace(helpText)
|
|
}
|
|
|
|
func (c *CatalogListDatacentersCommand) Run(args []string) int {
|
|
f := c.BaseCommand.NewFlagSet(c)
|
|
|
|
if err := c.BaseCommand.Parse(args); err != nil {
|
|
return 1
|
|
}
|
|
|
|
if l := len(f.Args()); l > 0 {
|
|
c.UI.Error(fmt.Sprintf("Too many arguments (expected 0, got %d)", l))
|
|
return 1
|
|
}
|
|
|
|
// Create and test the HTTP client
|
|
client, err := c.BaseCommand.HTTPClient()
|
|
if err != nil {
|
|
c.UI.Error(fmt.Sprintf("Error connecting to Consul agent: %s", err))
|
|
return 1
|
|
}
|
|
|
|
dcs, err := client.Catalog().Datacenters()
|
|
if err != nil {
|
|
c.UI.Error(fmt.Sprintf("Error listing datacenters: %s", err))
|
|
}
|
|
|
|
for _, dc := range dcs {
|
|
c.UI.Info(dc)
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func (c *CatalogListDatacentersCommand) Synopsis() string {
|
|
return "Lists all known datacenters"
|
|
}
|