@@ -20,9 +20,10 @@ import (
2020	"context" 
2121	"fmt" 
2222
23+ 	"github.com/go-logr/logr" 
24+ 	operatorv1 "github.com/operator-framework/api/pkg/operators/v1" 
2325	catalogd "github.com/operator-framework/catalogd/pkg/apis/core/v1beta1" 
2426	"github.com/operator-framework/deppy/pkg/deppy/solver" 
25- 	"github.com/operator-framework/operator-controller/controllers/validators" 
2627	rukpakv1alpha1 "github.com/operator-framework/rukpak/api/v1alpha1" 
2728	"k8s.io/apimachinery/pkg/api/equality" 
2829	apimeta "k8s.io/apimachinery/pkg/api/meta" 
@@ -33,12 +34,14 @@ import (
3334	utilerrors "k8s.io/apimachinery/pkg/util/errors" 
3435	"k8s.io/utils/pointer" 
3536	ctrl "sigs.k8s.io/controller-runtime" 
36- 	"sigs.k8s.io/controller-runtime/pkg/builder" 
3737	"sigs.k8s.io/controller-runtime/pkg/client" 
3838	"sigs.k8s.io/controller-runtime/pkg/handler" 
3939	"sigs.k8s.io/controller-runtime/pkg/log" 
40+ 	"sigs.k8s.io/controller-runtime/pkg/reconcile" 
4041	"sigs.k8s.io/controller-runtime/pkg/source" 
4142
43+ 	"github.com/operator-framework/operator-controller/controllers/validators" 
44+ 
4245	operatorsv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1" 
4346	"github.com/operator-framework/operator-controller/internal/resolution" 
4447	"github.com/operator-framework/operator-controller/internal/resolution/variable_sources/bundles_and_dependencies" 
@@ -299,8 +302,7 @@ func (r *OperatorReconciler) SetupWithManager(mgr ctrl.Manager) error {
299302	err  :=  ctrl .NewControllerManagedBy (mgr ).
300303		For (& operatorsv1alpha1.Operator {}).
301304		Watches (source .NewKindWithCache (& catalogd.CatalogSource {}, mgr .GetCache ()),
302- 			handler .EnqueueRequestsFromMapFunc (operatorRequestsForCatalog (context .TODO (), mgr .GetClient (), mgr .GetLogger ())),
303- 			builder .WithPredicates (newCatalogReadyTransitionPredicate ())).
305+ 			handler .EnqueueRequestsFromMapFunc (operatorRequestsForCatalog (context .TODO (), mgr .GetClient (), mgr .GetLogger ()))).
304306		Owns (& rukpakv1alpha1.BundleDeployment {}).
305307		Complete (r )
306308
@@ -407,3 +409,26 @@ func mapBDStatusToReadyCondition(existingBD *rukpakv1alpha1.BundleDeployment, ob
407409func  isBundleDepStale (bd  * rukpakv1alpha1.BundleDeployment ) bool  {
408410	return  bd  !=  nil  &&  bd .Status .ObservedGeneration  !=  bd .GetGeneration ()
409411}
412+ 
413+ // Generate reconcile requests for all operators affected by a catalog change 
414+ func  operatorRequestsForCatalog (ctx  context.Context , c  client.Reader , logger  logr.Logger ) handler.MapFunc  {
415+ 	return  func (object  client.Object ) []reconcile.Request  {
416+ 		// no way of associating an operator to a catalog so create reconcile requests for everything 
417+ 		operators  :=  operatorv1.OperatorList {}
418+ 		err  :=  c .List (ctx , & operators )
419+ 		if  err  !=  nil  {
420+ 			logger .Error (err , "unable to enqueue operators for catalog reconcile" )
421+ 			return  nil 
422+ 		}
423+ 		var  requests  []reconcile.Request 
424+ 		for  _ , op  :=  range  operators .Items  {
425+ 			requests  =  append (requests , reconcile.Request {
426+ 				NamespacedName : types.NamespacedName {
427+ 					Namespace : op .GetNamespace (),
428+ 					Name :      op .GetName (),
429+ 				},
430+ 			})
431+ 		}
432+ 		return  requests 
433+ 	}
434+ }
0 commit comments