Skip to content

Commit b5528fc

Browse files
knative-prow-robotpierDipiCali0707
authored
[release-1.13] Remove assumption on default namespace for EventType reference (#7725)
* Remove assumption on default namespace for EventType reference Signed-off-by: Pierangelo Di Pilato <[email protected]> * Add and fix tests Signed-off-by: Pierangelo Di Pilato <[email protected]> * Update pkg/reconciler/source/duck/duck_test.go Co-authored-by: Calum Murray <[email protected]> * Update pkg/reconciler/source/duck/duck_test.go Co-authored-by: Calum Murray <[email protected]> --------- Signed-off-by: Pierangelo Di Pilato <[email protected]> Co-authored-by: Pierangelo Di Pilato <[email protected]> Co-authored-by: Calum Murray <[email protected]>
1 parent 4063781 commit b5528fc

File tree

5 files changed

+72
-26
lines changed

5 files changed

+72
-26
lines changed

pkg/apis/eventing/v1beta1/eventtype_defaults.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,22 @@ limitations under the License.
1616

1717
package v1beta1
1818

19-
import "context"
19+
import (
20+
"context"
21+
22+
"knative.dev/pkg/apis"
23+
)
2024

2125
func (et *EventType) SetDefaults(ctx context.Context) {
26+
ctx = apis.WithinParent(ctx, et.ObjectMeta)
2227
et.Spec.SetDefaults(ctx)
2328
}
2429

2530
func (ets *EventTypeSpec) SetDefaults(ctx context.Context) {
2631
if ets.Reference == nil && ets.Broker == "" {
2732
ets.Broker = "default"
2833
}
34+
if ets.Reference != nil {
35+
ets.Reference.SetDefaults(ctx)
36+
}
2937
}

pkg/apis/eventing/v1beta2/eventtype_defaults.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,17 @@ package v1beta2
1818

1919
import (
2020
"context"
21+
22+
"knative.dev/pkg/apis"
2123
)
2224

2325
func (et *EventType) SetDefaults(ctx context.Context) {
26+
ctx = apis.WithinParent(ctx, et.ObjectMeta)
2427
et.Spec.SetDefaults(ctx)
25-
setReferenceNs(et)
2628
}
2729

2830
func (ets *EventTypeSpec) SetDefaults(ctx context.Context) {
29-
}
30-
31-
func setReferenceNs(et *EventType) {
32-
if et.Spec.Reference != nil && et.Spec.Reference.Namespace == "" {
33-
et.Spec.Reference.Namespace = et.GetNamespace()
31+
if ets.Reference != nil {
32+
ets.Reference.SetDefaults(ctx)
3433
}
3534
}

pkg/apis/eventing/v1beta3/eventtype_defaults.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,17 @@ package v1beta3
1818

1919
import (
2020
"context"
21+
22+
"knative.dev/pkg/apis"
2123
)
2224

2325
func (et *EventType) SetDefaults(ctx context.Context) {
26+
ctx = apis.WithinParent(ctx, et.ObjectMeta)
2427
et.Spec.SetDefaults(ctx)
25-
setReferenceNs(et)
2628
}
2729

2830
func (ets *EventTypeSpec) SetDefaults(ctx context.Context) {
29-
}
30-
31-
func setReferenceNs(et *EventType) {
32-
if et.Spec.Reference != nil && et.Spec.Reference.Namespace == "" {
33-
et.Spec.Reference.Namespace = et.GetNamespace()
31+
if ets.Reference != nil {
32+
ets.Reference.SetDefaults(ctx)
3433
}
3534
}

pkg/reconciler/source/duck/duck.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,6 @@ func (r *Reconciler) makeEventTypes(ctx context.Context, src *duckv1.Source) []v
215215
CeSchema: schemaURL,
216216
Description: description,
217217
})
218-
if eventType.Spec.Reference.Namespace == "" {
219-
eventType.Spec.Reference.Namespace = defaultNamespace
220-
}
221218
eventTypes = append(eventTypes, *eventType)
222219
}
223220
return eventTypes
@@ -235,7 +232,7 @@ func (r *Reconciler) computeDiff(current []v1beta2.EventType, expected []v1beta2
235232
if c, ok := currentMap[keyFromEventType(&e)]; !ok {
236233
toCreate = append(toCreate, e)
237234
} else {
238-
if !equality.Semantic.DeepEqual(e.Spec, c.Spec) {
235+
if !equality.Semantic.DeepDerivative(e.Spec, c.Spec) {
239236
toDelete = append(toDelete, c)
240237
toCreate = append(toCreate, e)
241238
}

pkg/reconciler/source/duck/duck_test.go

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ import (
3131
"k8s.io/apimachinery/pkg/runtime"
3232
"k8s.io/apimachinery/pkg/runtime/schema"
3333
clientgotesting "k8s.io/client-go/testing"
34-
v1 "knative.dev/eventing/pkg/apis/duck/v1"
35-
"knative.dev/eventing/pkg/apis/eventing"
36-
fakeeventingclient "knative.dev/eventing/pkg/client/injection/client/fake"
37-
"knative.dev/eventing/pkg/reconciler/source/duck/resources"
3834
"knative.dev/pkg/apis"
3935
duckv1 "knative.dev/pkg/apis/duck/v1"
4036
"knative.dev/pkg/client/injection/ducks/duck/v1/source"
@@ -43,8 +39,14 @@ import (
4339
logtesting "knative.dev/pkg/logging/testing"
4440
"knative.dev/pkg/ptr"
4541

46-
. "knative.dev/eventing/pkg/reconciler/testing/v1beta2"
42+
v1 "knative.dev/eventing/pkg/apis/duck/v1"
43+
"knative.dev/eventing/pkg/apis/eventing"
44+
fakeeventingclient "knative.dev/eventing/pkg/client/injection/client/fake"
45+
"knative.dev/eventing/pkg/reconciler/source/duck/resources"
46+
4747
. "knative.dev/pkg/reconciler/testing"
48+
49+
. "knative.dev/eventing/pkg/reconciler/testing/v1beta2"
4850
)
4951

5052
const (
@@ -250,6 +252,50 @@ func TestAllCases(t *testing.T) {
250252
WantCreates: []runtime.Object{
251253
makeEventType("my-type-1", "http://my-source-1"),
252254
},
255+
}, {
256+
Name: "no op",
257+
Objects: []runtime.Object{
258+
makeSource([]duckv1.CloudEventAttributes{{
259+
Type: "my-type-1",
260+
Source: "http://my-source-1",
261+
}}),
262+
func() runtime.Object {
263+
s := makeSourceCRD([]eventTypeEntry{{
264+
Type: "my-type-1",
265+
Schema: "/some-schema-from-crd",
266+
Description: "This came from the annotation in a crd for the source.",
267+
}})
268+
s.Annotations[eventing.EventTypesAnnotationKey] = "something that is not valid json"
269+
return s
270+
}(),
271+
makeEventType("my-type-1", "http://my-source-1"),
272+
},
273+
Key: testNS + "/" + sourceName,
274+
WantCreates: []runtime.Object{},
275+
}, {
276+
Name: "no op with namespace",
277+
Objects: []runtime.Object{
278+
makeSource([]duckv1.CloudEventAttributes{{
279+
Type: "my-type-1",
280+
Source: "http://my-source-1",
281+
}}),
282+
func() runtime.Object {
283+
s := makeSourceCRD([]eventTypeEntry{{
284+
Type: "my-type-1",
285+
Schema: "/some-schema-from-crd",
286+
Description: "This came from the annotation in a crd for the source.",
287+
}})
288+
s.Annotations[eventing.EventTypesAnnotationKey] = "something that is not valid json"
289+
return s
290+
}(),
291+
func() runtime.Object {
292+
et := makeEventType("my-type-1", "http://my-source-1")
293+
et.Spec.Reference.Namespace = testNS
294+
return et
295+
}(),
296+
},
297+
Key: testNS + "/" + sourceName,
298+
WantCreates: []runtime.Object{},
253299
}}
254300

255301
logger := logtesting.TestLogger(t)
@@ -340,14 +386,11 @@ func makeSourceCRD(eventTypes []eventTypeEntry) *apix1.CustomResourceDefinition
340386
}
341387

342388
func makeEventType(ceType, ceSource string) *v1beta2.EventType {
343-
return makeEventTypeWithReference(ceType, ceSource, brokerDest.Ref)
389+
return makeEventTypeWithReference(ceType, ceSource, brokerDest.Ref.DeepCopy())
344390
}
345391

346392
func makeEventTypeWithReference(ceType, ceSource string, ref *duckv1.KReference) *v1beta2.EventType {
347393
ceSourceURL, _ := apis.ParseURL(ceSource)
348-
if ref.Namespace == "" {
349-
ref.Namespace = "default"
350-
}
351394
return &v1beta2.EventType{
352395
ObjectMeta: metav1.ObjectMeta{
353396
Name: fmt.Sprintf("%x", md5.Sum([]byte(ceType+ceSource+sourceUID))),

0 commit comments

Comments
 (0)