github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/creds/vault/manager_factory.go (about) 1 package vault 2 3 import ( 4 "fmt" 5 6 "github.com/pf-qiu/concourse/v6/atc/creds" 7 "github.com/jessevdk/go-flags" 8 ) 9 10 type vaultManagerFactory struct{} 11 12 func init() { 13 creds.Register("vault", NewVaultManagerFactory()) 14 } 15 16 func NewVaultManagerFactory() creds.ManagerFactory { 17 return &vaultManagerFactory{} 18 } 19 20 func (factory *vaultManagerFactory) AddConfig(group *flags.Group) creds.Manager { 21 manager := &VaultManager{} 22 23 subGroup, err := group.AddGroup("Vault Credential Management", "", manager) 24 if err != nil { 25 panic(err) 26 } 27 28 subGroup.Namespace = "vault" 29 30 return manager 31 } 32 33 func (factory *vaultManagerFactory) NewInstance(config interface{}) (creds.Manager, error) { 34 if c, ok := config.(map[string]interface{}); !ok { 35 return nil, fmt.Errorf("invalid vault config format") 36 } else { 37 manager := &VaultManager{} 38 39 err := manager.Config(c) 40 if err != nil { 41 return nil, err 42 } 43 44 return manager, nil 45 } 46 }