Skip to content

Commit

Permalink
refactor: rename SecretStoreFactory to SecretStoreProvider (#738)
Browse files Browse the repository at this point in the history
  • Loading branch information
adohe committed Jan 8, 2024
1 parent f1722d9 commit 687408f
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 43 deletions.
4 changes: 2 additions & 2 deletions pkg/secrets/interfaces.go
Expand Up @@ -12,8 +12,8 @@ type SecretStore interface {
GetSecret(ctx context.Context, ref v1.ExternalSecretRef) ([]byte, error)
}

// SecretStoreFactory is a factory type for secret store.
type SecretStoreFactory interface {
// SecretStoreProvider is a factory type for secret store.
type SecretStoreProvider interface {
// NewSecretStore constructs a usable secret store with specific provider spec.
NewSecretStore(spec v1.SecretStoreSpec) (SecretStore, error)
}
16 changes: 8 additions & 8 deletions pkg/secrets/providers.go
Expand Up @@ -19,23 +19,23 @@ var (
func init() {
createOnce.Do(func() {
secretStoreProviders = &Providers{
registry: make(map[string]SecretStoreFactory),
registry: make(map[string]SecretStoreProvider),
}
})
}

// Register a secret store provider with target spec.
func Register(ssf SecretStoreFactory, spec *v1.ProviderSpec) {
func Register(ssf SecretStoreProvider, spec *v1.ProviderSpec) {
secretStoreProviders.register(ssf, spec)
}

// GetProviderByName returns registered provider by name.
func GetProviderByName(providerName string) (SecretStoreFactory, bool) {
func GetProviderByName(providerName string) (SecretStoreProvider, bool) {
return secretStoreProviders.getProviderByName(providerName)
}

// GetProvider returns the provider from the provider spec.
func GetProvider(spec *v1.ProviderSpec) (SecretStoreFactory, bool) {
func GetProvider(spec *v1.ProviderSpec) (SecretStoreProvider, bool) {
if spec == nil {
return nil, false
}
Expand All @@ -50,12 +50,12 @@ func GetProvider(spec *v1.ProviderSpec) (SecretStoreFactory, bool) {

type Providers struct {
lock sync.RWMutex
registry map[string]SecretStoreFactory
registry map[string]SecretStoreProvider
}

// register registers a provider with associated spec. This
// is expected to happen during app startup.
func (ps *Providers) register(ssf SecretStoreFactory, spec *v1.ProviderSpec) {
func (ps *Providers) register(ssf SecretStoreProvider, spec *v1.ProviderSpec) {
providerName, err := getProviderName(spec)
if err != nil {
panic(fmt.Sprintf("provider registery failed to parse spec: %s", err.Error()))
Expand All @@ -69,15 +69,15 @@ func (ps *Providers) register(ssf SecretStoreFactory, spec *v1.ProviderSpec) {
log.Warnf("Provider %s was registered twice", providerName)
}
} else {
ps.registry = map[string]SecretStoreFactory{}
ps.registry = map[string]SecretStoreProvider{}
}

log.Infof("Registered secret store provider %s", providerName)
ps.registry[providerName] = ssf
}

// getProviderByName returns registered provider by name.
func (ps *Providers) getProviderByName(providerName string) (SecretStoreFactory, bool) {
func (ps *Providers) getProviderByName(providerName string) (SecretStoreProvider, bool) {
ps.lock.RLock()
defer ps.lock.RUnlock()
provider, found := ps.registry[providerName]
Expand Down
12 changes: 6 additions & 6 deletions pkg/secrets/providers/alicloud/secretsmanager/secretsmanager.go
Expand Up @@ -26,22 +26,22 @@ var (
accessKeySecret = os.Getenv("credentials_access_secret")
)

// DefaultFactory should implement the secrets.SecretStoreFactory interface.
var _ secrets.SecretStoreFactory = &DefaultFactory{}
// DefaultSecretStoreProvider should implement the secrets.SecretStoreProvider interface.
var _ secrets.SecretStoreProvider = &DefaultSecretStoreProvider{}

// smSecretStore should implement the secrets.SecretStore interface.
var _ secrets.SecretStore = &smSecretStore{}

// DefaultFactory implements the secrets.SecretStoreFactory interface.
type DefaultFactory struct{}
// DefaultSecretStoreProvider implements the secrets.SecretStoreProvider interface.
type DefaultSecretStoreProvider struct{}

// smSecretStore implements the secrets.SecretStore interface.
type smSecretStore struct {
client Client
}

// NewSecretStore constructs a Vault based secret store with specific secret store spec.
func (p *DefaultFactory) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
func (p *DefaultSecretStoreProvider) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
providerSpec := spec.Provider
if providerSpec == nil {
return nil, fmt.Errorf(errMissingProviderSpec)
Expand Down Expand Up @@ -115,7 +115,7 @@ func (s *smSecretStore) convertSecretToGjson(secretInfo *models.SecretInfo, refP
}

func init() {
secrets.Register(&DefaultFactory{}, &v1.ProviderSpec{
secrets.Register(&DefaultSecretStoreProvider{}, &v1.ProviderSpec{
Alicloud: &v1.AlicloudProvider{},
})
}
Expand Up @@ -139,7 +139,7 @@ func TestNewSecretStore(t *testing.T) {
},
}

factory := DefaultFactory{}
factory := DefaultSecretStoreProvider{}
for name, tc := range testCases {
_, err := factory.NewSecretStore(tc.spec)
if diff := cmp.Diff(err, tc.expectedErr, EquateErrors()); diff != "" {
Expand Down
10 changes: 5 additions & 5 deletions pkg/secrets/providers/aws/secretsmanager/secretsmanager.go
Expand Up @@ -21,16 +21,16 @@ const (
errFailedToCreateSession = "failed to create usable AWS session: %w"
)

// DefaultFactory should implement the secrets.SecretStoreFactory interface
var _ secrets.SecretStoreFactory = &DefaultFactory{}
// DefaultSecretStoreProvider should implement the secrets.SecretStoreProvider interface
var _ secrets.SecretStoreProvider = &DefaultSecretStoreProvider{}

// smSecretStore should implement the secrets.SecretStore interface
var _ secrets.SecretStore = &smSecretStore{}

type DefaultFactory struct{}
type DefaultSecretStoreProvider struct{}

// NewSecretStore constructs a Vault based secret store with specific secret store spec.
func (p *DefaultFactory) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
func (p *DefaultSecretStoreProvider) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
providerSpec := spec.Provider
if providerSpec == nil {
return nil, fmt.Errorf(errMissingProviderSpec)
Expand Down Expand Up @@ -126,7 +126,7 @@ func (s *smSecretStore) convertSecretToGjson(secretValueOutput *secretsmanager.G
}

func init() {
secrets.Register(&DefaultFactory{}, &v1.ProviderSpec{
secrets.Register(&DefaultSecretStoreProvider{}, &v1.ProviderSpec{
AWS: &v1.AWSProvider{},
})
}
Expand Up @@ -159,7 +159,7 @@ func TestNewSecretStore(t *testing.T) {
},
}

factory := DefaultFactory{}
factory := DefaultSecretStoreProvider{}
for name, tc := range testCases {
_, err := factory.NewSecretStore(tc.spec)
if diff := cmp.Diff(err, tc.expectedErr, EquateErrors()); diff != "" {
Expand Down
8 changes: 4 additions & 4 deletions pkg/secrets/providers/azure/keyvault/keyvault.go
Expand Up @@ -29,16 +29,16 @@ const (
errUnknownObjectType = "unknown Azure KeyVault object Type for %s"
)

// DefaultFactory should implement the secrets.SecretStoreFactory interface
var _ secrets.SecretStoreFactory = &DefaultFactory{}
// DefaultSecretStoreProvider should implement the secrets.SecretStoreProvider interface
var _ secrets.SecretStoreProvider = &DefaultSecretStoreProvider{}

// kvSecretStore should implement the secrets.SecretStore interface
var _ secrets.SecretStore = &kvSecretStore{}

type DefaultFactory struct{}
type DefaultSecretStoreProvider struct{}

// NewSecretStore constructs an Azure KeyVault based secret store with specific secret store spec.
func (p *DefaultFactory) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
func (p *DefaultSecretStoreProvider) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
providerSpec := spec.Provider
if providerSpec == nil {
return nil, fmt.Errorf(errMissingProviderSpec)
Expand Down
2 changes: 1 addition & 1 deletion pkg/secrets/providers/azure/keyvault/keyvault_test.go
Expand Up @@ -149,7 +149,7 @@ func TestNewSecretStore(t *testing.T) {
},
}

factory := DefaultFactory{}
factory := DefaultSecretStoreProvider{}
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
if tc.initEnv {
Expand Down
14 changes: 5 additions & 9 deletions pkg/secrets/providers/hashivault/vault.go
Expand Up @@ -28,20 +28,16 @@ const (
errBuildVaultClient = "failed to new Vault client: %w"
)

// DefaultFactory should implement the secrets.SecretStoreFactory interface
var _ secrets.SecretStoreFactory = &DefaultFactory{}
// DefaultSecretStoreProvider should implement the secrets.SecretStoreProvider interface
var _ secrets.SecretStoreProvider = &DefaultSecretStoreProvider{}

// vaultSecretStore should implement the secrets.SecretStore interface
var _ secrets.SecretStore = &vaultSecretStore{}

type DefaultFactory struct{}

func (p *DefaultFactory) Type() string {
return "Vault"
}
type DefaultSecretStoreProvider struct{}

// NewSecretStore constructs a Vault based secret store with specific secret store spec.
func (p *DefaultFactory) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
func (p *DefaultSecretStoreProvider) NewSecretStore(spec v1.SecretStoreSpec) (secrets.SecretStore, error) {
providerSpec := spec.Provider
if providerSpec == nil || providerSpec.Vault == nil {
return nil, errors.New(errInvalidVaultSecretStore)
Expand Down Expand Up @@ -226,7 +222,7 @@ func getTypedKey(data map[string]interface{}, key string) ([]byte, error) {
}

func init() {
secrets.Register(&DefaultFactory{}, &v1.ProviderSpec{
secrets.Register(&DefaultSecretStoreProvider{}, &v1.ProviderSpec{
Vault: &v1.VaultProvider{},
})
}
2 changes: 1 addition & 1 deletion pkg/secrets/providers/hashivault/vault_test.go
Expand Up @@ -297,7 +297,7 @@ func TestNewSecretStore(t *testing.T) {
},
}

factory := DefaultFactory{}
factory := DefaultSecretStoreProvider{}
for name, tc := range testCases {
_, err := factory.NewSecretStore(tc.spec)
if diff := cmp.Diff(err, tc.expectedErr, EquateErrors()); diff != "" {
Expand Down
10 changes: 5 additions & 5 deletions pkg/secrets/providers_test.go
Expand Up @@ -17,11 +17,11 @@ func (fss *FakeSecretStore) GetSecret(_ context.Context, _ v1.ExternalSecretRef)
return []byte("NOOP"), nil
}

// FakeSecretStoreFactory is the fake implementation of SecretStoreFactory.
type FakeSecretStoreFactory struct{}
// FakeSecretStoreProvider is the fake implementation of SecretStoreProvider.
type FakeSecretStoreProvider struct{}

// Fake implementation of SecretStoreFactory.NewSecretStore.
func (fsf *FakeSecretStoreFactory) NewSecretStore(_ v1.SecretStoreSpec) (SecretStore, error) {
// Fake implementation of SecretStoreProvider.NewSecretStore.
func (fsf *FakeSecretStoreProvider) NewSecretStore(_ v1.SecretStoreSpec) (SecretStore, error) {
return &FakeSecretStore{}, nil
}

Expand Down Expand Up @@ -49,7 +49,7 @@ func TestRegister(t *testing.T) {
},
}

fsp := &FakeSecretStoreFactory{}
fsp := &FakeSecretStoreProvider{}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
if tc.shouldPanic {
Expand Down

0 comments on commit 687408f

Please sign in to comment.