@@ -27,8 +27,11 @@ import (
2727 "k8s.io/client-go/kubernetes"
2828 "k8s.io/client-go/rest"
2929 ctrl "sigs.k8s.io/controller-runtime"
30+ "sigs.k8s.io/controller-runtime/pkg/builder"
3031 "sigs.k8s.io/controller-runtime/pkg/client"
32+ "sigs.k8s.io/controller-runtime/pkg/handler"
3133 "sigs.k8s.io/controller-runtime/pkg/log"
34+ "sigs.k8s.io/controller-runtime/pkg/predicate"
3235 "sigs.k8s.io/controller-runtime/pkg/reconcile"
3336
3437 "github.com/go-logr/logr"
@@ -407,11 +410,16 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
407410 Owns (& corev1.ServiceAccount {}).
408411 Owns (& rbacv1.Role {}).
409412 Owns (& rbacv1.RoleBinding {}).
413+ Watches (
414+ & corev1.Secret {},
415+ handler .EnqueueRequestsFromMapFunc (r .findObjectsForSrc ),
416+ builder .WithPredicates (predicate.ResourceVersionChangedPredicate {}),
417+ ).
410418 Complete (r )
411419}
412420
413421// findObjectsForSrc - returns a reconcile request if the object is referenced by a Redis CR
414- func (r * Reconciler ) findObjectsForSrc (src client.Object ) []reconcile.Request {
422+ func (r * Reconciler ) findObjectsForSrc (ctx context. Context , src client.Object ) []reconcile.Request {
415423 requests := []reconcile.Request {}
416424
417425 for _ , field := range allWatchFields {
@@ -420,7 +428,7 @@ func (r *Reconciler) findObjectsForSrc(src client.Object) []reconcile.Request {
420428 FieldSelector : fields .OneTermEqualSelector (field , src .GetName ()),
421429 Namespace : src .GetNamespace (),
422430 }
423- err := r .List (context . TODO () , crList , listOps )
431+ err := r .List (ctx , crList , listOps )
424432 if err != nil {
425433 return []reconcile.Request {}
426434 }
0 commit comments