mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	* sys: add host-info endpoint, add client API method * remove old commented handler * add http tests, fix bugs * query all partitions for disk usage * fix Timestamp decoding * add comments for clarification * dont append a nil entry on disk usage query error * remove HostInfo from the sdk api We can use Logical().Read(...) to query this endpoint since the payload is contained with the data object. All warnings are preserved under Secret.Warnings. * ensure that we're testing failure case against a standby node * add and use TestWaitStandby to ensure core is on standby * remove TestWaitStandby * respond with local-only error * move HostInfo into its own helper package * fix imports; use new no-forward handler * add cpu times to collection * emit clearer multierrors/warnings by collection type * add comments on HostInfo fields
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package http
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/hashicorp/vault/helper/hostutil"
 | 
						|
	"github.com/hashicorp/vault/vault"
 | 
						|
)
 | 
						|
 | 
						|
func TestSysHostInfo(t *testing.T) {
 | 
						|
	cluster := vault.NewTestCluster(t, &vault.CoreConfig{}, &vault.TestClusterOptions{
 | 
						|
		HandlerFunc: Handler,
 | 
						|
	})
 | 
						|
	cluster.Start()
 | 
						|
	defer cluster.Cleanup()
 | 
						|
	cores := cluster.Cores
 | 
						|
 | 
						|
	vault.TestWaitActive(t, cores[0].Core)
 | 
						|
 | 
						|
	// Query against the active node, should get host information back
 | 
						|
	secret, err := cores[0].Client.Logical().Read("sys/host-info")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if secret == nil || secret.Data == nil {
 | 
						|
		t.Fatal("expected data in the response")
 | 
						|
	}
 | 
						|
 | 
						|
	dataBytes, err := json.Marshal(secret.Data)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	var info hostutil.HostInfo
 | 
						|
	if err := json.Unmarshal(dataBytes, &info); err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if info.Timestamp.IsZero() {
 | 
						|
		t.Fatal("expected non-zero Timestamp")
 | 
						|
	}
 | 
						|
	if info.CPU == nil {
 | 
						|
		t.Fatal("expected non-nil CPU value")
 | 
						|
	}
 | 
						|
	if info.Disk == nil {
 | 
						|
		t.Fatal("expected disk info")
 | 
						|
	}
 | 
						|
	if info.Host == nil {
 | 
						|
		t.Fatal("expected host info")
 | 
						|
	}
 | 
						|
	if info.Memory == nil {
 | 
						|
		t.Fatal("expected memory info")
 | 
						|
	}
 | 
						|
 | 
						|
	// Query against a standby, should error
 | 
						|
	secret, err = cores[1].Client.Logical().Read("sys/host-info")
 | 
						|
	if err == nil || secret != nil {
 | 
						|
		t.Fatalf("expected error on standby node, HostInfo: %v", secret)
 | 
						|
	}
 | 
						|
}
 |