Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,12 @@ spec:
{{- if .Values.natsAddr }}
- --natsAddr={{ .Values.natsAddr }}
{{- else }}
- --natsAddr=nats://{{ .Release.Name }}-nats.{{ .Release.Namespace }}:4222
- --natsAddr=nats://{{ .Release.Name }}-nats.{{ .Release.Namespace }}.svc.cluster.local:4222
{{- end }}
{{- if .Values.etcdAddr }}
- --etcdAddr={{ .Values.etcdAddr }}
{{- else }}
- --etcdAddr={{ .Release.Name }}-etcd.{{ .Release.Namespace }}:2379
- --etcdAddr={{ .Release.Name }}-etcd.{{ .Release.Namespace }}.svc.cluster.local:2379
{{- end }}
{{- if and .Values.dynamo.istio.enabled .Values.dynamo.istio.gateway }}
- --istio-virtual-service-gateway={{ .Values.dynamo.istio.gateway }}
Expand Down
17 changes: 16 additions & 1 deletion deploy/cloud/operator/internal/dynamo/graph.go
Original file line number Diff line number Diff line change
Expand Up @@ -853,12 +853,27 @@ func GenerateBasePodSpec(
}
podSpec.Containers = append(podSpec.Containers, container)
podSpec.Volumes = append(podSpec.Volumes, volumes...)
podSpec.ImagePullSecrets = append(podSpec.ImagePullSecrets, imagePullSecrets...)
podSpec.ImagePullSecrets = ensureUniqueImagePullSecrets(podSpec.ImagePullSecrets, imagePullSecrets)

backend.UpdatePodSpec(&podSpec, numberOfNodes, role, component, serviceName)
return controller_common.CanonicalizePodSpec(&podSpec), nil
}

func ensureUniqueImagePullSecrets(existing, new []corev1.LocalObjectReference) []corev1.LocalObjectReference {
if len(existing) == 0 && len(new) == 0 {
return nil
}
uniqueSecrets := make(map[string]corev1.LocalObjectReference)
for _, secret := range append(existing, new...) {
uniqueSecrets[secret.Name] = secret
}
uniqueSecretsList := make([]corev1.LocalObjectReference, 0, len(uniqueSecrets))
for _, secret := range uniqueSecrets {
uniqueSecretsList = append(uniqueSecretsList, secret)
}
return uniqueSecretsList
}

func setMetricsLabels(labels map[string]string, dynamoGraphDeployment *v1alpha1.DynamoGraphDeployment) {
// Convert user-provided metrics annotation into controller-managed label
// By default (no annotation), metrics are enabled
Expand Down
61 changes: 61 additions & 0 deletions deploy/cloud/operator/internal/dynamo/graph_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5205,3 +5205,64 @@ func TestGenerateBasePodSpec_UseAsCompilationCache_BackendSupport(t *testing.T)
})
}
}

func Test_ensureUniqueImagePullSecrets(t *testing.T) {
tests := []struct {
name string
existing []corev1.LocalObjectReference
new []corev1.LocalObjectReference
want []corev1.LocalObjectReference
}{
{
name: "no existing or new secrets",
existing: []corev1.LocalObjectReference{},
new: []corev1.LocalObjectReference{},
want: nil,
},
{
name: "existing and new secrets",
existing: []corev1.LocalObjectReference{
{Name: "secret1"},
{Name: "secret2"},
},
new: []corev1.LocalObjectReference{
{Name: "secret3"},
},
want: []corev1.LocalObjectReference{
{Name: "secret1"},
{Name: "secret2"},
{Name: "secret3"},
},
},
{
name: "existing secrets with duplicate new secret",
existing: []corev1.LocalObjectReference{
{Name: "secret1"},
{Name: "secret2"},
},
new: []corev1.LocalObjectReference{
{Name: "secret2"},
{Name: "secret3"},
},
want: []corev1.LocalObjectReference{
{Name: "secret1"},
{Name: "secret2"},
{Name: "secret3"},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := ensureUniqueImagePullSecrets(tt.existing, tt.new)
sort.Slice(got, func(i, j int) bool {
return got[i].Name < got[j].Name
})
sort.Slice(tt.want, func(i, j int) bool {
return tt.want[i].Name < tt.want[j].Name
})
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("ensureUniqueImagePullSecrets() = %v, want %v", got, tt.want)
}
})
}
}
Loading