diff --git a/agent/agent.go b/agent/agent.go index 5d584d0..b2359c6 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -169,7 +169,7 @@ func (a *Agent) Start() error { } func (a *Agent) serveAPI(handler http.Handler) { - portStr := fmt.Sprintf(":%d", a.Config.HTTPBindAddr.Port) + portStr := fmt.Sprintf("%s:%d", a.Config.HTTPBindAddr.IP.String(), a.Config.HTTPBindAddr.Port) if err := http.ListenAndServe(portStr, handler); err != nil { a.logger.Error("api error", err) } diff --git a/api/agent.go b/api/agent.go index d693ec6..3ef7839 100644 --- a/api/agent.go +++ b/api/agent.go @@ -7,13 +7,12 @@ type AgentMember struct { Port uint16 Tags map[string]string // Status of the Member which corresponds to github.com/hashicorp/serf/serf.MemberStatus - // Value is one of: // - // AgentMemberNone = 0 - // AgentMemberAlive = 1 - // AgentMemberLeaving = 2 - // AgentMemberLeft = 3 - // AgentMemberFailed = 4 + // AgentMemberNone = 0 + // AgentMemberAlive = 1 + // AgentMemberLeaving = 2 + // AgentMemberLeft = 3 + // AgentMemberFailed = 4 Status int ProtocolMin uint8 ProtocolMax uint8 @@ -24,7 +23,7 @@ type AgentMember struct { } func (am *AgentMember) StatusPretty() string { - result := "unknown" + var result string switch am.Status { case 0: result = "none" @@ -36,13 +35,15 @@ func (am *AgentMember) StatusPretty() string { result = "left" case 4: result = "failed" + default: + result = "unknown" } return result } // XXX: this may be needed for consul compatability, but I'm leaving it // out for now in case it isn't. -const AllSegments = "_all" +// const AllSegments = "_all" // Agent can be used to query the Agent endpoints type Agent struct { diff --git a/api/api.go b/api/api.go index af5a825..9ade3d4 100644 --- a/api/api.go +++ b/api/api.go @@ -69,7 +69,7 @@ func defaultConfig(transportFn func() *http.Transport) *Config { return config } -// Client provides a client to the Consul API +// Client provides a client to the cascade API type Client struct { modifyLock sync.RWMutex headers http.Header @@ -97,22 +97,6 @@ func (c *Client) Headers() http.Header { return ret } -// AddHeader allows a single header key/value pair to be added -// in a race-safe fashion. -func (c *Client) AddHeader(key, value string) { - c.modifyLock.Lock() - defer c.modifyLock.Unlock() - c.headers.Add(key, value) -} - -// SetHeaders clears all previous headers and uses only the given -// ones going forward. -func (c *Client) SetHeaders(headers http.Header) { - c.modifyLock.Lock() - defer c.modifyLock.Unlock() - c.headers = headers -} - // NewClient returns a new client func NewClient(config *Config) (*Client, error) { // bootstrap the config @@ -434,20 +418,3 @@ func generateUnexpectedResponseCodeError(resp *http.Response) error { closeResponseBody(resp) return fmt.Errorf("Unexpected response code: %d (%s)", resp.StatusCode, buf.Bytes()) } - -func requireNotFoundOrOK(d time.Duration, resp *http.Response, e error) (bool, time.Duration, *http.Response, error) { - if e != nil { - if resp != nil { - closeResponseBody(resp) - } - return false, d, nil, e - } - switch resp.StatusCode { - case 200: - return true, d, resp, nil - case 404: - return false, d, resp, nil - default: - return false, d, nil, generateUnexpectedResponseCodeError(resp) - } -} diff --git a/command/list/list.go b/command/ls/ls.go similarity index 64% rename from command/list/list.go rename to command/ls/ls.go index d74be2b..cd4d53a 100644 --- a/command/list/list.go +++ b/command/ls/ls.go @@ -1,14 +1,14 @@ -package list +package ls import ( "fmt" "os" - "git.j3s.sh/cascade/command/list/members" + "git.j3s.sh/cascade/command/ls/members" ) -const usage = `cascade ls nodes -cascade ls members +const usage = `cascade ls members +cascade ls nodes cascade ls services ` diff --git a/command/list/members/members.go b/command/ls/members/members.go similarity index 85% rename from command/list/members/members.go rename to command/ls/members/members.go index 65539b5..2dacc97 100644 --- a/command/list/members/members.go +++ b/command/ls/members/members.go @@ -46,12 +46,9 @@ func Run(args []string) { members, err := client.Agent().Members() for _, m := range members { if membersFlags.details { - fmt.Printf("%s ", m.Name) - fmt.Printf("%s:%d ", m.Addr, m.Port) - fmt.Printf("%s", m.StatusPretty()) - fmt.Printf("\n") + fmt.Printf("%s %s:%d %s\n", m.Name, m.Addr, m.Port, m.StatusPretty()) } else { - fmt.Printf("%s\n", m.Name) + fmt.Println(m.Name) } } } diff --git a/command/list/nodes/nodes.go b/command/ls/nodes/nodes.go similarity index 92% rename from command/list/nodes/nodes.go rename to command/ls/nodes/nodes.go index 0fa25ff..bf5fae9 100644 --- a/command/list/nodes/nodes.go +++ b/command/ls/nodes/nodes.go @@ -1,4 +1,4 @@ -package list +package nodes import ( "fmt" diff --git a/command/list/services/services.go b/command/ls/services/services.go similarity index 90% rename from command/list/services/services.go rename to command/ls/services/services.go index 0fa25ff..0a83c90 100644 --- a/command/list/services/services.go +++ b/command/ls/services/services.go @@ -1,4 +1,4 @@ -package list +package services import ( "fmt" diff --git a/main.go b/main.go index efa4265..b9d34e3 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,7 @@ import ( "os" "git.j3s.sh/cascade/command/agent" - "git.j3s.sh/cascade/command/list" + "git.j3s.sh/cascade/command/ls" ) const usage = `cascade agent start a cascade agent @@ -25,8 +25,8 @@ func main() { switch os.Args[1] { case "agent": agent.Run(args) - case "list", "ls": - list.Run(args) + case "ls": + ls.Run(args) default: fmt.Fprintf(os.Stderr, "'%s' is not a valid command\n\n%s", command, usage) os.Exit(1)