4 "github.com/docker/swarmkit/agent/exec"
5 "github.com/docker/swarmkit/api"
6 "github.com/pkg/errors"
9 type templatedSecretGetter struct {
10 dependencies exec.DependencyGetter
14 // NewTemplatedSecretGetter returns a SecretGetter that evaluates templates.
15 func NewTemplatedSecretGetter(dependencies exec.DependencyGetter, t *api.Task) exec.SecretGetter {
16 return templatedSecretGetter{dependencies: dependencies, t: t}
19 func (t templatedSecretGetter) Get(secretID string) (*api.Secret, error) {
20 if t.dependencies == nil {
21 return nil, errors.New("no secret provider available")
24 secrets := t.dependencies.Secrets()
26 return nil, errors.New("no secret provider available")
29 secret, err := secrets.Get(secretID)
34 newSpec, err := ExpandSecretSpec(secret, t.t, t.dependencies)
36 return secret, errors.Wrapf(err, "failed to expand templated secret %s", secretID)
40 secretCopy.Spec = *newSpec
41 return &secretCopy, nil
44 type templatedConfigGetter struct {
45 dependencies exec.DependencyGetter
49 // NewTemplatedConfigGetter returns a ConfigGetter that evaluates templates.
50 func NewTemplatedConfigGetter(dependencies exec.DependencyGetter, t *api.Task) exec.ConfigGetter {
51 return templatedConfigGetter{dependencies: dependencies, t: t}
54 func (t templatedConfigGetter) Get(configID string) (*api.Config, error) {
55 if t.dependencies == nil {
56 return nil, errors.New("no config provider available")
59 configs := t.dependencies.Configs()
61 return nil, errors.New("no config provider available")
64 config, err := configs.Get(configID)
69 newSpec, err := ExpandConfigSpec(config, t.t, t.dependencies)
71 return config, errors.Wrapf(err, "failed to expand templated config %s", configID)
75 configCopy.Spec = *newSpec
76 return &configCopy, nil
79 type templatedDependencyGetter struct {
80 secrets exec.SecretGetter
81 configs exec.ConfigGetter
84 // NewTemplatedDependencyGetter returns a DependencyGetter that evaluates templates.
85 func NewTemplatedDependencyGetter(dependencies exec.DependencyGetter, t *api.Task) exec.DependencyGetter {
86 return templatedDependencyGetter{
87 secrets: NewTemplatedSecretGetter(dependencies, t),
88 configs: NewTemplatedConfigGetter(dependencies, t),
92 func (t templatedDependencyGetter) Secrets() exec.SecretGetter {
96 func (t templatedDependencyGetter) Configs() exec.ConfigGetter {