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 RedirectStatusCode {
36 #[serde(rename = "301")]
37 r#_301,
38 #[serde(rename = "302")]
39 r#_302,
40}
41#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
42pub enum RequestOperationType {
43 ReplaceFullPath,
44 ReplacePrefixMatch,
45}
46#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
47pub enum RequestRedirectScheme {
48 #[serde(rename = "http")]
49 Http,
50 #[serde(rename = "https")]
51 Https,
52}
53#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
54pub struct GatewayAddress {
55 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
56 pub r#type: Option<String>,
57 pub value: String,
58}
59#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
60pub struct GatewayInfrastructureParametersReference {
61 pub group: String,
62 pub kind: String,
63 pub name: String,
64}
65#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
66pub struct HTTPHeader {
67 pub name: String,
68 pub value: String,
69}
70#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
71pub struct Kind {
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub group: Option<String>,
74 pub kind: String,
75}
76#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
77pub struct ParentReference {
78 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub group: Option<String>,
80 #[serde(default, skip_serializing_if = "Option::is_none")]
81 pub kind: Option<String>,
82 pub name: String,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
84 pub namespace: Option<String>,
85 #[serde(default, skip_serializing_if = "Option::is_none")]
86 pub port: Option<i32>,
87 #[serde(
88 default,
89 skip_serializing_if = "Option::is_none",
90 rename = "sectionName"
91 )]
92 pub section_name: Option<String>,
93}
94#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
95pub struct RequestMirrorReference {
96 #[serde(default, skip_serializing_if = "Option::is_none")]
97 pub group: Option<String>,
98 #[serde(default, skip_serializing_if = "Option::is_none")]
99 pub kind: Option<String>,
100 pub name: String,
101 #[serde(default, skip_serializing_if = "Option::is_none")]
102 pub namespace: Option<String>,
103 #[serde(default, skip_serializing_if = "Option::is_none")]
104 pub port: Option<i32>,
105}
106#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
107pub struct HeaderMatch {
108 pub name: String,
109 #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
110 pub r#type: Option<HeaderMatchType>,
111 pub value: String,
112}
113#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
114pub struct HeaderModifier {
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub add: Option<Vec<HTTPHeader>>,
117 #[serde(default, skip_serializing_if = "Option::is_none")]
118 pub remove: Option<Vec<String>>,
119 #[serde(default, skip_serializing_if = "Option::is_none")]
120 pub set: Option<Vec<HTTPHeader>>,
121}
122#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
123pub struct ParentRouteStatus {
124 #[serde(default, skip_serializing_if = "Option::is_none")]
125 pub conditions: Option<Vec<Condition>>,
126 #[serde(rename = "controllerName")]
127 pub controller_name: String,
128 #[serde(rename = "parentRef")]
129 pub parent_ref: ParentReference,
130}
131#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
132pub struct RequestMirror {
133 #[serde(rename = "backendRef")]
134 pub backend_ref: RequestMirrorReference,
135}
136#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
137pub struct RequestRedirectPath {
138 #[serde(
139 default,
140 skip_serializing_if = "Option::is_none",
141 rename = "replaceFullPath"
142 )]
143 pub replace_full_path: Option<String>,
144 #[serde(
145 default,
146 skip_serializing_if = "Option::is_none",
147 rename = "replacePrefixMatch"
148 )]
149 pub replace_prefix_match: Option<String>,
150 #[serde(rename = "type")]
151 pub r#type: RequestOperationType,
152}
153#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
154pub struct GRPCRouteFilter {
155 #[serde(
156 default,
157 skip_serializing_if = "Option::is_none",
158 rename = "extensionRef"
159 )]
160 pub extension_ref: Option<GatewayInfrastructureParametersReference>,
161 #[serde(
162 default,
163 skip_serializing_if = "Option::is_none",
164 rename = "requestHeaderModifier"
165 )]
166 pub request_header_modifier: Option<HeaderModifier>,
167 #[serde(
168 default,
169 skip_serializing_if = "Option::is_none",
170 rename = "requestMirror"
171 )]
172 pub request_mirror: Option<RequestMirror>,
173 #[serde(
174 default,
175 skip_serializing_if = "Option::is_none",
176 rename = "responseHeaderModifier"
177 )]
178 pub response_header_modifier: Option<HeaderModifier>,
179 #[serde(rename = "type")]
180 pub r#type: GRPCFilterType,
181}
182#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
183pub struct RequestRedirect {
184 #[serde(default, skip_serializing_if = "Option::is_none")]
185 pub hostname: Option<String>,
186 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub path: Option<RequestRedirectPath>,
188 #[serde(default, skip_serializing_if = "Option::is_none")]
189 pub port: Option<i32>,
190 #[serde(default, skip_serializing_if = "Option::is_none")]
191 pub scheme: Option<RequestRedirectScheme>,
192 #[serde(
193 default,
194 skip_serializing_if = "Option::is_none",
195 rename = "statusCode"
196 )]
197 pub status_code: Option<i64>,
198}
199#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
200pub struct HTTPRouteUrlRewrite {
201 #[serde(default, skip_serializing_if = "Option::is_none")]
202 pub hostname: Option<String>,
203 #[serde(default, skip_serializing_if = "Option::is_none")]
204 pub path: Option<RequestRedirectPath>,
205}
206#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
207pub struct RouteStatus {
208 pub parents: Vec<ParentRouteStatus>,
209}