@@ -10,18 +10,9 @@ mod prelude {
1010}
1111use self :: prelude:: * ;
1212#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
13- pub struct RouteRef {
14- #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
15- pub group : Option < String > ,
16- #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
17- pub kind : Option < String > ,
13+ pub struct HTTPHeader {
1814 pub name : String ,
19- #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
20- pub namespace : Option < String > ,
21- #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
22- pub port : Option < i32 > ,
23- #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "sectionName" ) ]
24- pub section_name : Option < String > ,
15+ pub value : String ,
2516}
2617#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
2718pub struct MirrorBackendRef {
@@ -42,105 +33,210 @@ pub struct Kind {
4233 pub kind : String ,
4334}
4435#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
45- pub struct ExtensionBackendRef {
46- pub group : String ,
47- pub kind : String ,
48- pub name : String ,
49- }
50- #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
5136pub struct GatewayAddress {
5237 #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "type" ) ]
5338 pub r#type : Option < String > ,
5439 pub value : String ,
5540}
5641#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
57- pub struct HeaderModifierRules {
42+ pub struct RouteRef {
43+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
44+ pub group : Option < String > ,
45+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
46+ pub kind : Option < String > ,
5847 pub name : String ,
59- pub value : String ,
48+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
49+ pub namespace : Option < String > ,
50+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
51+ pub port : Option < i32 > ,
52+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "sectionName" ) ]
53+ pub section_name : Option < String > ,
6054}
61- /// RequestRedirect defines a schema for a filter that responds to the
62- /// request with an HTTP redirection.
55+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
56+ pub struct ExtensionBackendRef {
57+ pub group : String ,
58+ pub kind : String ,
59+ pub name : String ,
60+ }
61+ /// GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request
62+ /// headers.
63+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
64+ pub enum HeaderMatchesType {
65+ Exact ,
66+ RegularExpression ,
67+ }
68+ /// Path defines parameters used to modify the path of the incoming request.
69+ /// The modified path is then used to construct the `Location` header. When
70+ /// empty, the request path is used as-is.
6371///
64- /// Support: Core
72+ /// Support: Extended
6573#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
66- pub enum FiltersHTTPRedirectRequestRouteRulesScheme {
67- #[ serde( rename = "http" ) ]
68- Http ,
69- #[ serde( rename = "https" ) ]
70- Https ,
74+ pub enum HTTPPathType {
75+ ReplaceFullPath ,
76+ ReplacePrefixMatch ,
7177}
7278/// RequestRedirect defines a schema for a filter that responds to the
7379/// request with an HTTP redirection.
7480///
7581/// Support: Core
7682#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
77- pub enum CodeFiltersHTTPRedirectRequestRouteRulesStatus {
83+ pub enum RedirectStatusCode {
7884 #[ serde( rename = "301" ) ]
7985 r#_301,
8086 #[ serde( rename = "302" ) ]
8187 r#_302,
8288}
83- /// GRPCRouteFilter defines processing steps that must be completed during the
84- /// request or response lifecycle. GRPCRouteFilters are meant as an extension
89+ /// HTTPRouteFilter defines processing steps that must be completed during the
90+ /// request or response lifecycle. HTTPRouteFilters are meant as an extension
8591/// point to express processing that may be done in Gateway implementations. Some
8692/// examples include request or response modification, implementing
8793/// authentication strategies, rate-limiting, and traffic shaping. API
8894/// guarantee/conformance is defined based on the type of the filter.
8995#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
90- pub enum FiltersGRPCRouteRulesType {
91- ResponseHeaderModifier ,
96+ pub enum HTTPFilterType {
9297 RequestHeaderModifier ,
98+ ResponseHeaderModifier ,
9399 RequestMirror ,
100+ RequestRedirect ,
101+ #[ serde( rename = "URLRewrite" ) ]
102+ UrlRewrite ,
94103 ExtensionRef ,
95104}
96- /// GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request
97- /// headers.
98- #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
99- pub enum MatchesRouteRulesType {
100- Exact ,
101- RegularExpression ,
102- }
103- /// Path defines parameters used to modify the path of the incoming request.
104- /// The modified path is then used to construct the `Location` header. When
105- /// empty, the request path is used as-is.
105+ /// RequestRedirect defines a schema for a filter that responds to the
106+ /// request with an HTTP redirection.
106107///
107- /// Support: Extended
108+ /// Support: Core
108109#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
109- pub enum FiltersHTTPPathRouteRulesType {
110- ReplaceFullPath ,
111- ReplacePrefixMatch ,
110+ pub enum HTTPRedirectScheme {
111+ #[ serde( rename = "http" ) ]
112+ Http ,
113+ #[ serde( rename = "https" ) ]
114+ Https ,
112115}
113- /// HTTPRouteFilter defines processing steps that must be completed during the
114- /// request or response lifecycle. HTTPRouteFilters are meant as an extension
116+ /// GRPCRouteFilter defines processing steps that must be completed during the
117+ /// request or response lifecycle. GRPCRouteFilters are meant as an extension
115118/// point to express processing that may be done in Gateway implementations. Some
116119/// examples include request or response modification, implementing
117120/// authentication strategies, rate-limiting, and traffic shaping. API
118121/// guarantee/conformance is defined based on the type of the filter.
119122#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , PartialEq ) ]
120- pub enum FiltersHTTPRouteRulesType {
121- RequestHeaderModifier ,
123+ pub enum GRPCFilterType {
122124 ResponseHeaderModifier ,
125+ RequestHeaderModifier ,
123126 RequestMirror ,
124- RequestRedirect ,
125- #[ serde( rename = "URLRewrite" ) ]
126- UrlRewrite ,
127127 ExtensionRef ,
128128}
129-
130-
131- // Next attempt
132-
133129#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
134- pub struct FilterMirrorRouteRules {
130+ pub struct ParentsRouteStatus {
131+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
132+ pub conditions : Option < Vec < Condition > > ,
133+ #[ serde( rename = "controllerName" ) ]
134+ pub controller_name : String ,
135+ #[ serde( rename = "parentRef" ) ]
136+ pub parent_ref : RouteRef ,
137+ }
138+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
139+ pub struct HTTPPathModifier {
140+ #[ serde(
141+ default ,
142+ skip_serializing_if = "Option::is_none" ,
143+ rename = "replaceFullPath"
144+ ) ]
145+ pub replace_full_path : Option < String > ,
146+ #[ serde(
147+ default ,
148+ skip_serializing_if = "Option::is_none" ,
149+ rename = "replacePrefixMatch"
150+ ) ]
151+ pub replace_prefix_match : Option < String > ,
152+ #[ serde( rename = "type" ) ]
153+ pub r#type : HTTPPathType ,
154+ }
155+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
156+ pub struct HeaderModifier {
157+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
158+ pub add : Option < Vec < HTTPHeader > > ,
159+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
160+ pub remove : Option < Vec < String > > ,
161+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
162+ pub set : Option < Vec < HTTPHeader > > ,
163+ }
164+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
165+ pub struct RequestMirrorModifier {
135166 #[ serde( rename = "backendRef" ) ]
136167 pub backend_ref : MirrorBackendRef ,
137168}
138169#[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
139- pub struct FilterHeaderRouteRules {
170+ pub struct HTTPRequestRewrite {
140171 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
141- pub add : Option < Vec < HeaderModifierRules > > ,
172+ pub hostname : Option < String > ,
142173 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
143- pub remove : Option < Vec < String > > ,
174+ pub path : Option < HTTPPathModifier > ,
175+ }
176+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
177+ pub struct HTTPRequestRedirect {
178+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
179+ pub hostname : Option < String > ,
144180 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
145- pub set : Option < Vec < HeaderModifierRules > > ,
181+ pub path : Option < HTTPPathModifier > ,
182+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
183+ pub port : Option < i32 > ,
184+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
185+ pub scheme : Option < HTTPRedirectScheme > ,
186+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "statusCode" ) ]
187+ pub status_code : Option < i64 > ,
188+ }
189+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
190+ pub struct GRPCRouteFilter {
191+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "extensionRef" ) ]
192+ pub extension_ref : Option < ExtensionBackendRef > ,
193+ #[ serde(
194+ default ,
195+ skip_serializing_if = "Option::is_none" ,
196+ rename = "requestHeaderModifier"
197+ ) ]
198+ pub request_header_modifier : Option < HeaderModifier > ,
199+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "requestMirror" ) ]
200+ pub request_mirror : Option < RequestMirrorModifier > ,
201+ #[ serde(
202+ default ,
203+ skip_serializing_if = "Option::is_none" ,
204+ rename = "responseHeaderModifier"
205+ ) ]
206+ pub response_header_modifier : Option < HeaderModifier > ,
207+ #[ serde( rename = "type" ) ]
208+ pub r#type : GRPCFilterType ,
209+ }
210+
211+
212+ // Next attempt
213+
214+ #[ derive( Serialize , Deserialize , Clone , Debug , JsonSchema , Default , PartialEq ) ]
215+ pub struct HTTPRouteFilter {
216+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "extensionRef" ) ]
217+ pub extension_ref : Option < ExtensionBackendRef > ,
218+ #[ serde(
219+ default ,
220+ skip_serializing_if = "Option::is_none" ,
221+ rename = "requestHeaderModifier"
222+ ) ]
223+ pub request_header_modifier : Option < HeaderModifier > ,
224+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "requestMirror" ) ]
225+ pub request_mirror : Option < RequestMirrorModifier > ,
226+ #[ serde(
227+ default ,
228+ skip_serializing_if = "Option::is_none" ,
229+ rename = "requestRedirect"
230+ ) ]
231+ pub request_redirect : Option < HTTPRequestRedirect > ,
232+ #[ serde(
233+ default ,
234+ skip_serializing_if = "Option::is_none" ,
235+ rename = "responseHeaderModifier"
236+ ) ]
237+ pub response_header_modifier : Option < HeaderModifier > ,
238+ #[ serde( rename = "type" ) ]
239+ pub r#type : HTTPFilterType ,
240+ #[ serde( default , skip_serializing_if = "Option::is_none" , rename = "urlRewrite" ) ]
241+ pub url_rewrite : Option < HTTPRequestRewrite > ,
146242}
0 commit comments