k8s_openapi/v1_32/api/apps/v1/
daemon_set_status.rs

1// Generated from definition io.k8s.api.apps.v1.DaemonSetStatus
2
3/// DaemonSetStatus represents the current status of a daemon set.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct DaemonSetStatus {
6    /// 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.
7    pub collision_count: Option<i32>,
8
9    /// Represents the latest available observations of a DaemonSet's current state.
10    pub conditions: Option<Vec<crate::api::apps::v1::DaemonSetCondition>>,
11
12    /// 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/
13    pub current_number_scheduled: i32,
14
15    /// 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/
16    pub desired_number_scheduled: i32,
17
18    /// 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)
19    pub number_available: Option<i32>,
20
21    /// 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/
22    pub number_misscheduled: i32,
23
24    /// 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.
25    pub number_ready: i32,
26
27    /// 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)
28    pub number_unavailable: Option<i32>,
29
30    /// The most recent generation observed by the daemon set controller.
31    pub observed_generation: Option<i64>,
32
33    /// The total number of nodes that are running updated daemon pod
34    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}