| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | package secretstore |
| 4 | |
| 5 | import ( |
| 6 | "context" |
| 7 | "fmt" |
| 8 | |
| 9 | secretresolver "github.com/netdata/netdata/go/plugins/plugin/agent/secrets/resolver" |
| 10 | ) |
| 11 | |
| 12 | func resolveProviderPayload(ctx context.Context, cfg Config) (Config, error) { |
| 13 | if cfg == nil { |
| 14 | return nil, nil |
| 15 | } |
| 16 | |
| 17 | // prepareConfig already deep-clones the raw config before calling here. |
| 18 | // Build a top-level payload view to keep store identity/source metadata static |
| 19 | // while avoiding another YAML round-trip clone for provider payload resolution. |
| 20 | payload := make(Config, len(cfg)) |
| 21 | for k, v := range cfg { |
| 22 | switch k { |
| 23 | case keyName, keyKind, ikeySource, ikeySourceType: |
| 24 | continue |
| 25 | default: |
| 26 | payload[k] = v |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | if err := secretresolver.New().ResolveWithStoreResolver(ctx, payload, nil); err != nil { |
| 31 | return nil, fmt.Errorf("resolving provider payload secrets: %w", err) |
| 32 | } |
| 33 | return payload, nil |
| 34 | } |