Skip to content

Commit 29c92f5

Browse files
authored
Upgrade to latest dependencies and fix incompatible API call (#3891)
* Upgrade to latest dependencies * Define InstallKafkaBrokerStepFn for newfilters.NewFiltersFeatureSet The NewFiltersFeatureSet now requires a different type after upgrading dependencies.
1 parent eda1643 commit 29c92f5

File tree

18 files changed

+205
-80
lines changed

18 files changed

+205
-80
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ require (
3535
k8s.io/apiserver v0.29.2
3636
k8s.io/client-go v0.29.2
3737
k8s.io/utils v0.0.0-20240102154912-e7106e64919e
38-
knative.dev/eventing v0.41.1-0.20240507013633-96e5c1853b7c
38+
knative.dev/eventing v0.41.1-0.20240510065209-4f3282328ea6
3939
knative.dev/hack v0.0.0-20240507013718-68e3bfb39d11
40-
knative.dev/pkg v0.0.0-20240507013158-1d1616aa15db
41-
knative.dev/reconciler-test v0.0.0-20240507013704-7b06e50b743e
40+
knative.dev/pkg v0.0.0-20240507092124-360b72e4948e
41+
knative.dev/reconciler-test v0.0.0-20240507120221-c76096ce6188
4242
sigs.k8s.io/controller-runtime v0.12.3
4343
sigs.k8s.io/yaml v1.4.0
4444
)

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,14 +1274,14 @@ k8s.io/utils v0.0.0-20200912215256-4140de9c8800/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
12741274
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
12751275
k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ=
12761276
k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
1277-
knative.dev/eventing v0.41.1-0.20240507013633-96e5c1853b7c h1:ZJ9+rdbp0/oFOD9en3FTxlHK7ZnZFbxrQKdAulWmTSY=
1278-
knative.dev/eventing v0.41.1-0.20240507013633-96e5c1853b7c/go.mod h1:PLgoapXwPcHAr79U/cZldghvawUKrpZzw202zF9S7q8=
1277+
knative.dev/eventing v0.41.1-0.20240510065209-4f3282328ea6 h1:QphhMEyvWiqAQ858HW2HuMa4/BsOcWwfV2RRSrqlYGo=
1278+
knative.dev/eventing v0.41.1-0.20240510065209-4f3282328ea6/go.mod h1:Sstqyyuh67wF2tnbIR9gQ+lkTQmQpcLUw6tCNz/24gU=
12791279
knative.dev/hack v0.0.0-20240507013718-68e3bfb39d11 h1:CYoD72R8/R35REjeY2nnWfBak+Q3f+NxXwEfwcID1eU=
12801280
knative.dev/hack v0.0.0-20240507013718-68e3bfb39d11/go.mod h1:yk2OjGDsbEnQjfxdm0/HJKS2WqTLEFg/N6nUs6Rqx3Q=
1281-
knative.dev/pkg v0.0.0-20240507013158-1d1616aa15db h1:wc8y5CoKhGWsIUxdkTqILXr2i1rJUxtVKQRc3P0tEKI=
1282-
knative.dev/pkg v0.0.0-20240507013158-1d1616aa15db/go.mod h1:PQiq+p9Gr++TnU+w5P+ZpFS5MOwcMF6Y2oWFU8Ou7bw=
1283-
knative.dev/reconciler-test v0.0.0-20240507013704-7b06e50b743e h1:v1MZlnB7hYVSDIPeLBiatmrC2NzJuV2hCo+trOeV+e0=
1284-
knative.dev/reconciler-test v0.0.0-20240507013704-7b06e50b743e/go.mod h1:ctOcB7Yj+TAJ3f+jp+qoyAHnmT0GqzaTABZWSoE5Jrs=
1281+
knative.dev/pkg v0.0.0-20240507092124-360b72e4948e h1:By0c/FKLZlisAerWiMj9crtaEhcl/sp8gN8Rp0s8fKM=
1282+
knative.dev/pkg v0.0.0-20240507092124-360b72e4948e/go.mod h1:PQiq+p9Gr++TnU+w5P+ZpFS5MOwcMF6Y2oWFU8Ou7bw=
1283+
knative.dev/reconciler-test v0.0.0-20240507120221-c76096ce6188 h1:uOzt7ZVFpHoMSfjut8H9d1pafNPF2Luat/w5QMV+CIY=
1284+
knative.dev/reconciler-test v0.0.0-20240507120221-c76096ce6188/go.mod h1:kZEZ0/oQWnS1wBUgQqer/N9k6IzI4jwLLY2xCblEit4=
12851285
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
12861286
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
12871287
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=

test/e2e_new/new_trigger_filters_test.go

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package e2e_new
2121

2222
import (
23+
"context"
2324
"testing"
2425

2526
"knative.dev/pkg/system"
@@ -45,22 +46,17 @@ func TestNewTriggerFilters(t *testing.T) {
4546
environment.Managed(t),
4647
)
4748

48-
env.ParallelTestSet(ctx, t, newfilters.NewFiltersFeatureSet(InstallKafkaBroker))
49+
env.ParallelTestSet(ctx, t, newfilters.NewFiltersFeatureSet(InstallKafkaBrokerStepFn))
4950
}
5051

51-
func InstallKafkaBroker(f *feature.Feature) string {
52-
brokerName := feature.MakeRandomK8sName("kafka-broker")
53-
54-
install, cmName := single_partition_config.MakeInstall()
55-
56-
f.Setup("install one partition configuration", install)
57-
f.Setup("install kafka broker", broker.Install(
58-
brokerName,
59-
broker.WithBrokerClass(kafka.BrokerClass),
60-
broker.WithConfig(cmName),
61-
))
62-
f.Setup("kafka broker is ready", broker.IsReady(brokerName))
63-
f.Setup("kafka broker is addressable", broker.IsAddressable(brokerName))
64-
65-
return brokerName
52+
func InstallKafkaBrokerStepFn(brokerName string) feature.StepFn {
53+
return func(ctx context.Context, t feature.T) {
54+
install, cmName := single_partition_config.MakeInstall()
55+
install(ctx, t)
56+
broker.Install(
57+
brokerName,
58+
broker.WithBrokerClass(kafka.BrokerClass),
59+
broker.WithConfig(cmName),
60+
)(ctx, t)
61+
}
6662
}

vendor/knative.dev/eventing/pkg/eventingtls/trust_bundle.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,32 @@ func PropagateTrustBundles(ctx context.Context, k8s kubernetes.Interface, trustB
135135
if p.userCm == nil {
136136
// Update owner references
137137
expected.OwnerReferences = withOwnerReferences(obj, gvk, []metav1.OwnerReference{})
138-
139-
if err := createConfigMap(ctx, k8s, expected); err != nil {
138+
err := createConfigMap(ctx, k8s, expected)
139+
if err != nil && !apierrors.IsAlreadyExists(err) {
140140
return err
141141
}
142+
if apierrors.IsAlreadyExists(err) {
143+
// Update existing ConfigMap
144+
cm, getErr := k8s.CoreV1().
145+
ConfigMaps(obj.GetNamespace()).
146+
Get(ctx, userCMName(p.sysCM.Name), metav1.GetOptions{})
147+
if getErr != nil {
148+
return err // return original error
149+
}
150+
151+
cm.ObjectMeta.DeepCopyInto(&expected.ObjectMeta)
152+
expected.OwnerReferences = withOwnerReferences(obj, gvk, cm.OwnerReferences)
153+
154+
if !equality.Semantic.DeepDerivative(expected, cm) {
155+
if err := updateConfigMap(ctx, k8s, expected); err != nil {
156+
return err
157+
}
158+
}
159+
}
142160
continue
143161
}
144162

163+
p.userCm.ObjectMeta.DeepCopyInto(&expected.ObjectMeta)
145164
// Update owner references
146165
expected.OwnerReferences = withOwnerReferences(obj, gvk, p.userCm.OwnerReferences)
147166

vendor/knative.dev/eventing/pkg/reconciler/testing/v1/factory.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,20 @@ package testing
1919
import (
2020
"context"
2121
"encoding/json"
22+
"slices"
2223
"testing"
2324

25+
authv1 "k8s.io/api/authorization/v1"
2426
corev1 "k8s.io/api/core/v1"
27+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2528
"knative.dev/pkg/configmap"
2629
"knative.dev/pkg/logging"
2730

2831
"k8s.io/apimachinery/pkg/api/meta"
2932
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3033
"k8s.io/apimachinery/pkg/runtime"
3134
"k8s.io/apimachinery/pkg/types"
35+
clientgotesting "k8s.io/client-go/testing"
3236

3337
"k8s.io/client-go/tools/record"
3438

@@ -107,6 +111,47 @@ func MakeFactory(ctor Ctor, unstructured bool, logger *zap.SugaredLogger) Factor
107111
return ValidateUpdates(ctx, action)
108112
})
109113

114+
kubeClient.PrependReactor("create", "subjectaccessreviews", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) {
115+
obj := action.(clientgotesting.CreateAction).GetObject()
116+
sar, ok := obj.(*authv1.SubjectAccessReview)
117+
if !ok {
118+
return false, nil, nil
119+
}
120+
121+
// need a new kubeclient because otherwise we will deadlock
122+
ctx, kubeClient := fakekubeclient.With(ctx, ls.GetKubeObjects()...)
123+
124+
roleBindings, err := kubeClient.RbacV1().RoleBindings(sar.Spec.ResourceAttributes.Namespace).List(ctx, metav1.ListOptions{})
125+
logger.Infof("rolebindings: %+v", roleBindings)
126+
if err != nil {
127+
return false, nil, nil
128+
}
129+
130+
for _, rb := range roleBindings.Items {
131+
for _, s := range rb.Subjects {
132+
if (s.Name == sar.Spec.User && (s.Kind == "User" || s.Kind == "ServiceAccount")) || (slices.Contains(sar.Spec.Groups, s.Name) && s.Kind == "Group") {
133+
role, err := kubeClient.RbacV1().Roles(sar.Spec.ResourceAttributes.Namespace).Get(ctx, rb.RoleRef.Name, metav1.GetOptions{})
134+
if err != nil {
135+
// let's keep trying for other roles, no reason to fail here
136+
continue
137+
}
138+
for _, rule := range role.Rules {
139+
if slices.Contains(rule.APIGroups, sar.Spec.ResourceAttributes.Group) &&
140+
(slices.Contains(rule.Resources, "*") || slices.Contains(rule.Resources, sar.Spec.ResourceAttributes.Resource)) &&
141+
slices.Contains(rule.Verbs, sar.Spec.ResourceAttributes.Verb) {
142+
res := sar.DeepCopy()
143+
res.Status.Allowed = true
144+
return true, res, nil
145+
}
146+
147+
}
148+
}
149+
}
150+
}
151+
152+
return true, sar, nil
153+
})
154+
110155
for _, reactor := range r.WithReactors {
111156
kubeClient.PrependReactor("*", "*", reactor)
112157
client.PrependReactor("*", "*", reactor)

vendor/knative.dev/eventing/test/rekt/features/broker/oidc_feature.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"knative.dev/eventing/test/rekt/resources/broker"
2828
"knative.dev/eventing/test/rekt/resources/delivery"
2929
"knative.dev/eventing/test/rekt/resources/trigger"
30+
triggerresources "knative.dev/eventing/test/rekt/resources/trigger"
3031
duckv1 "knative.dev/pkg/apis/duck/v1"
3132
"knative.dev/reconciler-test/pkg/eventshub"
3233
eventassert "knative.dev/reconciler-test/pkg/eventshub/assert"
@@ -88,7 +89,10 @@ func BrokerSendEventWithOIDCTokenToSubscriber() *feature.Feature {
8889
))
8990

9091
f.Alpha("Broker").
91-
Must("handles event with valid OIDC token", eventassert.OnStore(sink).MatchReceivedEvent(test.HasId(event.ID())).Exact(1))
92+
Must("handles event with valid OIDC token", eventassert.OnStore(sink).MatchReceivedEvent(test.HasId(event.ID())).Exact(1)).
93+
Must("uses triggers identity for OIDC", eventassert.OnStore(sink).MatchWithContext(
94+
eventassert.MatchKind(eventshub.EventReceived).WithContext(),
95+
eventassert.MatchOIDCUserFromResource(triggerresources.GVR(), triggerName)).AtLeast(1))
9296

9397
return f
9498
}
@@ -145,7 +149,10 @@ func BrokerSendEventWithOIDCTokenToDLS() *feature.Feature {
145149

146150
// Assert events ended up where we expected.
147151
f.Stable("broker with DLS").
148-
Must("deliver event to DLQ", eventassert.OnStore(dls).MatchReceivedEvent(test.HasId(event.ID())).AtLeast(1))
152+
Must("deliver event to DLQ", eventassert.OnStore(dls).MatchReceivedEvent(test.HasId(event.ID())).AtLeast(1)).
153+
Must("uses triggers identity for OIDC", eventassert.OnStore(dls).MatchWithContext(
154+
eventassert.MatchKind(eventshub.EventReceived).WithContext(),
155+
eventassert.MatchOIDCUserFromResource(triggerresources.GVR(), triggerName)).AtLeast(1))
149156

150157
return f
151158
}

vendor/knative.dev/eventing/test/rekt/features/channel/oidc_feature.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,11 @@ func DispatcherAuthenticatesRequestsWithOIDC() *feature.Feature {
6060
event := test.FullEvent()
6161
f.Requirement("install source", eventshub.Install(source, eventshub.InputEvent(event), eventshub.StartSenderToResourceTLS(channel_impl.GVR(), channelName, nil)))
6262

63-
f.Alpha("channel dispatcher").Must("authenticate requests with OIDC", assert.OnStore(sink).MatchReceivedEvent(test.HasId(event.ID())).AtLeast(1))
63+
f.Alpha("channel dispatcher").
64+
Must("authenticate requests with OIDC", assert.OnStore(sink).MatchReceivedEvent(test.HasId(event.ID())).AtLeast(1)).
65+
Must("uses subscriptions identity for OIDC", assert.OnStore(sink).MatchWithContext(
66+
assert.MatchKind(eventshub.EventReceived).WithContext(),
67+
assert.MatchOIDCUserFromResource(subscription.GVR(), subscriptionName)).AtLeast(1))
6468

6569
return f
6670
}

vendor/knative.dev/eventing/test/rekt/features/new_trigger_filters/feature.go

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,21 @@ limitations under the License.
1717
package new_trigger_filters
1818

1919
import (
20+
"context"
2021
"fmt"
2122

2223
. "github.com/cloudevents/sdk-go/v2/test"
24+
"knative.dev/eventing/test/rekt/resources/broker"
25+
"knative.dev/eventing/test/rekt/resources/trigger"
26+
"knative.dev/reconciler-test/pkg/eventshub"
2327
"knative.dev/reconciler-test/pkg/feature"
28+
"knative.dev/reconciler-test/pkg/manifest"
29+
"knative.dev/reconciler-test/pkg/resources/service"
2430

2531
eventingv1 "knative.dev/eventing/pkg/apis/eventing/v1"
2632
)
2733

28-
type InstallBrokerFunc func(f *feature.Feature) string
34+
type InstallBrokerFunc func(brokerName string) feature.StepFn
2935

3036
type CloudEventsContext struct {
3137
eventType string
@@ -329,14 +335,40 @@ func MultipleTriggersAndSinksFeature(installBroker InstallBrokerFunc) *feature.F
329335
},
330336
}
331337

