k8s_openapi/v1_35/api/core/v1/
pod_condition.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct PodCondition {
6 pub last_probe_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
8
9 pub last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
11
12 pub message: Option<std::string::String>,
14
15 pub observed_generation: Option<i64>,
17
18 pub reason: Option<std::string::String>,
20
21 pub status: std::string::String,
23
24 pub type_: std::string::String,
26}
27
28impl crate::DeepMerge for PodCondition {
29 fn merge_from(&mut self, other: Self) {
30 crate::DeepMerge::merge_from(&mut self.last_probe_time, other.last_probe_time);
31 crate::DeepMerge::merge_from(&mut self.last_transition_time, other.last_transition_time);
32 crate::DeepMerge::merge_from(&mut self.message, other.message);
33 crate::DeepMerge::merge_from(&mut self.observed_generation, other.observed_generation);
34 crate::DeepMerge::merge_from(&mut self.reason, other.reason);
35 crate::DeepMerge::merge_from(&mut self.status, other.status);
36 crate::DeepMerge::merge_from(&mut self.type_, other.type_);
37 }
38}
39
40impl<'de> crate::serde::Deserialize<'de> for PodCondition {
41 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
42 #[allow(non_camel_case_types)]
43 enum Field {
44 Key_last_probe_time,
45 Key_last_transition_time,
46 Key_message,
47 Key_observed_generation,
48 Key_reason,
49 Key_status,
50 Key_type_,
51 Other,
52 }
53
54 impl<'de> crate::serde::Deserialize<'de> for Field {
55 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
56 struct Visitor;
57
58 impl crate::serde::de::Visitor<'_> for Visitor {
59 type Value = Field;
60
61 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
62 f.write_str("field identifier")
63 }
64
65 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
66 Ok(match v {
67 "lastProbeTime" => Field::Key_last_probe_time,
68 "lastTransitionTime" => Field::Key_last_transition_time,
69 "message" => Field::Key_message,
70 "observedGeneration" => Field::Key_observed_generation,
71 "reason" => Field::Key_reason,
72 "status" => Field::Key_status,
73 "type" => Field::Key_type_,
74 _ => Field::Other,
75 })
76 }
77 }
78
79 deserializer.deserialize_identifier(Visitor)
80 }
81 }
82
83 struct Visitor;
84
85 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
86 type Value = PodCondition;
87
88 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
89 f.write_str("PodCondition")
90 }
91
92 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
93 let mut value_last_probe_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
94 let mut value_last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
95 let mut value_message: Option<std::string::String> = None;
96 let mut value_observed_generation: Option<i64> = None;
97 let mut value_reason: Option<std::string::String> = None;
98 let mut value_status: Option<std::string::String> = None;
99 let mut value_type_: Option<std::string::String> = None;
100
101 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
102 match key {
103 Field::Key_last_probe_time => value_last_probe_time = crate::serde::de::MapAccess::next_value(&mut map)?,
104 Field::Key_last_transition_time => value_last_transition_time = crate::serde::de::MapAccess::next_value(&mut map)?,
105 Field::Key_message => value_message = crate::serde::de::MapAccess::next_value(&mut map)?,
106 Field::Key_observed_generation => value_observed_generation = crate::serde::de::MapAccess::next_value(&mut map)?,
107 Field::Key_reason => value_reason = crate::serde::de::MapAccess::next_value(&mut map)?,
108 Field::Key_status => value_status = crate::serde::de::MapAccess::next_value(&mut map)?,
109 Field::Key_type_ => value_type_ = crate::serde::de::MapAccess::next_value(&mut map)?,
110 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
111 }
112 }
113
114 Ok(PodCondition {
115 last_probe_time: value_last_probe_time,
116 last_transition_time: value_last_transition_time,
117 message: value_message,
118 observed_generation: value_observed_generation,
119 reason: value_reason,
120 status: value_status.unwrap_or_default(),
121 type_: value_type_.unwrap_or_default(),
122 })
123 }
124 }
125
126 deserializer.deserialize_struct(
127 "PodCondition",
128 &[
129 "lastProbeTime",
130 "lastTransitionTime",
131 "message",
132 "observedGeneration",
133 "reason",
134 "status",
135 "type",
136 ],
137 Visitor,
138 )
139 }
140}
141
142impl crate::serde::Serialize for PodCondition {
143 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
144 let mut state = serializer.serialize_struct(
145 "PodCondition",
146 2 +
147 self.last_probe_time.as_ref().map_or(0, |_| 1) +
148 self.last_transition_time.as_ref().map_or(0, |_| 1) +
149 self.message.as_ref().map_or(0, |_| 1) +
150 self.observed_generation.as_ref().map_or(0, |_| 1) +
151 self.reason.as_ref().map_or(0, |_| 1),
152 )?;
153 if let Some(value) = &self.last_probe_time {
154 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "lastProbeTime", value)?;
155 }
156 if let Some(value) = &self.last_transition_time {
157 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "lastTransitionTime", value)?;
158 }
159 if let Some(value) = &self.message {
160 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
161 }
162 if let Some(value) = &self.observed_generation {
163 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "observedGeneration", value)?;
164 }
165 if let Some(value) = &self.reason {
166 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
167 }
168 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", &self.status)?;
169 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "type", &self.type_)?;
170 crate::serde::ser::SerializeStruct::end(state)
171 }
172}
173
174#[cfg(feature = "schemars")]
175impl crate::schemars::JsonSchema for PodCondition {
176 fn schema_name() -> std::borrow::Cow<'static, str> {
177 "io.k8s.api.core.v1.PodCondition".into()
178 }
179
180 fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
181 crate::schemars::json_schema!({
182 "description": "PodCondition contains details for the current condition of this pod.",
183 "type": "object",
184 "properties": {
185 "lastProbeTime": ({
186 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>();
187 schema_obj.ensure_object().insert("description".into(), "Last time we probed the condition.".into());
188 schema_obj
189 }),
190 "lastTransitionTime": ({
191 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>();
192 schema_obj.ensure_object().insert("description".into(), "Last time the condition transitioned from one status to another.".into());
193 schema_obj
194 }),
195 "message": {
196 "description": "Human-readable message indicating details about last transition.",
197 "type": "string",
198 },
199 "observedGeneration": {
200 "description": "If set, this represents the .metadata.generation that the pod condition was set based upon. The PodObservedGenerationTracking feature gate must be enabled to use this field.",
201 "type": "integer",
202 "format": "int64",
203 },
204 "reason": {
205 "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
206 "type": "string",
207 },
208 "status": {
209 "description": "Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions",
210 "type": "string",
211 },
212 "type": {
213 "description": "Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions",
214 "type": "string",
215 },
216 },
217 "required": [
218 "status",
219 "type",
220 ],
221 })
222 }
223}