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  }