mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-30 02:02:43 +00:00
Store global clients at separate storage paths (#28926)
This commit is contained in:
@@ -282,33 +282,42 @@ func (d *ActivityLogDataGenerator) ToProto() *generation.ActivityLogMockInput {
|
||||
// Write writes the data to the API with the given write options. The method
|
||||
// returns the new paths that have been written. Note that the API endpoint will
|
||||
// only be present when Vault has been compiled with the "testonly" flag.
|
||||
func (d *ActivityLogDataGenerator) Write(ctx context.Context, writeOptions ...generation.WriteOptions) ([]string, error) {
|
||||
func (d *ActivityLogDataGenerator) Write(ctx context.Context, writeOptions ...generation.WriteOptions) ([]string, []string, error) {
|
||||
d.data.Write = writeOptions
|
||||
err := VerifyInput(d.data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
data, err := d.ToJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
resp, err := d.client.Logical().WriteWithContext(ctx, "sys/internal/counters/activity/write", map[string]interface{}{"input": string(data)})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
if resp.Data == nil {
|
||||
return nil, fmt.Errorf("received no data")
|
||||
return nil, nil, fmt.Errorf("received no data")
|
||||
}
|
||||
paths := resp.Data["paths"]
|
||||
castedPaths, ok := paths.([]interface{})
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("invalid paths data: %v", paths)
|
||||
return nil, nil, fmt.Errorf("invalid paths data: %v", paths)
|
||||
}
|
||||
returnPaths := make([]string, 0, len(castedPaths))
|
||||
for _, path := range castedPaths {
|
||||
returnPaths = append(returnPaths, path.(string))
|
||||
}
|
||||
return returnPaths, nil
|
||||
globalPaths := resp.Data["global_paths"]
|
||||
globalCastedPaths, ok := globalPaths.([]interface{})
|
||||
if !ok {
|
||||
return nil, nil, fmt.Errorf("invalid global paths data: %v", globalPaths)
|
||||
}
|
||||
returnGlobalPaths := make([]string, 0, len(globalCastedPaths))
|
||||
for _, path := range globalCastedPaths {
|
||||
returnGlobalPaths = append(returnGlobalPaths, path.(string))
|
||||
}
|
||||
return returnPaths, returnGlobalPaths, nil
|
||||
}
|
||||
|
||||
// VerifyInput checks that the input data is valid
|
||||
|
||||
@@ -116,7 +116,7 @@ func TestNewCurrentMonthData_AddClients(t *testing.T) {
|
||||
// sent to the server is correct.
|
||||
func TestWrite(t *testing.T) {
|
||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
_, err := io.WriteString(w, `{"data":{"paths":["path1","path2"]}}`)
|
||||
_, err := io.WriteString(w, `{"data":{"paths":["path1","path2"],"global_paths":["path2","path3"]}}`)
|
||||
require.NoError(t, err)
|
||||
body, err := io.ReadAll(r.Body)
|
||||
require.NoError(t, err)
|
||||
@@ -131,7 +131,7 @@ func TestWrite(t *testing.T) {
|
||||
Address: ts.URL,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
paths, err := NewActivityLogData(client).
|
||||
paths, globalPaths, err := NewActivityLogData(client).
|
||||
NewPreviousMonthData(3).
|
||||
NewClientSeen().
|
||||
NewPreviousMonthData(2).
|
||||
@@ -141,6 +141,7 @@ func TestWrite(t *testing.T) {
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, []string{"path1", "path2"}, paths)
|
||||
require.Equal(t, []string{"path2", "path3"}, globalPaths)
|
||||
}
|
||||
|
||||
func testAddClients(t *testing.T, makeGenerator func() *ActivityLogDataGenerator, getClient func(data *ActivityLogDataGenerator) *generation.Client) {
|
||||
|
||||
Reference in New Issue
Block a user