Skip to content

Commit 088abfe

Browse files
committed
Abstract secret fetching
1 parent 19e1d9a commit 088abfe

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

internal/controller/atlasthirdpartyintegrations/reconciler.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,25 +104,26 @@ func (r *Reconciler) populateIntegration(ctx context.Context, integration *akov2
104104
}
105105

106106
func fetchIntegrationSecrets(ctx context.Context, kubeClient client.Client, integration *akov2next.AtlasThirdPartyIntegration) (map[string][]byte, error) {
107+
ks := secret.NewKubernetesSecretProvider(kubeClient)
107108
switch integration.Spec.Type {
108109
case "DATADOG":
109-
return secret.Fetch(ctx, kubeClient, integration.Spec.Datadog.APIKeySecret.Name)
110+
return ks.Fetch(ctx, integration.Spec.Datadog.APIKeySecret.Name)
110111
case "MICROSOFT_TEAMS":
111-
return secret.Fetch(ctx, kubeClient, integration.Spec.MicrosoftTeams.URLSecret.Name)
112+
return ks.Fetch(ctx, integration.Spec.MicrosoftTeams.URLSecret.Name)
112113
case "NEW_RELIC":
113-
return secret.Fetch(ctx, kubeClient, integration.Spec.NewRelic.CredentialsSecret.Name)
114+
return ks.Fetch(ctx, integration.Spec.NewRelic.CredentialsSecret.Name)
114115
case "OPS_GENIE":
115-
return secret.Fetch(ctx, kubeClient, integration.Spec.OpsGenie.APIKeySecret.Name)
116+
return ks.Fetch(ctx, integration.Spec.OpsGenie.APIKeySecret.Name)
116117
case "PAGER_DUTY":
117-
return secret.Fetch(ctx, kubeClient, integration.Spec.PagerDuty.ServiceKeySecret.Name)
118+
return ks.Fetch(ctx, integration.Spec.PagerDuty.ServiceKeySecret.Name)
118119
case "PROMETHEUS":
119-
return secret.Fetch(ctx, kubeClient, integration.Spec.Prometheus.PrometheusCredentialsSecret.Name)
120+
return ks.Fetch(ctx, integration.Spec.Prometheus.PrometheusCredentialsSecret.Name)
120121
case "SLACK":
121-
return secret.Fetch(ctx, kubeClient, integration.Spec.Slack.APITokenSecret.Name)
122+
return ks.Fetch(ctx, integration.Spec.Slack.APITokenSecret.Name)
122123
case "VICTOR_OPS":
123-
return secret.Fetch(ctx, kubeClient, integration.Spec.VictorOps.APIKeySecret.Name)
124+
return ks.Fetch(ctx, integration.Spec.VictorOps.APIKeySecret.Name)
124125
case "WEBHOOK":
125-
return secret.Fetch(ctx, kubeClient, integration.Spec.Webhook.URLSecret.Name)
126+
return ks.Fetch(ctx, integration.Spec.Webhook.URLSecret.Name)
126127
default:
127128
return nil, fmt.Errorf("%w %v", thirdpartyintegration.ErrUnsupportedIntegrationType, integration.Spec.Type)
128129
}

pkg/secret/secret.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,23 @@ import (
2222
"sigs.k8s.io/controller-runtime/pkg/client"
2323
)
2424

25-
func Fetch(ctx context.Context, kubeClient client.Client, secretName string) (map[string][]byte, error) {
25+
type Secret map[string][]byte
26+
27+
type SecretProvider interface {
28+
Fetch(ctx context.Context, name string) (Secret, error)
29+
}
30+
31+
type kubernetesSecrets struct {
32+
client client.Client
33+
}
34+
35+
func NewKubernetesSecretProvider(c client.Client) SecretProvider {
36+
return &kubernetesSecrets{client: c}
37+
}
38+
39+
func (ks *kubernetesSecrets) Fetch(ctx context.Context, secretName string) (Secret, error) {
2640
secret := v1.Secret{}
27-
err := kubeClient.Get(ctx, client.ObjectKey{Name: secretName}, &secret)
41+
err := ks.client.Get(ctx, client.ObjectKey{Name: secretName}, &secret)
2842
if err != nil {
2943
return nil, fmt.Errorf("failed to fetch secret %q: %w", secretName, err)
3044
}

0 commit comments

Comments
 (0)