mirror of https://github.com/hashicorp/consul
44 lines
932 B
Go
44 lines
932 B
Go
package api
|
|
|
|
// Status can be used to query the Status endpoints
|
|
type Status struct {
|
|
c *Client
|
|
}
|
|
|
|
// Status returns a handle to the status endpoints
|
|
func (c *Client) Status() *Status {
|
|
return &Status{c}
|
|
}
|
|
|
|
// Leader is used to query for a known leader
|
|
func (s *Status) Leader() (string, error) {
|
|
r := s.c.newRequest("GET", "/v1/status/leader")
|
|
_, resp, err := requireOK(s.c.doRequest(r))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var leader string
|
|
if err := decodeBody(resp, &leader); err != nil {
|
|
return "", err
|
|
}
|
|
return leader, nil
|
|
}
|
|
|
|
// Peers is used to query for a known raft peers
|
|
func (s *Status) Peers() ([]string, error) {
|
|
r := s.c.newRequest("GET", "/v1/status/peers")
|
|
_, resp, err := requireOK(s.c.doRequest(r))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
var peers []string
|
|
if err := decodeBody(resp, &peers); err != nil {
|
|
return nil, err
|
|
}
|
|
return peers, nil
|
|
}
|