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}
12
13use self::prelude::*;
14
15#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
16#[kube(
17 group = "fleet.cattle.io",
18 version = "v1alpha1",
19 kind = "ClusterGroup",
20 plural = "clustergroups"
21)]
22#[kube(namespaced)]
23#[kube(status = "ClusterGroupStatus")]
24#[kube(derive = "Default")]
25#[kube(derive = "PartialEq")]
26pub struct ClusterGroupSpec {
27 #[serde(default, skip_serializing_if = "Option::is_none")]
29 pub selector: Option<ClusterGroupSelector>,
30}
31
32#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
34pub struct ClusterGroupSelector {
35 #[serde(
37 default,
38 skip_serializing_if = "Option::is_none",
39 rename = "matchExpressions"
40 )]
41 pub match_expressions: Option<Vec<ClusterGroupSelectorMatchExpressions>>,
42 #[serde(
46 default,
47 skip_serializing_if = "Option::is_none",
48 rename = "matchLabels"
49 )]
50 pub match_labels: Option<BTreeMap<String, String>>,
51}
52
53#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
56pub struct ClusterGroupSelectorMatchExpressions {
57 pub key: String,
59 pub operator: String,
62 #[serde(default, skip_serializing_if = "Option::is_none")]
67 pub values: Option<Vec<String>>,
68}
69
70#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
71pub struct ClusterGroupStatus {
72 #[serde(
74 default,
75 skip_serializing_if = "Option::is_none",
76 rename = "clusterCount"
77 )]
78 pub cluster_count: Option<i64>,
79 #[serde(default, skip_serializing_if = "Option::is_none")]
81 pub conditions: Option<Vec<ClusterGroupStatusConditions>>,
82 #[serde(default, skip_serializing_if = "Option::is_none")]
85 pub display: Option<ClusterGroupStatusDisplay>,
86 #[serde(
88 default,
89 skip_serializing_if = "Option::is_none",
90 rename = "nonReadyClusterCount"
91 )]
92 pub non_ready_cluster_count: Option<i64>,
93 #[serde(
95 default,
96 skip_serializing_if = "Option::is_none",
97 rename = "nonReadyClusters"
98 )]
99 pub non_ready_clusters: Option<Vec<String>>,
100 #[serde(
103 default,
104 skip_serializing_if = "Option::is_none",
105 rename = "resourceCounts"
106 )]
107 pub resource_counts: Option<ClusterGroupStatusResourceCounts>,
108 #[serde(default, skip_serializing_if = "Option::is_none")]
111 pub summary: Option<ClusterGroupStatusSummary>,
112}
113
114#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
115pub struct ClusterGroupStatusConditions {
116 #[serde(
118 default,
119 skip_serializing_if = "Option::is_none",
120 rename = "lastTransitionTime"
121 )]
122 pub last_transition_time: Option<String>,
123 #[serde(
125 default,
126 skip_serializing_if = "Option::is_none",
127 rename = "lastUpdateTime"
128 )]
129 pub last_update_time: Option<String>,
130 #[serde(default, skip_serializing_if = "Option::is_none")]
132 pub message: Option<String>,
133 #[serde(default, skip_serializing_if = "Option::is_none")]
135 pub reason: Option<String>,
136 pub status: String,
138 #[serde(rename = "type")]
140 pub r#type: String,
141}
142
143#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
146pub struct ClusterGroupStatusDisplay {
147 #[serde(
151 default,
152 skip_serializing_if = "Option::is_none",
153 rename = "readyBundles"
154 )]
155 pub ready_bundles: Option<String>,
156 #[serde(
160 default,
161 skip_serializing_if = "Option::is_none",
162 rename = "readyClusters"
163 )]
164 pub ready_clusters: Option<String>,
165 #[serde(default, skip_serializing_if = "Option::is_none")]
168 pub state: Option<String>,
169}
170
171#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
174pub struct ClusterGroupStatusResourceCounts {
175 #[serde(
177 default,
178 skip_serializing_if = "Option::is_none",
179 rename = "desiredReady"
180 )]
181 pub desired_ready: Option<i64>,
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub missing: Option<i64>,
185 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub modified: Option<i64>,
188 #[serde(default, skip_serializing_if = "Option::is_none", rename = "notReady")]
191 pub not_ready: Option<i64>,
192 #[serde(default, skip_serializing_if = "Option::is_none")]
194 pub orphaned: Option<i64>,
195 #[serde(default, skip_serializing_if = "Option::is_none")]
197 pub ready: Option<i64>,
198 #[serde(default, skip_serializing_if = "Option::is_none")]
200 pub unknown: Option<i64>,
201 #[serde(
203 default,
204 skip_serializing_if = "Option::is_none",
205 rename = "waitApplied"
206 )]
207 pub wait_applied: Option<i64>,
208}
209
210#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
213pub struct ClusterGroupStatusSummary {
214 #[serde(
217 default,
218 skip_serializing_if = "Option::is_none",
219 rename = "desiredReady"
220 )]
221 pub desired_ready: Option<i64>,
222 #[serde(
226 default,
227 skip_serializing_if = "Option::is_none",
228 rename = "errApplied"
229 )]
230 pub err_applied: Option<i64>,
231 #[serde(default, skip_serializing_if = "Option::is_none")]
235 pub modified: Option<i64>,
236 #[serde(
239 default,
240 skip_serializing_if = "Option::is_none",
241 rename = "nonReadyResources"
242 )]
243 pub non_ready_resources: Option<Vec<ClusterGroupStatusSummaryNonReadyResources>>,
244 #[serde(default, skip_serializing_if = "Option::is_none", rename = "notReady")]
247 pub not_ready: Option<i64>,
248 #[serde(default, skip_serializing_if = "Option::is_none", rename = "outOfSync")]
251 pub out_of_sync: Option<i64>,
252 #[serde(default, skip_serializing_if = "Option::is_none")]
255 pub pending: Option<i64>,
256 #[serde(default, skip_serializing_if = "Option::is_none")]
259 pub ready: Option<i64>,
260 #[serde(
264 default,
265 skip_serializing_if = "Option::is_none",
266 rename = "waitApplied"
267 )]
268 pub wait_applied: Option<i64>,
269}
270
271#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
275pub struct ClusterGroupStatusSummaryNonReadyResources {
276 #[serde(
278 default,
279 skip_serializing_if = "Option::is_none",
280 rename = "bundleState"
281 )]
282 pub bundle_state: Option<String>,
283 #[serde(default, skip_serializing_if = "Option::is_none")]
285 pub message: Option<String>,
286 #[serde(
288 default,
289 skip_serializing_if = "Option::is_none",
290 rename = "modifiedStatus"
291 )]
292 pub modified_status: Option<Vec<ClusterGroupStatusSummaryNonReadyResourcesModifiedStatus>>,
293 #[serde(default, skip_serializing_if = "Option::is_none")]
295 pub name: Option<String>,
296 #[serde(
298 default,
299 skip_serializing_if = "Option::is_none",
300 rename = "nonReadyStatus"
301 )]
302 pub non_ready_status: Option<Vec<ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatus>>,
303}
304
305#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
308pub struct ClusterGroupStatusSummaryNonReadyResourcesModifiedStatus {
309 #[serde(
310 default,
311 skip_serializing_if = "Option::is_none",
312 rename = "apiVersion"
313 )]
314 pub api_version: Option<String>,
315 #[serde(default, skip_serializing_if = "Option::is_none")]
316 pub delete: Option<bool>,
317 #[serde(default, skip_serializing_if = "Option::is_none")]
319 pub exist: Option<bool>,
320 #[serde(default, skip_serializing_if = "Option::is_none")]
321 pub kind: Option<String>,
322 #[serde(default, skip_serializing_if = "Option::is_none")]
323 pub missing: Option<bool>,
324 #[serde(default, skip_serializing_if = "Option::is_none")]
325 pub name: Option<String>,
326 #[serde(default, skip_serializing_if = "Option::is_none")]
327 pub namespace: Option<String>,
328 #[serde(default, skip_serializing_if = "Option::is_none")]
329 pub patch: Option<String>,
330}
331
332#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
334pub struct ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatus {
335 #[serde(
336 default,
337 skip_serializing_if = "Option::is_none",
338 rename = "apiVersion"
339 )]
340 pub api_version: Option<String>,
341 #[serde(default, skip_serializing_if = "Option::is_none")]
342 pub kind: Option<String>,
343 #[serde(default, skip_serializing_if = "Option::is_none")]
344 pub name: Option<String>,
345 #[serde(default, skip_serializing_if = "Option::is_none")]
346 pub namespace: Option<String>,
347 #[serde(default, skip_serializing_if = "Option::is_none")]
348 pub summary: Option<ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatusSummary>,
349 #[serde(default, skip_serializing_if = "Option::is_none")]
353 pub uid: Option<String>,
354}
355
356#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
357pub struct ClusterGroupStatusSummaryNonReadyResourcesNonReadyStatusSummary {
358 #[serde(default, skip_serializing_if = "Option::is_none")]
359 pub error: Option<bool>,
360 #[serde(default, skip_serializing_if = "Option::is_none")]
361 pub message: Option<Vec<String>>,
362 #[serde(default, skip_serializing_if = "Option::is_none")]
363 pub state: Option<String>,
364 #[serde(default, skip_serializing_if = "Option::is_none")]
365 pub transitioning: Option<bool>,
366}