k8s_openapi/v1_30/api/core/v1/
container_state_terminated.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct ContainerStateTerminated {
6 pub container_id: Option<String>,
8
9 pub exit_code: i32,
11
12 pub finished_at: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
14
15 pub message: Option<String>,
17
18 pub reason: Option<String>,
20
21 pub signal: Option<i32>,
23
24 pub started_at: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
26}
27
28impl crate::DeepMerge for ContainerStateTerminated {
29 fn merge_from(&mut self, other: Self) {
30 crate::DeepMerge::merge_from(&mut self.container_id, other.container_id);
31 crate::DeepMerge::merge_from(&mut self.exit_code, other.exit_code);
32 crate::DeepMerge::merge_from(&mut self.finished_at, other.finished_at);
33 crate::DeepMerge::merge_from(&mut self.message, other.message);
34 crate::DeepMerge::merge_from(&mut self.reason, other.reason);
35 crate::DeepMerge::merge_from(&mut self.signal, other.signal);
36 crate::DeepMerge::merge_from(&mut self.started_at, other.started_at);
37 }
38}
39
40impl<'de> crate::serde::Deserialize<'de> for ContainerStateTerminated {
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_container_id,
45 Key_exit_code,
46 Key_finished_at,
47 Key_message,
48 Key_reason,
49 Key_signal,
50 Key_started_at,
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 std::fmt::Formatter<'_>) -> std::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 "containerID" => Field::Key_container_id,
68 "exitCode" => Field::Key_exit_code,
69 "finishedAt" => Field::Key_finished_at,
70 "message" => Field::Key_message,
71 "reason" => Field::Key_reason,
72 "signal" => Field::Key_signal,
73 "startedAt" => Field::Key_started_at,
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 = ContainerStateTerminated;
87
88 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
89 f.write_str("ContainerStateTerminated")
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_container_id: Option<String> = None;
94 let mut value_exit_code: Option<i32> = None;
95 let mut value_finished_at: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
96 let mut value_message: Option<String> = None;
97 let mut value_reason: Option<String> = None;
98 let mut value_signal: Option<i32> = None;
99 let mut value_started_at: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
100
101 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
102 match key {
103 Field::Key_container_id => value_container_id = crate::serde::de::MapAccess::next_value(&mut map)?,
104 Field::Key_exit_code => value_exit_code = crate::serde::de::MapAccess::next_value(&mut map)?,
105 Field::Key_finished_at => value_finished_at = crate::serde::de::MapAccess::next_value(&mut map)?,
106 Field::Key_message => value_message = 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_signal => value_signal = crate::serde::de::MapAccess::next_value(&mut map)?,
109 Field::Key_started_at => value_started_at = 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(ContainerStateTerminated {
115 container_id: value_container_id,
116 exit_code: value_exit_code.unwrap_or_default(),
117 finished_at: value_finished_at,
118 message: value_message,
119 reason: value_reason,
120 signal: value_signal,
121 started_at: value_started_at,
122 })
123 }
124 }
125
126 deserializer.deserialize_struct(
127 "ContainerStateTerminated",
128 &[
129 "containerID",
130 "exitCode",
131 "finishedAt",
132 "message",
133 "reason",
134 "signal",
135 "startedAt",
136 ],
137 Visitor,
138 )
139 }
140}
141
142impl crate::serde::Serialize for ContainerStateTerminated {
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 "ContainerStateTerminated",
146 1 +
147 self.container_id.as_ref().map_or(0, |_| 1) +
148 self.finished_at.as_ref().map_or(0, |_| 1) +
149 self.message.as_ref().map_or(0, |_| 1) +
150 self.reason.as_ref().map_or(0, |_| 1) +
151 self.signal.as_ref().map_or(0, |_| 1) +
152 self.started_at.as_ref().map_or(0, |_| 1),
153 )?;
154 if let Some(value) = &self.container_id {
155 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "containerID", value)?;
156 }
157 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "exitCode", &self.exit_code)?;
158 if let Some(value) = &self.finished_at {
159 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "finishedAt", value)?;
160 }
161 if let Some(value) = &self.message {
162 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
163 }
164 if let Some(value) = &self.reason {
165 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
166 }
167 if let Some(value) = &self.signal {
168 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "signal", value)?;
169 }
170 if let Some(value) = &self.started_at {
171 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "startedAt", value)?;
172 }
173 crate::serde::ser::SerializeStruct::end(state)
174 }
175}
176
177#[cfg(feature = "schemars")]
178impl crate::schemars::JsonSchema for ContainerStateTerminated {
179 fn schema_name() -> String {
180 "io.k8s.api.core.v1.ContainerStateTerminated".to_owned()
181 }
182
183 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
184 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
185 metadata: Some(Box::new(crate::schemars::schema::Metadata {
186 description: Some("ContainerStateTerminated is a terminated state of a container.".to_owned()),
187 ..Default::default()
188 })),
189 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
190 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
191 properties: [
192 (
193 "containerID".to_owned(),
194 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
195 metadata: Some(Box::new(crate::schemars::schema::Metadata {
196 description: Some("Container's ID in the format '<type>://<container_id>'".to_owned()),
197 ..Default::default()
198 })),
199 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
200 ..Default::default()
201 }),
202 ),
203 (
204 "exitCode".to_owned(),
205 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
206 metadata: Some(Box::new(crate::schemars::schema::Metadata {
207 description: Some("Exit status from the last termination of the container".to_owned()),
208 ..Default::default()
209 })),
210 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
211 format: Some("int32".to_owned()),
212 ..Default::default()
213 }),
214 ),
215 (
216 "finishedAt".to_owned(),
217 {
218 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>().into_object();
219 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
220 description: Some("Time at which the container last terminated".to_owned()),
221 ..Default::default()
222 }));
223 crate::schemars::schema::Schema::Object(schema_obj)
224 },
225 ),
226 (
227 "message".to_owned(),
228 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
229 metadata: Some(Box::new(crate::schemars::schema::Metadata {
230 description: Some("Message regarding the last termination of the container".to_owned()),
231 ..Default::default()
232 })),
233 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
234 ..Default::default()
235 }),
236 ),
237 (
238 "reason".to_owned(),
239 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
240 metadata: Some(Box::new(crate::schemars::schema::Metadata {
241 description: Some("(brief) reason from the last termination of the container".to_owned()),
242 ..Default::default()
243 })),
244 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
245 ..Default::default()
246 }),
247 ),
248 (
249 "signal".to_owned(),
250 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
251 metadata: Some(Box::new(crate::schemars::schema::Metadata {
252 description: Some("Signal from the last termination of the container".to_owned()),
253 ..Default::default()
254 })),
255 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
256 format: Some("int32".to_owned()),
257 ..Default::default()
258 }),
259 ),
260 (
261 "startedAt".to_owned(),
262 {
263 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>().into_object();
264 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
265 description: Some("Time at which previous execution of the container started".to_owned()),
266 ..Default::default()
267 }));
268 crate::schemars::schema::Schema::Object(schema_obj)
269 },
270 ),
271 ].into(),
272 required: [
273 "exitCode".to_owned(),
274 ].into(),
275 ..Default::default()
276 })),
277 ..Default::default()
278 })
279 }
280}