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 }