Skip to content

Commit bf87cf4

Browse files
committed
feat(redis) Make sure the volumes are reconciled
This is now needed when we distribute redis creds are a volume. Signed-off-by: Oliver Gondža <ogondza@gmail.com>
1 parent a5c01be commit bf87cf4

2 files changed

Lines changed: 49 additions & 0 deletions

File tree

controllers/argocd/deployment.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,24 @@ func (r *ReconcileArgoCD) reconcileRedisDeployment(cr *argoproj.ArgoCD, useTLS b
531531
changed = true
532532
}
533533

534+
if !reflect.DeepEqual(deploy.Spec.Template.Spec.Containers[0].VolumeMounts, existing.Spec.Template.Spec.Containers[0].VolumeMounts) {
535+
existing.Spec.Template.Spec.Containers[0].VolumeMounts = deploy.Spec.Template.Spec.Containers[0].VolumeMounts
536+
if changed {
537+
explanation += ", "
538+
}
539+
explanation += "container volume mounts"
540+
changed = true
541+
}
542+
543+
if !reflect.DeepEqual(deploy.Spec.Template.Spec.Volumes, existing.Spec.Template.Spec.Volumes) {
544+
existing.Spec.Template.Spec.Volumes = deploy.Spec.Template.Spec.Volumes
545+
if changed {
546+
explanation += ", "
547+
}
548+
explanation += "volumes"
549+
changed = true
550+
}
551+
534552
if !reflect.DeepEqual(existing.Spec.Template.Spec.Containers[0].Env,
535553
deploy.Spec.Template.Spec.Containers[0].Env) {
536554
existing.Spec.Template.Spec.Containers[0].Env = deploy.Spec.Template.Spec.Containers[0].Env

controllers/argocd/deployment_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88
"testing"
99

10+
"github.com/stretchr/testify/require"
1011
appsv1 "k8s.io/api/apps/v1"
1112
corev1 "k8s.io/api/core/v1"
1213
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -2061,6 +2062,36 @@ func TestReconcileArgoCD_reconcileRedisDeployment(t *testing.T) {
20612062
assert.Equal(t, int32(3), *d.Spec.Replicas)
20622063
}
20632064

2065+
func TestReconcileArgoCD_reconcileRedisDeployment_volumeUpdate(t *testing.T) {
2066+
// tests reconciler hook for redis deployment
2067+
cr := makeTestArgoCD()
2068+
redisSecret := types.NamespacedName{Name: cr.Name + "-redis", Namespace: cr.Namespace}
2069+
2070+
resObjs := []client.Object{cr}
2071+
subresObjs := []client.Object{cr}
2072+
runtimeObjs := []runtime.Object{}
2073+
sch := makeTestReconcilerScheme(argoproj.AddToScheme)
2074+
cl := makeTestReconcilerClient(sch, resObjs, subresObjs, runtimeObjs)
2075+
r := makeTestReconciler(cl, sch, testclient.NewSimpleClientset())
2076+
2077+
defer resetHooks()()
2078+
Register(testDeploymentHook)
2079+
2080+
require.NoError(t, r.reconcileRedisDeployment(cr, false))
2081+
d := &appsv1.Deployment{}
2082+
require.NoError(t, r.Get(context.TODO(), redisSecret, d))
2083+
2084+
// Erase volumes
2085+
d.Spec.Template.Spec.Volumes = []corev1.Volume{}
2086+
require.NoError(t, r.Update(t.Context(), d))
2087+
require.NoError(t, r.reconcileRedisDeployment(cr, false))
2088+
2089+
// Volumes are readded
2090+
newRedis := &appsv1.Deployment{}
2091+
require.NoError(t, r.Get(context.TODO(), redisSecret, newRedis))
2092+
assert.Len(t, newRedis.Spec.Template.Spec.Volumes, 2)
2093+
}
2094+
20642095
func TestReconcileArgoCD_reconcileRedisDeployment_testImageUpgrade(t *testing.T) {
20652096
// tests reconciler hook for redis deployment
20662097
cr := makeTestArgoCD()

0 commit comments

Comments
 (0)