github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/agent/dependency.go (about) 1 package agent 2 3 import ( 4 "github.com/docker/swarmkit/agent/configs" 5 "github.com/docker/swarmkit/agent/exec" 6 "github.com/docker/swarmkit/agent/secrets" 7 "github.com/docker/swarmkit/api" 8 ) 9 10 type dependencyManager struct { 11 secrets exec.SecretsManager 12 configs exec.ConfigsManager 13 } 14 15 // NewDependencyManager creates a dependency manager object that wraps 16 // objects which provide access to various dependency types. 17 func NewDependencyManager() exec.DependencyManager { 18 return &dependencyManager{ 19 secrets: secrets.NewManager(), 20 configs: configs.NewManager(), 21 } 22 } 23 24 func (d *dependencyManager) Secrets() exec.SecretsManager { 25 return d.secrets 26 } 27 28 func (d *dependencyManager) Configs() exec.ConfigsManager { 29 return d.configs 30 } 31 32 type dependencyGetter struct { 33 secrets exec.SecretGetter 34 configs exec.ConfigGetter 35 } 36 37 func (d *dependencyGetter) Secrets() exec.SecretGetter { 38 return d.secrets 39 } 40 41 func (d *dependencyGetter) Configs() exec.ConfigGetter { 42 return d.configs 43 } 44 45 // Restrict provides getters that only allows access to the dependencies 46 // referenced by the task. 47 func Restrict(dependencies exec.DependencyManager, t *api.Task) exec.DependencyGetter { 48 return &dependencyGetter{ 49 secrets: secrets.Restrict(dependencies.Secrets(), t), 50 configs: configs.Restrict(dependencies.Configs(), t), 51 } 52 }