From ffb9e5a46655d37cb77bb6f879299db7bd2e2e25 Mon Sep 17 00:00:00 2001 From: Elena Gershkovich Date: Wed, 18 Sep 2024 08:04:01 +0300 Subject: [PATCH] VolumeReplicationGroupReconciler must watch VolumeGroupReolication resources Signed-off-by: Elena Gershkovich --- .../volumereplicationgroup_controller.go | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/internal/controller/volumereplicationgroup_controller.go b/internal/controller/volumereplicationgroup_controller.go index cc2bb7dfc..85e857ea2 100644 --- a/internal/controller/volumereplicationgroup_controller.go +++ b/internal/controller/volumereplicationgroup_controller.go @@ -58,6 +58,8 @@ type VolumeReplicationGroupReconciler struct { } // SetupWithManager sets up the controller with the Manager. +// +// nolint: funlen func (r *VolumeReplicationGroupReconciler) SetupWithManager( mgr ctrl.Manager, ramenConfig *ramendrv1alpha1.RamenConfig, ) error { @@ -97,6 +99,10 @@ func (r *VolumeReplicationGroupReconciler) SetupWithManager( handler.EnqueueRequestsFromMapFunc(r.VRMapFunc), builder.WithPredicates(rmnutil.CreateOrDeleteOrResourceVersionUpdatePredicate{}), ). + Watches(&volrep.VolumeGroupReplication{}, + handler.EnqueueRequestsFromMapFunc(r.VGRMapFunc), + builder.WithPredicates(rmnutil.CreateOrDeleteOrResourceVersionUpdatePredicate{}), + ). Watches(&corev1.ConfigMap{}, handler.EnqueueRequestsFromMapFunc(r.configMapFun)). Owns(&volrep.VolumeReplication{}). Owns(&volrep.VolumeGroupReplication{}) @@ -1558,6 +1564,20 @@ func filterVRGDependentObjects(reader client.Reader, obj client.Object, log logr return req } +func (r *VolumeReplicationGroupReconciler) VGRMapFunc(ctx context.Context, obj client.Object) []reconcile.Request { + log := ctrl.Log.WithName("vgrmap").WithName("VolumeReplicationGroup") + + vgr, ok := obj.(*volrep.VolumeGroupReplication) + if !ok { + log.Info("map function received non-vgr resource") + + return []reconcile.Request{} + } + + return filterVRGDependentObjects(r.Client, obj, + log.WithValues("vgr", types.NamespacedName{Name: vgr.Name, Namespace: vgr.Namespace})) +} + func (r *VolumeReplicationGroupReconciler) VRMapFunc(ctx context.Context, obj client.Object) []reconcile.Request { log := ctrl.Log.WithName("vrmap").WithName("VolumeReplicationGroup")