@@ -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,14 +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
42- "github.com/operator-framework/operator-controller/internal/controllers/validators"
4343 operatorsv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1"
44+ "github.com/operator-framework/operator-controller/internal/controllers/validators"
4445 "github.com/operator-framework/operator-controller/internal/resolution"
4546 "github.com/operator-framework/operator-controller/internal/resolution/variable_sources/bundles_and_dependencies"
4647 "github.com/operator-framework/operator-controller/internal/resolution/variable_sources/entity"
@@ -293,8 +294,7 @@ func (r *OperatorReconciler) SetupWithManager(mgr ctrl.Manager) error {
293294 err := ctrl .NewControllerManagedBy (mgr ).
294295 For (& operatorsv1alpha1.Operator {}).
295296 Watches (source .NewKindWithCache (& catalogd.CatalogSource {}, mgr .GetCache ()),
296- handler .EnqueueRequestsFromMapFunc (operatorRequestsForCatalog (context .TODO (), mgr .GetClient (), mgr .GetLogger ())),
297- builder .WithPredicates (newCatalogReadyTransitionPredicate ())).
297+ handler .EnqueueRequestsFromMapFunc (operatorRequestsForCatalog (context .TODO (), mgr .GetClient (), mgr .GetLogger ()))).
298298 Owns (& rukpakv1alpha1.BundleDeployment {}).
299299 Complete (r )
300300
@@ -430,3 +430,26 @@ func setInstalledStatusConditionUnknown(conditions *[]metav1.Condition, message
430430 ObservedGeneration : generation ,
431431 })
432432}
433+
434+ // Generate reconcile requests for all operators affected by a catalog change
435+ func operatorRequestsForCatalog (ctx context.Context , c client.Reader , logger logr.Logger ) handler.MapFunc {
436+ return func (object client.Object ) []reconcile.Request {
437+ // no way of associating an operator to a catalog so create reconcile requests for everything
438+ operators := operatorv1.OperatorList {}
439+ err := c .List (ctx , & operators )
440+ if err != nil {
441+ logger .Error (err , "unable to enqueue operators for catalog reconcile" )
442+ return nil
443+ }
444+ var requests []reconcile.Request
445+ for _ , op := range operators .Items {
446+ requests = append (requests , reconcile.Request {
447+ NamespacedName : types.NamespacedName {
448+ Namespace : op .GetNamespace (),
449+ Name : op .GetName (),
450+ },
451+ })
452+ }
453+ return requests
454+ }
455+ }
0 commit comments