master
go 34 lines 902 Bytes
Raw
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 }