332-
// We need to create the broker here and mock it later so that the test uses the same broker for both filters
333-
brokerName := installBroker(f)
334-
fakeInstallBroker := func(_ *feature.Feature) string {
335-
return brokerName
336-
}
337-
338-
createNewFiltersFeature(f, eventContextsFirstSink, filtersFirstTrigger, eventingv1.TriggerFilter{}, fakeInstallBroker)
339-
createNewFiltersFeature(f, eventContextsSecondSink, filtersSecondTrigger, eventingv1.TriggerFilter{}, fakeInstallBroker)
338+
subscriberName1 := feature.MakeRandomK8sName("subscriber1")
339+
subscriberName2 := feature.MakeRandomK8sName("subscriber2")
340+
triggerName1 := feature.MakeRandomK8sName("trigger1")
341+
triggerName2 := feature.MakeRandomK8sName("trigger2")
342+
brokerName := feature.MakeRandomK8sName("broker")
343+
344+
f.Setup("Install Broker, Sinks, Triggers", func(ctx context.Context, t feature.T) {
345+
installBroker(brokerName)(ctx, t)
346+
347+
eventshub.Install(subscriberName1, eventshub.StartReceiver)(ctx, t)
348+
eventshub.Install(subscriberName2, eventshub.StartReceiver)(ctx, t)
349+
350+
triggerCfg1 := []manifest.CfgFn{
351+
trigger.WithSubscriber(service.AsKReference(subscriberName1), ""),
352+
trigger.WithNewFilters(filtersFirstTrigger),
353+
trigger.WithFilter(eventingv1.TriggerFilter{}.Attributes),
354+
}
355+
trigger.Install(triggerName1, brokerName, triggerCfg1...)(ctx, t)
356+
357+
triggerCfg2 := []manifest.CfgFn{
358+
trigger.WithSubscriber(service.AsKReference(subscriberName2), ""),
359+
trigger.WithNewFilters(filtersSecondTrigger),
360+
trigger.WithFilter(eventingv1.TriggerFilter{}.Attributes),
361+
}
362+
trigger.Install(triggerName2, brokerName, triggerCfg2...)(ctx, t)
363+
364+
broker.IsReady(brokerName)(ctx, t)
365+
broker.IsAddressable(brokerName)(ctx, t)
366+
trigger.IsReady(triggerName1)(ctx, t)
367+
trigger.IsReady(triggerName2)(ctx, t)
368+
})
369+
370+
assertDelivery(f, brokerName, subscriberName1, eventContextsFirstSink)
371+
assertDelivery(f, brokerName, subscriberName2, eventContextsSecondSink)
340372

