-
Notifications
You must be signed in to change notification settings - Fork 617
Description
What happened:
Reading the API definition in
gateway-api/apis/v1alpha2/httproute_types.go
Line 443 in 3aa586d
| type HTTPRouteFilter struct { |
HTTPRouteFilter.
It's possible I'm just reading it wrong, but if so perhaps the presentation could be clarified to ensure the spec is clear to other implementors.
Specifically, in HTTPRouteFilter I see RequestHeaderModifier is Core while RequestMirror is Extended (which seems sensible):
gateway-api/apis/v1alpha2/httproute_types.go
Lines 468 to 481 in 3aa586d
| // RequestHeaderModifier defines a schema for a filter that modifies request | |
| // headers. | |
| // | |
| // Support: Core | |
| // | |
| // +optional | |
| RequestHeaderModifier *HTTPRequestHeaderFilter `json:"requestHeaderModifier,omitempty"` | |
| // RequestMirror defines a schema for a filter that mirrors requests. | |
| // | |
| // Support: Extended | |
| // | |
| // +optional | |
| RequestMirror *HTTPRequestMirrorFilter `json:"requestMirror,omitempty"` |
But then in the annotations on those nested struct types:
- all the fields in the
CoreHTTPRequestHeaderFilterare marked asExtended. If all config fields only require conformance by "extended" implementations, what does it mean that the filter itself is required byCoreimplementations? HTTPRequestMirrorFilterwhich is marked asExtendedabove, has a fieldServiceNamewhich is marked asCoreconformance level. What does it mean for a field to be required byCoreconforming implementations if it's part of anExtendedstruct?
What you expected to happen:
Conformance level annotations for nested configuration to be the same or weaker than the parent configuration level.
Thanks for your great work on this spec, I'm following closely!
[edit] I notice afterwards that v1alpha2 where I saw this is unstable so perhaps this is still a WIP and tracked elsewhere? I didn't see anything obvious though.