1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct DaemonSetStatus {
6 pub collision_count: Option<i32>,
8
9 pub conditions: Option<Vec<crate::api::apps::v1::DaemonSetCondition>>,
11
12 pub current_number_scheduled: i32,
14
15 pub desired_number_scheduled: i32,
17
18 pub number_available: Option<i32>,
20
21 pub number_misscheduled: i32,
23
24 pub number_ready: i32,
26
27 pub number_unavailable: Option<i32>,
29
30 pub observed_generation: Option<i64>,
32
33 pub updated_number_scheduled: Option<i32>,
35}
36
37impl crate::DeepMerge for DaemonSetStatus {
38 fn merge_from(&mut self, other: Self) {
39 crate::DeepMerge::merge_from(&mut self.collision_count, other.collision_count);
40 crate::merge_strategies::list::map(
41 &mut self.conditions,
42 other.conditions,
43 &[|lhs, rhs| lhs.type_ == rhs.type_],
44 |current_item, other_item| {
45 crate::DeepMerge::merge_from(current_item, other_item);
46 },
47 );
48 crate::DeepMerge::merge_from(&mut self.current_number_scheduled, other.current_number_scheduled);
49 crate::DeepMerge::merge_from(&mut self.desired_number_scheduled, other.desired_number_scheduled);
50 crate::DeepMerge::merge_from(&mut self.number_available, other.number_available);
51 crate::DeepMerge::merge_from(&mut self.number_misscheduled, other.number_misscheduled);
52 crate::DeepMerge::merge_from(&mut self.number_ready, other.number_ready);
53 crate::DeepMerge::merge_from(&mut self.number_unavailable, other.number_unavailable);
54 crate::DeepMerge::merge_from(&mut self.observed_generation, other.observed_generation);
55 crate::DeepMerge::merge_from(&mut self.updated_number_scheduled, other.updated_number_scheduled);
56 }
57}
58
59impl<'de> crate::serde::Deserialize<'de> for DaemonSetStatus {
60 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
61 #[allow(non_camel_case_types)]
62 enum Field {
63 Key_collision_count,
64 Key_conditions,
65 Key_current_number_scheduled,
66 Key_desired_number_scheduled,
67 Key_number_available,
68 Key_number_misscheduled,
69 Key_number_ready,
70 Key_number_unavailable,
71 Key_observed_generation,
72 Key_updated_number_scheduled,
73 Other,
74 }
75
76 impl<'de> crate::serde::Deserialize<'de> for Field {
77 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
78 struct Visitor;
79
80 impl crate::serde::de::Visitor<'_> for Visitor {
81 type Value = Field;
82
83 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
84 f.write_str("field identifier")
85 }
86
87 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
88 Ok(match v {
89 "collisionCount" => Field::Key_collision_count,
90 "conditions" => Field::Key_conditions,
91 "currentNumberScheduled" => Field::Key_current_number_scheduled,
92 "desiredNumberScheduled" => Field::Key_desired_number_scheduled,
93 "numberAvailable" => Field::Key_number_available,
94 "numberMisscheduled" => Field::Key_number_misscheduled,
95 "numberReady" => Field::Key_number_ready,
96 "numberUnavailable" => Field::Key_number_unavailable,
97 "observedGeneration" => Field::Key_observed_generation,
98 "updatedNumberScheduled" => Field::Key_updated_number_scheduled,
99 _ => Field::Other,
100 })
101 }
102 }
103
104 deserializer.deserialize_identifier(Visitor)
105 }
106 }
107
108 struct Visitor;
109
110 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
111 type Value = DaemonSetStatus;
112
113 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
114 f.write_str("DaemonSetStatus")
115 }
116
117 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
118 let mut value_collision_count: Option<i32> = None;
119 let mut value_conditions: Option<Vec<crate::api::apps::v1::DaemonSetCondition>> = None;
120 let mut value_current_number_scheduled: Option<i32> = None;
121 let mut value_desired_number_scheduled: Option<i32> = None;
122 let mut value_number_available: Option<i32> = None;
123 let mut value_number_misscheduled: Option<i32> = None;
124 let mut value_number_ready: Option<i32> = None;
125 let mut value_number_unavailable: Option<i32> = None;
126 let mut value_observed_generation: Option<i64> = None;
127 let mut value_updated_number_scheduled: Option<i32> = None;
128
129 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
130 match key {
131 Field::Key_collision_count => value_collision_count = crate::serde::de::MapAccess::next_value(&mut map)?,
132 Field::Key_conditions => value_conditions = crate::serde::de::MapAccess::next_value(&mut map)?,
133 Field::Key_current_number_scheduled => value_current_number_scheduled = crate::serde::de::MapAccess::next_value(&mut map)?,
134 Field::Key_desired_number_scheduled => value_desired_number_scheduled = crate::serde::de::MapAccess::next_value(&mut map)?,
135 Field::Key_number_available => value_number_available = crate::serde::de::MapAccess::next_value(&mut map)?,
136 Field::Key_number_misscheduled => value_number_misscheduled = crate::serde::de::MapAccess::next_value(&mut map)?,
137 Field::Key_number_ready => value_number_ready = crate::serde::de::MapAccess::next_value(&mut map)?,
138 Field::Key_number_unavailable => value_number_unavailable = crate::serde::de::MapAccess::next_value(&mut map)?,
139 Field::Key_observed_generation => value_observed_generation = crate::serde::de::MapAccess::next_value(&mut map)?,
140 Field::Key_updated_number_scheduled => value_updated_number_scheduled = crate::serde::de::MapAccess::next_value(&mut map)?,
141 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
142 }
143 }
144
145 Ok(DaemonSetStatus {
146 collision_count: value_collision_count,
147 conditions: value_conditions,
148 current_number_scheduled: value_current_number_scheduled.unwrap_or_default(),
149 desired_number_scheduled: value_desired_number_scheduled.unwrap_or_default(),
150 number_available: value_number_available,
151 number_misscheduled: value_number_misscheduled.unwrap_or_default(),
152 number_ready: value_number_ready.unwrap_or_default(),
153 number_unavailable: value_number_unavailable,
154 observed_generation: value_observed_generation,
155 updated_number_scheduled: value_updated_number_scheduled,
156 })
157 }
158 }
159
160 deserializer.deserialize_struct(
161 "DaemonSetStatus",
162 &[
163 "collisionCount",
164 "conditions",
165 "currentNumberScheduled",
166 "desiredNumberScheduled",
167 "numberAvailable",
168 "numberMisscheduled",
169 "numberReady",
170 "numberUnavailable",
171 "observedGeneration",
172 "updatedNumberScheduled",
173 ],
174 Visitor,
175 )
176 }
177}
178
179impl crate::serde::Serialize for DaemonSetStatus {
180 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
181 let mut state = serializer.serialize_struct(
182 "DaemonSetStatus",
183 4 +
184 self.collision_count.as_ref().map_or(0, |_| 1) +
185 self.conditions.as_ref().map_or(0, |_| 1) +
186 self.number_available.as_ref().map_or(0, |_| 1) +
187 self.number_unavailable.as_ref().map_or(0, |_| 1) +
188 self.observed_generation.as_ref().map_or(0, |_| 1) +
189 self.updated_number_scheduled.as_ref().map_or(0, |_| 1),
190 )?;
191 if let Some(value) = &self.collision_count {
192 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "collisionCount", value)?;
193 }
194 if let Some(value) = &self.conditions {
195 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "conditions", value)?;
196 }
197 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "currentNumberScheduled", &self.current_number_scheduled)?;
198 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "desiredNumberScheduled", &self.desired_number_scheduled)?;
199 if let Some(value) = &self.number_available {
200 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "numberAvailable", value)?;
201 }
202 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "numberMisscheduled", &self.number_misscheduled)?;
203 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "numberReady", &self.number_ready)?;
204 if let Some(value) = &self.number_unavailable {
205 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "numberUnavailable", value)?;
206 }
207 if let Some(value) = &self.observed_generation {
208 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "observedGeneration", value)?;
209 }
210 if let Some(value) = &self.updated_number_scheduled {
211 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "updatedNumberScheduled", value)?;
212 }
213 crate::serde::ser::SerializeStruct::end(state)
214 }
215}
216
217#[cfg(feature = "schemars")]
218impl crate::schemars::JsonSchema for DaemonSetStatus {
219 fn schema_name() -> String {
220 "io.k8s.api.apps.v1.DaemonSetStatus".to_owned()
221 }
222
223 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
224 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
225 metadata: Some(Box::new(crate::schemars::schema::Metadata {
226 description: Some("DaemonSetStatus represents the current status of a daemon set.".to_owned()),
227 ..Default::default()
228 })),
229 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
230 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
231 properties: [
232 (
233 "collisionCount".to_owned(),
234 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
235 metadata: Some(Box::new(crate::schemars::schema::Metadata {
236 description: Some("Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.".to_owned()),
237 ..Default::default()
238 })),
239 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
240 format: Some("int32".to_owned()),
241 ..Default::default()
242 }),
243 ),
244 (
245 "conditions".to_owned(),
246 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
247 metadata: Some(Box::new(crate::schemars::schema::Metadata {
248 description: Some("Represents the latest available observations of a DaemonSet's current state.".to_owned()),
249 ..Default::default()
250 })),
251 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Array))),
252 array: Some(Box::new(crate::schemars::schema::ArrayValidation {
253 items: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(__gen.subschema_for::<crate::api::apps::v1::DaemonSetCondition>()))),
254 ..Default::default()
255 })),
256 ..Default::default()
257 }),
258 ),
259 (
260 "currentNumberScheduled".to_owned(),
261 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
262 metadata: Some(Box::new(crate::schemars::schema::Metadata {
263 description: Some("The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/".to_owned()),
264 ..Default::default()
265 })),
266 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
267 format: Some("int32".to_owned()),
268 ..Default::default()
269 }),
270 ),
271 (
272 "desiredNumberScheduled".to_owned(),
273 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
274 metadata: Some(Box::new(crate::schemars::schema::Metadata {
275 description: Some("The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/".to_owned()),
276 ..Default::default()
277 })),
278 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
279 format: Some("int32".to_owned()),
280 ..Default::default()
281 }),
282 ),
283 (
284 "numberAvailable".to_owned(),
285 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
286 metadata: Some(Box::new(crate::schemars::schema::Metadata {
287 description: Some("The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)".to_owned()),
288 ..Default::default()
289 })),
290 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
291 format: Some("int32".to_owned()),
292 ..Default::default()
293 }),
294 ),
295 (
296 "numberMisscheduled".to_owned(),
297 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
298 metadata: Some(Box::new(crate::schemars::schema::Metadata {
299 description: Some("The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/".to_owned()),
300 ..Default::default()
301 })),
302 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
303 format: Some("int32".to_owned()),
304 ..Default::default()
305 }),
306 ),
307 (
308 "numberReady".to_owned(),
309 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
310 metadata: Some(Box::new(crate::schemars::schema::Metadata {
311 description: Some("numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition.".to_owned()),
312 ..Default::default()
313 })),
314 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
315 format: Some("int32".to_owned()),
316 ..Default::default()
317 }),
318 ),
319 (
320 "numberUnavailable".to_owned(),
321 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
322 metadata: Some(Box::new(crate::schemars::schema::Metadata {
323 description: Some("The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)".to_owned()),
324 ..Default::default()
325 })),
326 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
327 format: Some("int32".to_owned()),
328 ..Default::default()
329 }),
330 ),
331 (
332 "observedGeneration".to_owned(),
333 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
334 metadata: Some(Box::new(crate::schemars::schema::Metadata {
335 description: Some("The most recent generation observed by the daemon set controller.".to_owned()),
336 ..Default::default()
337 })),
338 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
339 format: Some("int64".to_owned()),
340 ..Default::default()
341 }),
342 ),
343 (
344 "updatedNumberScheduled".to_owned(),
345 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
346 metadata: Some(Box::new(crate::schemars::schema::Metadata {
347 description: Some("The total number of nodes that are running updated daemon pod".to_owned()),
348 ..Default::default()
349 })),
350 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
351 format: Some("int32".to_owned()),
352 ..Default::default()
353 }),
354 ),
355 ].into(),
356 required: [
357 "currentNumberScheduled".to_owned(),
358 "desiredNumberScheduled".to_owned(),
359 "numberMisscheduled".to_owned(),
360 "numberReady".to_owned(),
361 ].into(),
362 ..Default::default()
363 })),
364 ..Default::default()
365 })
366 }
367}