blob: 74ef61a678f772bcd646558cabcdc5bd71480fce [file] [log] [blame]
William Kurkianea869482019-04-09 15:16:11 -04001package api
2
3// Status can be used to query the Status endpoints
4type Status struct {
5 c *Client
6}
7
8// Status returns a handle to the status endpoints
9func (c *Client) Status() *Status {
10 return &Status{c}
11}
12
13// Leader is used to query for a known leader
14func (s *Status) Leader() (string, error) {
15 r := s.c.newRequest("GET", "/v1/status/leader")
16 _, resp, err := requireOK(s.c.doRequest(r))
17 if err != nil {
18 return "", err
19 }
20 defer resp.Body.Close()
21
22 var leader string
23 if err := decodeBody(resp, &leader); err != nil {
24 return "", err
25 }
26 return leader, nil
27}
28
29// Peers is used to query for a known raft peers
30func (s *Status) Peers() ([]string, error) {
31 r := s.c.newRequest("GET", "/v1/status/peers")
32 _, resp, err := requireOK(s.c.doRequest(r))
33 if err != nil {
34 return nil, err
35 }
36 defer resp.Body.Close()
37
38 var peers []string
39 if err := decodeBody(resp, &peers); err != nil {
40 return nil, err
41 }
42 return peers, nil
43}