github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/creds/ssm/manager_factory.go (about) 1 package ssm 2 3 import ( 4 "github.com/pf-qiu/concourse/v6/atc/creds" 5 flags "github.com/jessevdk/go-flags" 6 "github.com/mitchellh/mapstructure" 7 ) 8 9 type ssmManagerFactory struct{} 10 11 func init() { 12 creds.Register("ssm", NewSsmManagerFactory()) 13 } 14 15 func NewSsmManagerFactory() creds.ManagerFactory { 16 return &ssmManagerFactory{} 17 } 18 19 func (factory *ssmManagerFactory) AddConfig(group *flags.Group) creds.Manager { 20 manager := &SsmManager{} 21 subGroup, err := group.AddGroup("AWS SSM Credential Management", "", manager) 22 if err != nil { 23 panic(err) 24 } 25 26 subGroup.Namespace = "aws-ssm" 27 return manager 28 } 29 30 func (factory *ssmManagerFactory) NewInstance(config interface{}) (creds.Manager, error) { 31 manager := &SsmManager{ 32 TeamSecretTemplate: DefaultTeamSecretTemplate, 33 PipelineSecretTemplate: DefaultPipelineSecretTemplate, 34 } 35 36 decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ 37 ErrorUnused: true, 38 Result: &manager, 39 }) 40 if err != nil { 41 return nil, err 42 } 43 44 err = decoder.Decode(config) 45 if err != nil { 46 return nil, err 47 } 48 49 return manager, nil 50 }