341373
return f
342374
}

vendor/knative.dev/eventing/test/rekt/features/new_trigger_filters/filters.go

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,39 +17,49 @@ limitations under the License.
1717
package new_trigger_filters
1818

1919
import (
20+
"context"
2021
"fmt"
2122

23+
"github.com/cloudevents/sdk-go/v2/event"
2224
. "github.com/cloudevents/sdk-go/v2/test"
25+
eventingv1 "knative.dev/eventing/pkg/apis/eventing/v1"
26+
"knative.dev/eventing/test/rekt/resources/broker"
27+
"knative.dev/eventing/test/rekt/resources/trigger"
2328
"knative.dev/reconciler-test/pkg/eventshub"
2429
. "knative.dev/reconciler-test/pkg/eventshub/assert"
2530
"knative.dev/reconciler-test/pkg/feature"
2631
"knative.dev/reconciler-test/pkg/manifest"
2732
"knative.dev/reconciler-test/pkg/resources/service"
28-
29-
"github.com/cloudevents/sdk-go/v2/event"
30-
eventingv1 "knative.dev/eventing/pkg/apis/eventing/v1"
31-
"knative.dev/eventing/test/rekt/resources/broker"
32-
"knative.dev/eventing/test/rekt/resources/trigger"
3333
)
3434

