| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package healthcheck |
| |
| import ( |
| "fmt" |
| |
| "github.com/hashicorp/vault/sdk/logical" |
| ) |
| |
| func StringList(source interface{}) ([]string, error) { |
| if source == nil { |
| return nil, nil |
| } |
| |
| if value, ok := source.([]string); ok { |
| return value, nil |
| } |
| |
| if rValues, ok := source.([]interface{}); ok { |
| var result []string |
| for index, rValue := range rValues { |
| value, ok := rValue.(string) |
| if !ok { |
| return nil, fmt.Errorf("unknown source type for []string coercion at index %v: %T", index, rValue) |
| } |
| |
| result = append(result, value) |
| } |
| |
| return result, nil |
| } |
| |
| return nil, fmt.Errorf("unknown source type for []string coercion: %T", source) |
| } |
| |
| func fetchMountTune(e *Executor, versionError func()) (bool, *PathFetch, map[string]interface{}, error) { |
| tuneRet, err := e.FetchIfNotFetched(logical.ReadOperation, "/sys/mounts/{{mount}}/tune") |
| if err != nil { |
| return true, nil, nil, fmt.Errorf("failed to fetch mount tune information: %w", err) |
| } |
| |
| if !tuneRet.IsSecretOK() { |
| if tuneRet.IsUnsupportedPathError() { |
| versionError() |
| } |
| |
| return true, tuneRet, nil, nil |
| } |
| |
| var data map[string]interface{} = nil |
| if len(tuneRet.Secret.Data) > 0 { |
| data = tuneRet.Secret.Data |
| } |
| |
| return false, tuneRet, data, nil |
| } |