@@ -27,12 +27,15 @@ import (
2727 "sigs.k8s.io/controller-runtime/pkg/client"
2828 "sigs.k8s.io/controller-runtime/pkg/controller"
2929 "sigs.k8s.io/controller-runtime/pkg/event"
30+ "sigs.k8s.io/controller-runtime/pkg/handler"
3031 "sigs.k8s.io/controller-runtime/pkg/predicate"
32+ "sigs.k8s.io/controller-runtime/pkg/source"
3133
3234 dwv2 "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
3335 controllerv1alpha1 "github.com/devfile/devworkspace-operator/apis/controller/v1alpha1"
3436 "github.com/devfile/devworkspace-operator/pkg/conditions"
3537 "github.com/devfile/devworkspace-operator/pkg/config"
38+ "github.com/devfile/devworkspace-operator/pkg/infrastructure"
3639
3740 "github.com/operator-framework/operator-lib/prune"
3841 "github.com/robfig/cron/v3"
@@ -126,7 +129,28 @@ func (r *DevWorkspacePrunerReconciler) SetupWithManager(mgr ctrl.Manager) error
126129
127130 return ctrl .NewControllerManagedBy (mgr ).
128131 WithOptions (controller.Options {MaxConcurrentReconciles : maxConcurrentReconciles }).
129- For (& controllerv1alpha1.DevWorkspaceOperatorConfig {}).
132+ Named ("DevWorkspacePruner" ).
133+ Watches (& source.Kind {Type : & controllerv1alpha1.DevWorkspaceOperatorConfig {}},
134+ handler .EnqueueRequestsFromMapFunc (func (object client.Object ) []ctrl.Request {
135+ objectNamespace := object .GetNamespace ()
136+ operatorNamespace , err := infrastructure .GetNamespace ()
137+
138+ // Ignore events from other namespaces
139+ if err != nil || objectNamespace != operatorNamespace {
140+ log .Info ("Received event from different namespace, ignoring" , "namespace" , objectNamespace )
141+ return []ctrl.Request {}
142+ }
143+
144+ return []ctrl.Request {
145+ {
146+ NamespacedName : client.ObjectKey {
147+ Name : object .GetName (),
148+ Namespace : object .GetNamespace (),
149+ },
150+ },
151+ }
152+ }),
153+ ).
130154 WithEventFilter (configPredicate ).
131155 Complete (r )
132156}
0 commit comments