| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package api |
| |
| import ( |
| "context" |
| "net/http" |
| "time" |
| ) |
| |
| func (c *Sys) HAStatus() (*HAStatusResponse, error) { |
| return c.HAStatusWithContext(context.Background()) |
| } |
| |
| func (c *Sys) HAStatusWithContext(ctx context.Context) (*HAStatusResponse, error) { |
| ctx, cancelFunc := c.c.withConfiguredTimeout(ctx) |
| defer cancelFunc() |
| |
| r := c.c.NewRequest(http.MethodGet, "/v1/sys/ha-status") |
| |
| resp, err := c.c.rawRequestWithContext(ctx, r) |
| if err != nil { |
| return nil, err |
| } |
| defer resp.Body.Close() |
| |
| var result HAStatusResponse |
| err = resp.DecodeJSON(&result) |
| return &result, err |
| } |
| |
| type HAStatusResponse struct { |
| Nodes []HANode |
| } |
| |
| type HANode struct { |
| Hostname string `json:"hostname"` |
| APIAddress string `json:"api_address"` |
| ClusterAddress string `json:"cluster_address"` |
| ActiveNode bool `json:"active_node"` |
| LastEcho *time.Time `json:"last_echo"` |
| Version string `json:"version"` |
| UpgradeVersion string `json:"upgrade_version,omitempty"` |
| RedundancyZone string `json:"redundancy_zone,omitempty"` |
| } |