1#[allow(unused_imports)]
4mod prelude {
5 pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
6 pub use kube_derive::CustomResource;
7 pub use schemars::JsonSchema;
8 pub use serde::{Deserialize, Serialize};
9 pub use std::collections::BTreeMap;
10}
11use self::prelude::*;
12#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
13pub enum GRPCFilterType {
14 ResponseHeaderModifier,
15 RequestHeaderModifier,
16 RequestMirror,
17 ExtensionRef,
18}
19#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
20pub enum HTTPFilterType {
21 RequestHeaderModifier,
22 ResponseHeaderModifier,
23 RequestMirror,
24 RequestRedirect,
25 #[serde(rename = "URLRewrite")]
26 UrlRewrite,
27 ExtensionRef,
28}
29#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
30pub enum HeaderMatchType {
31 Exact,
32 RegularExpression,
33}
34#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
35pub enum PersistenceCookieConfigLifetime {
36 Permanent,
37 Session,
38}
39#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
40pub enum RedirectStatusCode {
41 #[serde(rename = "301")]
42 r#_301,
43 #[serde(rename = "302")]
44 r#_302,
45}
46#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
47pub enum RequestOperationType {
48 ReplaceFullPath,
49 ReplacePrefixMatch,
50}
51#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
52pub enum RequestRedirectScheme {
53 #[serde(rename = "http")]
54 Http,
55 #[serde(rename = "https")]
56 Https,
57}
58#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
59pub enum SessionPersistenceType {
60 Cookie,
61 Header,
62}
63#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
64pub struct BackendReference {
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub group: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub kind: Option<String>,
69 pub name: String,
70 #[serde(default, skip_serializing_if = "Option::is_none")]
71 pub namespace: Option<String>,
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub port: Option<i32>,
74 #[serde(default, skip_serializing_if = "Option::is_none")]
75 pub weight: Option<i32>,
76}
77#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
78pub struct BackendTlsClientCertificateReference {
79 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub group: Option<String>,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub kind: Option<String>,
83 pub name: String,
84 #[serde(default, skip_serializing_if = "Option::is_none")]
85 pub namespace: Option<String>,
86}
87#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
88pub struct GatewayAddress {
89 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
90 pub r#type: Option<String>,
91 pub value: String,
92}
93#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
94pub struct GatewayInfrastructureParametersReference {
95 pub group: String,
96 pub kind: String,
97 pub name: String,
98}
99#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
100pub struct HTTPHeader {
101 pub name: String,
102 pub value: String,
103}
104#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
105pub struct Kind {
106 #[serde(default, skip_serializing_if = "Option::is_none")]
107 pub group: Option<String>,
108 pub kind: String,
109}
110#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
111pub struct ParametersReference {
112 pub group: String,
113 pub kind: String,
114 pub name: String,
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub namespace: Option<String>,
117}
118#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
119pub struct ParentReference {
120 #[serde(default, skip_serializing_if = "Option::is_none")]
121 pub group: Option<String>,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
123 pub kind: Option<String>,
124 pub name: String,
125 #[serde(default, skip_serializing_if = "Option::is_none")]
126 pub namespace: Option<String>,
127 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub port: Option<i32>,
129 #[serde(
130 default,
131 skip_serializing_if = "Option::is_none",
132 rename = "sectionName"
133 )]
134 pub section_name: Option<String>,
135}
136#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
137pub struct RequestMirrorFraction {
138 #[serde(default, skip_serializing_if = "Option::is_none")]
139 pub denominator: Option<i32>,
140 pub numerator: i32,
141}
142#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
143pub struct RequestMirrorReference {
144 #[serde(default, skip_serializing_if = "Option::is_none")]
145 pub group: Option<String>,
146 #[serde(default, skip_serializing_if = "Option::is_none")]
147 pub kind: Option<String>,
148 pub name: String,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
150 pub namespace: Option<String>,
151 #[serde(default, skip_serializing_if = "Option::is_none")]
152 pub port: Option<i32>,
153}
154#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
155pub struct CommonRouteRule {
156 #[serde(
157 default,
158 skip_serializing_if = "Option::is_none",
159 rename = "backendRefs"
160 )]
161 pub backend_refs: Option<Vec<BackendReference>>,
162 #[serde(default, skip_serializing_if = "Option::is_none")]
163 pub name: Option<String>,
164}
165#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
166pub struct HeaderMatch {
167 pub name: String,
168 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
169 pub r#type: Option<HeaderMatchType>,
170 pub value: String,
171}
172#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
173pub struct HeaderModifier {
174 #[serde(default, skip_serializing_if = "Option::is_none")]
175 pub add: Option<Vec<HTTPHeader>>,
176 #[serde(default, skip_serializing_if = "Option::is_none")]
177 pub remove: Option<Vec<String>>,
178 #[serde(default, skip_serializing_if = "Option::is_none")]
179 pub set: Option<Vec<HTTPHeader>>,
180}
181#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
182pub struct ParentRouteStatus {
183 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub conditions: Option<Vec<Condition>>,
185 #[serde(rename = "controllerName")]
186 pub controller_name: String,
187 #[serde(rename = "parentRef")]
188 pub parent_ref: ParentReference,
189}
190#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
191pub struct RequestMirror {
192 #[serde(rename = "backendRef")]
193 pub backend_ref: RequestMirrorReference,
194 #[serde(default, skip_serializing_if = "Option::is_none")]
195 pub fraction: Option<RequestMirrorFraction>,
196 #[serde(default, skip_serializing_if = "Option::is_none")]
197 pub percent: Option<i32>,
198}
199#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
200pub struct RequestRedirectPath {
201 #[serde(
202 default,
203 skip_serializing_if = "Option::is_none",
204 rename = "replaceFullPath"
205 )]
206 pub replace_full_path: Option<String>,
207 #[serde(
208 default,
209 skip_serializing_if = "Option::is_none",
210 rename = "replacePrefixMatch"
211 )]
212 pub replace_prefix_match: Option<String>,
213 #[serde(rename = "type")]
214 pub r#type: RequestOperationType,
215}
216#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
217pub struct SessionPersistenceCookieConfig {
218 #[serde(
219 default,
220 skip_serializing_if = "Option::is_none",
221 rename = "lifetimeType"
222 )]
223 pub lifetime_type: Option<PersistenceCookieConfigLifetime>,
224}
225#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
226pub struct GRPCRouteFilter {
227 #[serde(
228 default,
229 skip_serializing_if = "Option::is_none",
230 rename = "extensionRef"
231 )]
232 pub extension_ref: Option<GatewayInfrastructureParametersReference>,
233 #[serde(
234 default,
235 skip_serializing_if = "Option::is_none",
236 rename = "requestHeaderModifier"
237 )]
238 pub request_header_modifier: Option<HeaderModifier>,
239 #[serde(
240 default,
241 skip_serializing_if = "Option::is_none",
242 rename = "requestMirror"
243 )]
244 pub request_mirror: Option<RequestMirror>,
245 #[serde(
246 default,
247 skip_serializing_if = "Option::is_none",
248 rename = "responseHeaderModifier"
249 )]
250 pub response_header_modifier: Option<HeaderModifier>,
251 #[serde(rename = "type")]
252 pub r#type: GRPCFilterType,
253}
254#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
255pub struct RequestRedirect {
256 #[serde(default, skip_serializing_if = "Option::is_none")]
257 pub hostname: Option<String>,
258 #[serde(default, skip_serializing_if = "Option::is_none")]
259 pub path: Option<RequestRedirectPath>,
260 #[serde(default, skip_serializing_if = "Option::is_none")]
261 pub port: Option<i32>,
262 #[serde(default, skip_serializing_if = "Option::is_none")]
263 pub scheme: Option<RequestRedirectScheme>,
264 #[serde(
265 default,
266 skip_serializing_if = "Option::is_none",
267 rename = "statusCode"
268 )]
269 pub status_code: Option<i64>,
270}
271#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
272pub struct HTTPRouteUrlRewrite {
273 #[serde(default, skip_serializing_if = "Option::is_none")]
274 pub hostname: Option<String>,
275 #[serde(default, skip_serializing_if = "Option::is_none")]
276 pub path: Option<RequestRedirectPath>,
277}
278#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
279pub struct RouteStatus {
280 pub parents: Vec<ParentRouteStatus>,
281}
282#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
283pub struct SessionPersistence {
284 #[serde(
285 default,
286 skip_serializing_if = "Option::is_none",
287 rename = "absoluteTimeout"
288 )]
289 pub absolute_timeout: Option<String>,
290 #[serde(
291 default,
292 skip_serializing_if = "Option::is_none",
293 rename = "cookieConfig"
294 )]
295 pub cookie_config: Option<SessionPersistenceCookieConfig>,
296 #[serde(
297 default,
298 skip_serializing_if = "Option::is_none",
299 rename = "idleTimeout"
300 )]
301 pub idle_timeout: Option<String>,
302 #[serde(
303 default,
304 skip_serializing_if = "Option::is_none",
305 rename = "sessionName"
306 )]
307 pub session_name: Option<String>,
308 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
309 pub r#type: Option<SessionPersistenceType>,
310}
311#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
312pub struct HTTPRouteBackendFilters {
313 #[serde(
314 default,
315 skip_serializing_if = "Option::is_none",
316 rename = "extensionRef"
317 )]
318 pub extension_ref: Option<GatewayInfrastructureParametersReference>,
319 #[serde(
320 default,
321 skip_serializing_if = "Option::is_none",
322 rename = "requestHeaderModifier"
323 )]
324 pub request_header_modifier: Option<HeaderModifier>,
325 #[serde(
326 default,
327 skip_serializing_if = "Option::is_none",
328 rename = "requestMirror"
329 )]
330 pub request_mirror: Option<RequestMirror>,
331 #[serde(
332 default,
333 skip_serializing_if = "Option::is_none",
334 rename = "requestRedirect"
335 )]
336 pub request_redirect: Option<RequestRedirect>,
337 #[serde(
338 default,
339 skip_serializing_if = "Option::is_none",
340 rename = "responseHeaderModifier"
341 )]
342 pub response_header_modifier: Option<HeaderModifier>,
343 #[serde(rename = "type")]
344 pub r#type: HTTPFilterType,
345 #[serde(
346 default,
347 skip_serializing_if = "Option::is_none",
348 rename = "urlRewrite"
349 )]
350 pub url_rewrite: Option<HTTPRouteUrlRewrite>,
351}