master
go 36 lines 799 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package secretresolver
4
5 import (
6 "context"
7 "time"
8 )
9
10 // Resolver resolves secret references in config maps.
11 // In v2 it only owns local builtin resolvers and the optional secretstore callback.
12 type Resolver struct {
13 cmdTimeout time.Duration
14
15 providers map[string]func(context.Context, string, string) (string, error)
16 }
17
18 // New creates a resolver with local builtin provider defaults.
19 func New() *Resolver {
20 r := &Resolver{}
21 r.ensureDefaults()
22 return r
23 }
24
25 func (r *Resolver) ensureDefaults() {
26 if r.cmdTimeout <= 0 {
27 r.cmdTimeout = 10 * time.Second
28 }
29 if r.providers == nil {
30 r.providers = map[string]func(context.Context, string, string) (string, error){
31 "env": r.resolveEnv,
32 "file": r.resolveFile,
33 "cmd": r.resolveCmd,
34 }
35 }
36 }