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  }