github.com/hashicorp/nomad/api@v0.0.0-20240306165712-3193ac204f65/status.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package api 5 6 // Status is used to query the status-related endpoints. 7 type Status struct { 8 client *Client 9 } 10 11 // Status returns a handle on the status endpoints. 12 func (c *Client) Status() *Status { 13 return &Status{client: c} 14 } 15 16 // Leader is used to query for the current cluster leader. 17 func (s *Status) Leader() (string, error) { 18 var resp string 19 _, err := s.client.query("/v1/status/leader", &resp, nil) 20 if err != nil { 21 return "", err 22 } 23 return resp, nil 24 } 25 26 // RegionLeader is used to query for the leader in the passed region. 27 func (s *Status) RegionLeader(region string) (string, error) { 28 var resp string 29 q := QueryOptions{Region: region} 30 _, err := s.client.query("/v1/status/leader", &resp, &q) 31 if err != nil { 32 return "", err 33 } 34 return resp, nil 35 } 36 37 // Peers is used to query the addresses of the server peers 38 // in the cluster. 39 func (s *Status) Peers() ([]string, error) { 40 var resp []string 41 _, err := s.client.query("/v1/status/peers", &resp, nil) 42 if err != nil { 43 return nil, err 44 } 45 return resp, nil 46 }