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  }