1#[allow(unused_imports)]
6mod prelude {
7 pub use kube::CustomResource;
8 pub use schemars::JsonSchema;
9 pub use serde::{Deserialize, Serialize};
10 pub use std::collections::BTreeMap;
11}
12use self::prelude::*;
13
14#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
15#[kube(
16 group = "fleet.cattle.io",
17 version = "v1alpha1",
18 kind = "ClusterGroup",
19 plural = "clustergroups"
20)]
21#[kube(namespaced)]
22#[kube(status = "ClusterGroupStatus")]
23#[kube(derive = "Default")]
24#[kube(derive = "PartialEq")]
25pub struct ClusterGroupSpec {
26 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub selector: Option<ClusterGroupSelector>,
29}
30
31#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
33pub struct ClusterGroupSelector {
34 #[serde(
36 default,
37 skip_serializing_if = "Option::is_none",
38 rename = "matchExpressions"
39 )]
40 pub match_expressions: Option<Vec<ClusterGroupSelectorMatchExpressions>>,
41 #[serde(
45 default,
46 skip_serializing_if = "Option::is_none",
47 rename = "matchLabels"
48 )]
49 pub match_labels: Option<BTreeMap<String, String>>,
50}
51
52#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
55pub struct ClusterGroupSelectorMatchExpressions {
56 pub key: String,
58 pub operator: String,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub values: Option<Vec<String>>,
67}
68
69#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
70pub struct ClusterGroupStatus {
71 #[serde(
73 default,
74 skip_serializing_if = "Option::is_none",
75 rename = "clusterCount"
76 )]
77 pub cluster_count: Option<i64>,
78 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub conditions: Option<Vec<ClusterGroupStatusConditions>>,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
84 pub display: Option<ClusterGroupStatusDisplay>,
85 #[serde(
87 default,
88 skip_serializing_if = "Option::is_none",
89 rename = "nonReadyClusterCount"
90 )]
91 pub non_ready_cluster_count: Option<i64>,
92 #[serde(
94 default,
95 skip_serializing_if = "Option::is_none",
96 rename = "nonReadyClusters"
97 )]
98 pub non_ready_clusters: Option<Vec<String>>,
99 #[serde(
102 default,
103 skip_serializing_if = "Option::is_none",
104 rename = "resourceCounts"
105 )]
106 pub resource_counts: Option<ClusterGroupStatusResourceCounts>,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
110 pub summary: Option<ClusterGroupStatusSummary>,
111}
112
113#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
114pub struct ClusterGroupStatusConditions {
115 #[serde(
117 default,
118 skip_serializing_if = "Option::is_none",
119 rename = "lastTransitionTime"
120 )]
121 pub last_transition_time: Option<String>,
122 #[serde(
124 default,
125 skip_serializing_if = "Option::is_none",
126 rename = "lastUpdateTime"
127 )]
128 pub last_update_time: Option<String>,
129 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub message: Option<String>,
132 #[serde(default, skip_serializing_if = "Option::is_none")]
134 pub reason: Option<String>,
135 pub status: String,
137 #[serde(rename = "type")]
139 pub r#type: String,
140}
141
142#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
145pub struct ClusterGroupStatusDisplay {
146 #[serde(
150 default,
151 skip_serializing_if = "Option::is_none",
152 rename = "readyBundles"
153 )]
154 pub ready_bundles: Option<String>,
155 #[serde(
159 default,
160 skip_serializing_if = "Option::is_none",
161 rename = "readyClusters"
162 )]
163 pub ready_clusters: Option<String>,
164 #[serde(default, skip_serializing_if = "Option::is_none")]
167 pub state: Option<String>,
168}
169
170#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
173pub struct ClusterGroupStatusResourceCounts {
174 #[serde(
176 default,
177 skip_serializing_if = "Option::is_none",
178 rename = "desiredReady"
179 )]
180 pub desired_ready: Option<i64>,
181 #[serde(default, skip_serializing_if = "Option::is_none")]
183 pub missing: Option<i64>,
184 #[serde(default, skip_serializing_if = "Option::is_none")]
186 pub modified: Option<i64>,
187 #[serde(default, skip_serializing_if = "Option::is_none", rename = "notReady")]
190 pub not_ready: Option<i64>,
191 #[serde(default, skip_serializing_if = "Option::is_none")]
193 pub orphaned: Option<i64>,
194 #[serde(default, skip_serializing_if = "Option::is_none")]
196 pub ready: Option<i64>,
197 #[serde(default, skip_serializing_if = "Option::is_none")]
199 pub unknown: Option<i64>,
200 #[serde(
202 default,
203 skip_serializing_if = "Option::is_none",
204 rename = "waitApplied"
205 )]
206 pub wait_applied: Option<i64>,
207}
208
209#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
212pub struct ClusterGroupStatusSummary {
213 #[serde(
216 default,
217 skip_serializing_if = "Option::is_none",
218 rename = "desiredReady"
219 )]
220 pub desired_ready: Option<i64>,
221 #[serde(
225 default,
226 skip_serializing_if = "Option::is_none",
227 rename = "errApplied"
228 )]
229 pub err_applied: Option<i64>,
230 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub modified: Option<i64>,
235 #[serde(
238 default,
239 skip_serializing_if = "Option::is_none",
240 rename = "nonReadyResources"
241 )]
242 pub non_ready_resources: Option<Vec<ClusterGroupStatusSummaryNonReadyResources>>,
243 #[serde(default, skip_serializing_if = "Option::is_none", rename = "notReady")]
246 pub not_ready: Option<i64>,
247 #[serde(default, skip_serializing_if = "Option::is_none", rename = "outOfSync")]
250 pub out_of_sync: Option<i64>,
251 #[serde(default, skip_serializing_if = "Option::is_none")]
254 pub pending: Option<i64>,
255 #[serde(default, skip_serializing_if = "Option::is_none")]
258 pub ready: Option<i64>,
259 #[serde(
263 default,
264 skip_serializing_if = "Option::is_none",
265 rename = "waitApplied"
266 )]
267 pub wait_applied: Option<i64>,
268}
269
270#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
274pub struct ClusterGroupStatusSummaryNonReadyResources {
275 #[serde(
277 default,
278 skip_serializing_if = "Option::is_none",
279 rename = "bundleState"
280 )]
281 pub bundle_state: Option<String>,
282 #[serde(default, skip_serializing_if = "Option::is_none")]
284 pub message: Option<String>,
285 #[serde(
287 default,
288 skip_serializing_if = "Option::is_none",
289 rename = "modifiedStatus"
290 )]
291 pub modified_status: Option<Vec<ClusterGroupStatusSummaryNonReadyResourcesModifiedStatus>>,
292 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub name: Option<String>,
295 #[serde(
297 default,
298 skip_serializing_if = "Option::is_none",
299 rename = "nonReadyStatus"
300 )]
301 pub non_ready_status: Option<Vec<ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatus>>,
302}
303
304#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
307pub struct ClusterGroupStatusSummaryNonReadyResourcesModifiedStatus {
308 #[serde(
309 default,
310 skip_serializing_if = "Option::is_none",
311 rename = "apiVersion"
312 )]
313 pub api_version: Option<String>,
314 #[serde(default, skip_serializing_if = "Option::is_none")]
315 pub delete: Option<bool>,
316 #[serde(default, skip_serializing_if = "Option::is_none")]
318 pub exist: Option<bool>,
319 #[serde(default, skip_serializing_if = "Option::is_none")]
320 pub kind: Option<String>,
321 #[serde(default, skip_serializing_if = "Option::is_none")]
322 pub missing: Option<bool>,
323 #[serde(default, skip_serializing_if = "Option::is_none")]
324 pub name: Option<String>,
325 #[serde(default, skip_serializing_if = "Option::is_none")]
326 pub namespace: Option<String>,
327 #[serde(default, skip_serializing_if = "Option::is_none")]
328 pub patch: Option<String>,
329}
330
331#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
333pub struct ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatus {
334 #[serde(
335 default,
336 skip_serializing_if = "Option::is_none",
337 rename = "apiVersion"
338 )]
339 pub api_version: Option<String>,
340 #[serde(default, skip_serializing_if = "Option::is_none")]
341 pub kind: Option<String>,
342 #[serde(default, skip_serializing_if = "Option::is_none")]
343 pub name: Option<String>,
344 #[serde(default, skip_serializing_if = "Option::is_none")]
345 pub namespace: Option<String>,
346 #[serde(default, skip_serializing_if = "Option::is_none")]
347 pub summary: Option<ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatusSummary>,
348 #[serde(default, skip_serializing_if = "Option::is_none")]
352 pub uid: Option<String>,
353}
354
355#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
356pub struct ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatusSummary {
357 #[serde(default, skip_serializing_if = "Option::is_none")]
358 pub error: Option<bool>,
359 #[serde(default, skip_serializing_if = "Option::is_none")]
360 pub message: Option<Vec<String>>,
361 #[serde(default, skip_serializing_if = "Option::is_none")]
362 pub state: Option<String>,
363 #[serde(default, skip_serializing_if = "Option::is_none")]
364 pub transitioning: Option<bool>,
365}