github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/creds/manager.go (about)

     1  package creds
     2  
     3  import (
     4  	"code.cloudfoundry.org/lager"
     5  	"github.com/jessevdk/go-flags"
     6  )
     7  
     8  type Manager interface {
     9  	IsConfigured() bool
    10  	Validate() error
    11  	Health() (*HealthResponse, error)
    12  	Init(lager.Logger) error
    13  	Close(logger lager.Logger)
    14  
    15  	NewSecretsFactory(lager.Logger) (SecretsFactory, error)
    16  }
    17  
    18  type ManagerFactory interface {
    19  	AddConfig(*flags.Group) Manager
    20  	NewInstance(interface{}) (Manager, error)
    21  }
    22  
    23  type Managers map[string]Manager
    24  
    25  type CredentialManagementConfig struct {
    26  	RetryConfig SecretRetryConfig
    27  	CacheConfig SecretCacheConfig
    28  }
    29  
    30  // NewSecrets creates a Secrets object from secretsFactory based on configs.
    31  func (c CredentialManagementConfig) NewSecrets(secretsFactory SecretsFactory) Secrets {
    32  	result := secretsFactory.NewSecrets()
    33  	result = NewRetryableSecrets(result, c.RetryConfig)
    34  	if c.CacheConfig.Enabled {
    35  		result = NewCachedSecrets(result, c.CacheConfig)
    36  	}
    37  	return result
    38  }
    39  
    40  type HealthResponse struct {
    41  	Response interface{} `json:"response,omitempty"`
    42  	Error    string      `json:"error,omitempty"`
    43  	Method   string      `json:"method,omitempty"`
    44  }
    45  
    46  var managerFactories = map[string]ManagerFactory{}
    47  
    48  func Register(name string, managerFactory ManagerFactory) {
    49  	managerFactories[name] = managerFactory
    50  }
    51  
    52  func ManagerFactories() map[string]ManagerFactory {
    53  	return managerFactories
    54  }