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  }