Skip to content

Commit f969763

Browse files
[release-1.15] Sequence reconciler reads and watch the config-features configmap (#8179)
Sequence reconciler reads and watch the config-features configmap Signed-off-by: Pierangelo Di Pilato <[email protected]> Co-authored-by: Pierangelo Di Pilato <[email protected]>
1 parent c3baeda commit f969763

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

pkg/reconciler/sequence/controller.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,16 @@ import (
2020
"context"
2121

2222
"k8s.io/client-go/tools/cache"
23+
"knative.dev/pkg/configmap"
24+
"knative.dev/pkg/controller"
25+
"knative.dev/pkg/logging"
26+
27+
"knative.dev/eventing/pkg/apis/feature"
2328
v1 "knative.dev/eventing/pkg/apis/flows/v1"
2429
"knative.dev/eventing/pkg/auth"
2530
"knative.dev/eventing/pkg/duck"
26-
"knative.dev/pkg/configmap"
27-
"knative.dev/pkg/controller"
31+
32+
"knative.dev/pkg/injection/clients/dynamicclient"
2833

2934
flowsv1 "knative.dev/eventing/pkg/apis/flows/v1"
3035
eventingclient "knative.dev/eventing/pkg/client/injection/client"
@@ -33,7 +38,6 @@ import (
3338
"knative.dev/eventing/pkg/client/injection/informers/flows/v1/sequence"
3439
"knative.dev/eventing/pkg/client/injection/informers/messaging/v1/subscription"
3540
sequencereconciler "knative.dev/eventing/pkg/client/injection/reconciler/flows/v1/sequence"
36-
"knative.dev/pkg/injection/clients/dynamicclient"
3741
)
3842

3943
// NewController initializes the controller and is called by the generated code
@@ -47,14 +51,30 @@ func NewController(
4751
subscriptionInformer := subscription.Get(ctx)
4852
eventPolicyInformer := eventpolicy.Get(ctx)
4953

54+
var globalResync func()
55+
store := feature.NewStore(logging.FromContext(ctx), func(name string, value interface{}) {
56+
if globalResync != nil {
57+
globalResync()
58+
}
59+
})
60+
store.WatchConfigs(cmw)
61+
5062
r := &Reconciler{
5163
sequenceLister: sequenceInformer.Lister(),
5264
subscriptionLister: subscriptionInformer.Lister(),
5365
dynamicClientSet: dynamicclient.Get(ctx),
5466
eventingClientSet: eventingclient.Get(ctx),
5567
eventPolicyLister: eventPolicyInformer.Lister(),
5668
}
57-
impl := sequencereconciler.NewImpl(ctx, r)
69+
impl := sequencereconciler.NewImpl(ctx, r, func(impl *controller.Impl) controller.Options {
70+
return controller.Options{
71+
ConfigStore: store,
72+
}
73+
})
74+
75+
globalResync = func() {
76+
impl.GlobalResync(sequenceInformer.Informer())
77+
}
5878

5979
r.channelableTracker = duck.NewListableTrackerFromTracker(ctx, channelable.Get, impl.Tracker)
6080
sequenceInformer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue))

pkg/reconciler/sequence/sequence.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import (
3434
"knative.dev/pkg/logging"
3535
pkgreconciler "knative.dev/pkg/reconciler"
3636

37+
"knative.dev/pkg/kmp"
38+
3739
eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1"
3840
"knative.dev/eventing/pkg/apis/feature"
3941
v1 "knative.dev/eventing/pkg/apis/flows/v1"
@@ -45,7 +47,6 @@ import (
4547
listers "knative.dev/eventing/pkg/client/listers/flows/v1"
4648
messaginglisters "knative.dev/eventing/pkg/client/listers/messaging/v1"
4749
"knative.dev/eventing/pkg/duck"
48-
"knative.dev/pkg/kmp"
4950

5051
"knative.dev/eventing/pkg/reconciler/sequence/resources"
5152
)
@@ -217,6 +218,7 @@ func (r *Reconciler) reconcileSubscription(ctx context.Context, step int, p *v1.
217218
}
218219
return newSub, nil
219220
} else if equal, err := kmp.SafeEqual(sub.Spec, expected.Spec); !equal || err != nil {
221+
expected.ResourceVersion = sub.ResourceVersion
220222
// only the mutable fields were changed, so we can update the subscription
221223
updatedSub, err := r.eventingClientSet.MessagingV1().Subscriptions(sub.Namespace).Update(ctx, expected, metav1.UpdateOptions{})
222224
if err != nil {

0 commit comments

Comments
 (0)