3535
func createNewFiltersFeature(f *feature.Feature, eventContexts []CloudEventsContext, filters []eventingv1.SubscriptionsAPIFilter, filter eventingv1.TriggerFilter, installBroker InstallBrokerFunc) {
3636
subscriberName := feature.MakeRandomK8sName("subscriber")
3737
triggerName := feature.MakeRandomK8sName("trigger")
38-
brokerName := installBroker(f)
38+
brokerName := feature.MakeRandomK8sName("broker")
3939

40-
f.Setup("Install trigger subscriber", eventshub.Install(subscriberName, eventshub.StartReceiver))
40+
f.Setup("Install Sink, Broker, Trigger", func(ctx context.Context, t feature.T) {
41+
installBroker(brokerName)(ctx, t)
4142

42-
cfg := []manifest.CfgFn{
43-
trigger.WithSubscriber(service.AsKReference(subscriberName), ""),
44-
trigger.WithNewFilters(filters),
45-
trigger.WithFilter(filter.Attributes),
46-
}
43+
eventshub.Install(subscriberName, eventshub.StartReceiver)(ctx, t)
4744

48-
f.Setup("Install trigger", trigger.Install(triggerName, brokerName, cfg...))
49-
f.Setup("Wait for trigger to become ready", trigger.IsReady(triggerName))
45+
triggerCfg := []manifest.CfgFn{
46+
trigger.WithSubscriber(service.AsKReference(subscriberName), ""),
47+
trigger.WithNewFilters(filters),
48+
trigger.WithFilter(filter.Attributes),
49+
}
5050

51-
asserter := f.Beta("New filters")
51+
trigger.Install(triggerName, brokerName, triggerCfg...)(ctx, t)
5252

53+
broker.IsReady(brokerName)(ctx, t)
54+
broker.IsAddressable(brokerName)(ctx, t)
55+
trigger.IsReady(triggerName)(ctx, t)
56+
})
57+
58+
assertDelivery(f, brokerName, subscriberName, eventContexts)
59+
}
60+
61+
func assertDelivery(f *feature.Feature, brokerName, subscriberName string, eventContexts []CloudEventsContext) {
62+
asserter := f.Beta("New filters")
5363
for _, eventCtx := range eventContexts {
5464
e := newEventFromEventContext(eventCtx)
5565
eventSender := feature.MakeRandomK8sName("sender")

vendor/knative.dev/eventing/test/rekt/features/trigger/feature.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ func TriggerDependencyAnnotation() *feature.Feature {
6969
// Install the trigger
7070
f.Setup("install trigger", trigger.Install(triggerName, brokerName, cfg...))
7171

72-
f.Setup("trigger goes ready", trigger.IsReady(triggerName))
72+
// trigger won't go ready until after the pingsource exists, because of the dependency annotation
73+
f.Requirement("trigger goes ready", trigger.IsReady(triggerName))
7374

7475
f.Requirement("install pingsource", func(ctx context.Context, t feature.T) {
7576
brokeruri, err := broker.Address(ctx, brokerName)

0 commit comments

Comments
 (0)