dependency.go 1.3 KB

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