Skip to content

Commit 61fc963

Browse files
committed
Adding feature flag
Signed-off-by: Ahmed Abdalla <aabdelre@redhat.com>
1 parent 97f9ef1 commit 61fc963

4 files changed

Lines changed: 22 additions & 9 deletions

File tree

config/core/configmaps/features.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,8 @@ data:
3939
# ALPHA feature: The subscriber-strict flag force subscriptions to define a subscriber
4040
# For more details: https://github.com/knative/eventing/issues/5756
4141
strict-subscriber: "disabled"
42+
43+
# ALPHA feature: The new-trigger-filters flag allows you to use the new `filters` field
44+
# in Trigger objects with its rich filtering capabilities.
45+
# For more details: https://github.com/knative/eventing/issues/5204
46+
new-trigger-filters: "disabled"

pkg/apis/eventing/v1/trigger_validation.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"fmt"
2323
"regexp"
2424

25+
"knative.dev/eventing/pkg/apis/feature"
26+
2527
"knative.dev/eventing/pkg/apis/eventing"
2628

2729
corev1 "k8s.io/api/core/v1"
@@ -55,7 +57,7 @@ func (ts *TriggerSpec) Validate(ctx context.Context) (errs *apis.FieldError) {
5557
return errs.Also(
5658
ValidateAttributeFilters(ts.Filter).ViaField("filter"),
5759
).Also(
58-
ValidateSubscriptionAPIFiltersList(ts.Filters).ViaField("filters"),
60+
ValidateSubscriptionAPIFiltersList(ctx, ts.Filters).ViaField("filters"),
5961
).Also(
6062
ts.Subscriber.Validate(ctx).ViaField("subscriber"),
6163
).Also(
@@ -181,19 +183,19 @@ func ValidateSingleAttributeMap(expr map[string]string) (errs *apis.FieldError)
181183
return errs
182184
}
183185

184-
func ValidateSubscriptionAPIFiltersList(filters []SubscriptionsAPIFilter) (errs *apis.FieldError) {
185-
if filters == nil {
186+
func ValidateSubscriptionAPIFiltersList(ctx context.Context, filters []SubscriptionsAPIFilter) (errs *apis.FieldError) {
187+
if filters == nil || !feature.FromContext(ctx).IsEnabled(feature.NewTriggerFilters) {
186188
return nil
187189
}
188190

189191
for i, f := range filters {
190192
f := f
191-
errs = errs.Also(ValidateSubscriptionAPIFilter(&f)).ViaIndex(i)
193+
errs = errs.Also(ValidateSubscriptionAPIFilter(ctx, &f)).ViaIndex(i)
192194
}
193195
return errs
194196
}
195197

196-
func ValidateSubscriptionAPIFilter(filter *SubscriptionsAPIFilter) (errs *apis.FieldError) {
198+
func ValidateSubscriptionAPIFilter(ctx context.Context, filter *SubscriptionsAPIFilter) (errs *apis.FieldError) {
197199
if filter == nil {
198200
return nil
199201
}
@@ -206,10 +208,10 @@ func ValidateSubscriptionAPIFilter(filter *SubscriptionsAPIFilter) (errs *apis.F
206208
).Also(
207209
ValidateSingleAttributeMap(filter.Suffix).ViaField("suffix"),
208210
).Also(
209-
ValidateSubscriptionAPIFiltersList(filter.All).ViaField("all"),
211+
ValidateSubscriptionAPIFiltersList(ctx, filter.All).ViaField("all"),
210212
).Also(
211-
ValidateSubscriptionAPIFiltersList(filter.Any).ViaField("any"),
212-
).Also(ValidateSubscriptionAPIFilter(filter.Not).ViaField("not"))
213+
ValidateSubscriptionAPIFiltersList(ctx, filter.Any).ViaField("any"),
214+
).Also(ValidateSubscriptionAPIFilter(ctx, filter.Not).ViaField("not"))
213215
return errs
214216
}
215217

pkg/apis/eventing/v1/trigger_validation_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"fmt"
2222
"testing"
2323

24+
"knative.dev/eventing/pkg/apis/feature"
25+
2426
"github.com/google/go-cmp/cmp"
2527
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2628
"k8s.io/apimachinery/pkg/runtime"
@@ -488,6 +490,9 @@ func TestTriggerSpecValidation(t *testing.T) {
488490
}
489491

490492
func TestFilterSpecValidation(t *testing.T) {
493+
newTriggerFiltersEnabledCtx := feature.ToContext(context.TODO(), feature.Flags{
494+
feature.NewTriggerFilters: feature.Enabled,
495+
})
491496
tests := []struct {
492497
name string
493498
filter *TriggerFilter
@@ -727,7 +732,7 @@ func TestFilterSpecValidation(t *testing.T) {
727732
Filters: test.filters,
728733
Subscriber: validSubscriber,
729734
}
730-
got := ts.Validate(context.TODO())
735+
got := ts.Validate(newTriggerFiltersEnabledCtx)
731736
if diff := cmp.Diff(test.want.Error(), got.Error()); diff != "" {
732737
t.Errorf("Validate TriggerSpec (-want, +got) =\n%s", diff)
733738
}

pkg/apis/feature/flag_names.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ const (
2121
DeliveryTimeout = "delivery-timeout"
2222
KReferenceMapping = "kreference-mapping"
2323
StrictSubscriber = "strict-subscriber"
24+
NewTriggerFilters = "new-trigger-filters"
2425
)

0 commit comments

Comments
 (0)