mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 10:12:35 +00:00 
			
		
		
		
	 73bf3ebc7c
			
		
	
	73bf3ebc7c
	
	
	
		
			
			* logic * actually got test working * heartbeat health test * fix healthy definition and add changelog * fix test condition * actually fix test condition * Update vault/testing.go Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com> * close body --------- Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) HashiCorp, Inc.
 | |
| // SPDX-License-Identifier: MPL-2.0
 | |
| 
 | |
| package api
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"net/http"
 | |
| )
 | |
| 
 | |
| func (c *Sys) Health() (*HealthResponse, error) {
 | |
| 	return c.HealthWithContext(context.Background())
 | |
| }
 | |
| 
 | |
| func (c *Sys) HealthWithContext(ctx context.Context) (*HealthResponse, error) {
 | |
| 	ctx, cancelFunc := c.c.withConfiguredTimeout(ctx)
 | |
| 	defer cancelFunc()
 | |
| 
 | |
| 	r := c.c.NewRequest(http.MethodGet, "/v1/sys/health")
 | |
| 	// If the code is 400 or above it will automatically turn into an error,
 | |
| 	// but the sys/health API defaults to returning 5xx when not sealed or
 | |
| 	// inited, so we force this code to be something else so we parse correctly
 | |
| 	r.Params.Add("uninitcode", "299")
 | |
| 	r.Params.Add("sealedcode", "299")
 | |
| 	r.Params.Add("standbycode", "299")
 | |
| 	r.Params.Add("drsecondarycode", "299")
 | |
| 	r.Params.Add("performancestandbycode", "299")
 | |
| 	r.Params.Add("removedcode", "299")
 | |
| 	r.Params.Add("haunhealthycode", "299")
 | |
| 
 | |
| 	resp, err := c.c.rawRequestWithContext(ctx, r)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	defer resp.Body.Close()
 | |
| 
 | |
| 	var result HealthResponse
 | |
| 	err = resp.DecodeJSON(&result)
 | |
| 	return &result, err
 | |
| }
 | |
| 
 | |
| type HealthResponse struct {
 | |
| 	Initialized                          bool   `json:"initialized"`
 | |
| 	Sealed                               bool   `json:"sealed"`
 | |
| 	Standby                              bool   `json:"standby"`
 | |
| 	PerformanceStandby                   bool   `json:"performance_standby"`
 | |
| 	ReplicationPerformanceMode           string `json:"replication_performance_mode"`
 | |
| 	ReplicationDRMode                    string `json:"replication_dr_mode"`
 | |
| 	ServerTimeUTC                        int64  `json:"server_time_utc"`
 | |
| 	Version                              string `json:"version"`
 | |
| 	ClusterName                          string `json:"cluster_name,omitempty"`
 | |
| 	ClusterID                            string `json:"cluster_id,omitempty"`
 | |
| 	LastWAL                              uint64 `json:"last_wal,omitempty"`
 | |
| 	Enterprise                           bool   `json:"enterprise"`
 | |
| 	EchoDurationMillis                   int64  `json:"echo_duration_ms"`
 | |
| 	ClockSkewMillis                      int64  `json:"clock_skew_ms"`
 | |
| 	ReplicationPrimaryCanaryAgeMillis    int64  `json:"replication_primary_canary_age_ms"`
 | |
| 	RemovedFromCluster                   *bool  `json:"removed_from_cluster,omitempty"`
 | |
| 	HAConnectionHealthy                  *bool  `json:"ha_connection_healthy,omitempty"`
 | |
| 	LastRequestForwardingHeartbeatMillis int64  `json:"last_request_forwarding_heartbeat_ms,omitempty"`
 | |
| }
 |