Skip to content

Commit 09f29e1

Browse files
committed
Don't create OperatorConditions for copied CSVs
Problem: OLM is currently creating an OperatorCondition for copied CSVs. As a result, OLM is reporting that the deployments defined in the copied CSVs cannot be found. Solution: OLM should not be creating OperatorCondtions for copied CSVs. Update the OperatorConditionGenerator Reconciler to include predicate functions that exclude copied CSVs.
1 parent 2294bcc commit 09f29e1

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

pkg/controller/operators/operatorconditiongenerator_controller.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ import (
99
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1010
"k8s.io/apimachinery/pkg/runtime"
1111
ctrl "sigs.k8s.io/controller-runtime"
12+
"sigs.k8s.io/controller-runtime/pkg/builder"
1213
"sigs.k8s.io/controller-runtime/pkg/client"
14+
"sigs.k8s.io/controller-runtime/pkg/event"
1315
"sigs.k8s.io/controller-runtime/pkg/handler"
16+
"sigs.k8s.io/controller-runtime/pkg/predicate"
1417
"sigs.k8s.io/controller-runtime/pkg/reconcile"
1518
"sigs.k8s.io/controller-runtime/pkg/source"
1619

@@ -34,9 +37,35 @@ func (r *OperatorConditionGeneratorReconciler) SetupWithManager(mgr ctrl.Manager
3437
IsController: true,
3538
OwnerType: &operatorsv1alpha1.ClusterServiceVersion{},
3639
}
40+
p := predicate.Funcs{
41+
CreateFunc: func(e event.CreateEvent) bool {
42+
if _, ok := e.Meta.GetLabels()[operatorsv1alpha1.CopiedLabelKey]; ok {
43+
return false
44+
}
45+
return true
46+
},
47+
DeleteFunc: func(e event.DeleteEvent) bool {
48+
if _, ok := e.Meta.GetLabels()[operatorsv1alpha1.CopiedLabelKey]; ok {
49+
return false
50+
}
51+
return true
52+
},
53+
UpdateFunc: func(e event.UpdateEvent) bool {
54+
if _, ok := e.MetaOld.GetLabels()[operatorsv1alpha1.CopiedLabelKey]; ok {
55+
return false
56+
}
57+
return true
58+
},
59+
GenericFunc: func(e event.GenericEvent) bool {
60+
if _, ok := e.Meta.GetLabels()[operatorsv1alpha1.CopiedLabelKey]; ok {
61+
return false
62+
}
63+
return true
64+
},
65+
}
3766

3867
return ctrl.NewControllerManagedBy(mgr).
39-
For(&operatorsv1alpha1.ClusterServiceVersion{}).
68+
For(&operatorsv1alpha1.ClusterServiceVersion{}, builder.WithPredicates(p)).
4069
Watches(&source.Kind{Type: &operatorsv1.OperatorCondition{}}, handler).
4170
Complete(r)
4271
}
@@ -61,7 +90,6 @@ var _ reconcile.Reconciler = &OperatorConditionGeneratorReconciler{}
6190
func (r *OperatorConditionGeneratorReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
6291
// Set up a convenient log object so we don't have to type request over and over again
6392
log := r.log.WithValues("request", req)
64-
log.V(2).Info("reconciling ClusterServiceVersion")
6593

6694
in := &operatorsv1alpha1.ClusterServiceVersion{}
6795
err := r.Client.Get(context.TODO(), req.NamespacedName, in)

0 commit comments

Comments
 (0)