k8s_openapi/v1_34/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<std::vec::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 core::fmt::Formatter<'_>) -> core::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 core::fmt::Formatter<'_>) -> core::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<std::vec::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() -> std::borrow::Cow<'static, str> {
220        "io.k8s.api.apps.v1.DaemonSetStatus".into()
221    }
222
223    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
224        crate::schemars::json_schema!({
225            "description": "DaemonSetStatus represents the current status of a daemon set.",
226            "type": "object",
227            "properties": {
228                "collisionCount": {
229                    "description": "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.",
230                    "type": "integer",
231                    "format": "int32",
232                },
233                "conditions": {
234                    "description": "Represents the latest available observations of a DaemonSet's current state.",
235                    "type": "array",
236                    "items": (__gen.subschema_for::<crate::api::apps::v1::DaemonSetCondition>()),
237                },
238                "currentNumberScheduled": {
239                    "description": "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/",
240                    "type": "integer",
241                    "format": "int32",
242                },
243                "desiredNumberScheduled": {
244                    "description": "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/",
245                    "type": "integer",
246                    "format": "int32",
247                },
248                "numberAvailable": {
249                    "description": "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)",
250                    "type": "integer",
251                    "format": "int32",
252                },
253                "numberMisscheduled": {
254                    "description": "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/",
255                    "type": "integer",
256                    "format": "int32",
257                },
258                "numberReady": {
259                    "description": "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.",
260                    "type": "integer",
261                    "format": "int32",
262                },
263                "numberUnavailable": {
264                    "description": "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)",
265                    "type": "integer",
266                    "format": "int32",
267                },
268                "observedGeneration": {
269                    "description": "The most recent generation observed by the daemon set controller.",
270                    "type": "integer",
271                    "format": "int64",
272                },
273                "updatedNumberScheduled": {
274                    "description": "The total number of nodes that are running updated daemon pod",
275                    "type": "integer",
276                    "format": "int32",
277                },
278            },
279            "required": [
280                "currentNumberScheduled",
281                "desiredNumberScheduled",
282                "numberMisscheduled",
283                "numberReady",
284            ],
285        })
286    }
287}