openshift_openapi/v4_5/api/build/v1/
build_status.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct BuildStatus {
6 pub cancelled: Option<bool>,
8
9 pub completion_timestamp: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time>,
11
12 pub config: Option<k8s_openapi::api::core::v1::ObjectReference>,
14
15 pub duration: Option<i64>,
17
18 pub log_snippet: Option<String>,
20
21 pub message: Option<String>,
23
24 pub output: Option<crate::api::build::v1::BuildStatusOutput>,
26
27 pub output_docker_image_reference: Option<String>,
29
30 pub phase: String,
32
33 pub reason: Option<String>,
35
36 pub stages: Option<Vec<crate::api::build::v1::StageInfo>>,
38
39 pub start_timestamp: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time>,
41}
42
43impl<'de> serde::Deserialize<'de> for BuildStatus {
44 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
45 #[allow(non_camel_case_types)]
46 enum Field {
47 Key_cancelled,
48 Key_completion_timestamp,
49 Key_config,
50 Key_duration,
51 Key_log_snippet,
52 Key_message,
53 Key_output,
54 Key_output_docker_image_reference,
55 Key_phase,
56 Key_reason,
57 Key_stages,
58 Key_start_timestamp,
59 Other,
60 }
61
62 impl<'de> serde::Deserialize<'de> for Field {
63 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
64 struct Visitor;
65
66 impl<'de> serde::de::Visitor<'de> for Visitor {
67 type Value = Field;
68
69 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
70 f.write_str("field identifier")
71 }
72
73 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
74 Ok(match v {
75 "cancelled" => Field::Key_cancelled,
76 "completionTimestamp" => Field::Key_completion_timestamp,
77 "config" => Field::Key_config,
78 "duration" => Field::Key_duration,
79 "logSnippet" => Field::Key_log_snippet,
80 "message" => Field::Key_message,
81 "output" => Field::Key_output,
82 "outputDockerImageReference" => Field::Key_output_docker_image_reference,
83 "phase" => Field::Key_phase,
84 "reason" => Field::Key_reason,
85 "stages" => Field::Key_stages,
86 "startTimestamp" => Field::Key_start_timestamp,
87 _ => Field::Other,
88 })
89 }
90 }
91
92 deserializer.deserialize_identifier(Visitor)
93 }
94 }
95
96 struct Visitor;
97
98 impl<'de> serde::de::Visitor<'de> for Visitor {
99 type Value = BuildStatus;
100
101 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
102 f.write_str("BuildStatus")
103 }
104
105 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
106 let mut value_cancelled: Option<bool> = None;
107 let mut value_completion_timestamp: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time> = None;
108 let mut value_config: Option<k8s_openapi::api::core::v1::ObjectReference> = None;
109 let mut value_duration: Option<i64> = None;
110 let mut value_log_snippet: Option<String> = None;
111 let mut value_message: Option<String> = None;
112 let mut value_output: Option<crate::api::build::v1::BuildStatusOutput> = None;
113 let mut value_output_docker_image_reference: Option<String> = None;
114 let mut value_phase: Option<String> = None;
115 let mut value_reason: Option<String> = None;
116 let mut value_stages: Option<Vec<crate::api::build::v1::StageInfo>> = None;
117 let mut value_start_timestamp: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time> = None;
118
119 while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
120 match key {
121 Field::Key_cancelled => value_cancelled = serde::de::MapAccess::next_value(&mut map)?,
122 Field::Key_completion_timestamp => value_completion_timestamp = serde::de::MapAccess::next_value(&mut map)?,
123 Field::Key_config => value_config = serde::de::MapAccess::next_value(&mut map)?,
124 Field::Key_duration => value_duration = serde::de::MapAccess::next_value(&mut map)?,
125 Field::Key_log_snippet => value_log_snippet = serde::de::MapAccess::next_value(&mut map)?,
126 Field::Key_message => value_message = serde::de::MapAccess::next_value(&mut map)?,
127 Field::Key_output => value_output = serde::de::MapAccess::next_value(&mut map)?,
128 Field::Key_output_docker_image_reference => value_output_docker_image_reference = serde::de::MapAccess::next_value(&mut map)?,
129 Field::Key_phase => value_phase = Some(serde::de::MapAccess::next_value(&mut map)?),
130 Field::Key_reason => value_reason = serde::de::MapAccess::next_value(&mut map)?,
131 Field::Key_stages => value_stages = serde::de::MapAccess::next_value(&mut map)?,
132 Field::Key_start_timestamp => value_start_timestamp = serde::de::MapAccess::next_value(&mut map)?,
133 Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
134 }
135 }
136
137 Ok(BuildStatus {
138 cancelled: value_cancelled,
139 completion_timestamp: value_completion_timestamp,
140 config: value_config,
141 duration: value_duration,
142 log_snippet: value_log_snippet,
143 message: value_message,
144 output: value_output,
145 output_docker_image_reference: value_output_docker_image_reference,
146 phase: value_phase.ok_or_else(|| serde::de::Error::missing_field("phase"))?,
147 reason: value_reason,
148 stages: value_stages,
149 start_timestamp: value_start_timestamp,
150 })
151 }
152 }
153
154 deserializer.deserialize_struct(
155 "BuildStatus",
156 &[
157 "cancelled",
158 "completionTimestamp",
159 "config",
160 "duration",
161 "logSnippet",
162 "message",
163 "output",
164 "outputDockerImageReference",
165 "phase",
166 "reason",
167 "stages",
168 "startTimestamp",
169 ],
170 Visitor,
171 )
172 }
173}
174
175impl serde::Serialize for BuildStatus {
176 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
177 let mut state = serializer.serialize_struct(
178 "BuildStatus",
179 1 +
180 self.cancelled.as_ref().map_or(0, |_| 1) +
181 self.completion_timestamp.as_ref().map_or(0, |_| 1) +
182 self.config.as_ref().map_or(0, |_| 1) +
183 self.duration.as_ref().map_or(0, |_| 1) +
184 self.log_snippet.as_ref().map_or(0, |_| 1) +
185 self.message.as_ref().map_or(0, |_| 1) +
186 self.output.as_ref().map_or(0, |_| 1) +
187 self.output_docker_image_reference.as_ref().map_or(0, |_| 1) +
188 self.reason.as_ref().map_or(0, |_| 1) +
189 self.stages.as_ref().map_or(0, |_| 1) +
190 self.start_timestamp.as_ref().map_or(0, |_| 1),
191 )?;
192 if let Some(value) = &self.cancelled {
193 serde::ser::SerializeStruct::serialize_field(&mut state, "cancelled", value)?;
194 }
195 if let Some(value) = &self.completion_timestamp {
196 serde::ser::SerializeStruct::serialize_field(&mut state, "completionTimestamp", value)?;
197 }
198 if let Some(value) = &self.config {
199 serde::ser::SerializeStruct::serialize_field(&mut state, "config", value)?;
200 }
201 if let Some(value) = &self.duration {
202 serde::ser::SerializeStruct::serialize_field(&mut state, "duration", value)?;
203 }
204 if let Some(value) = &self.log_snippet {
205 serde::ser::SerializeStruct::serialize_field(&mut state, "logSnippet", value)?;
206 }
207 if let Some(value) = &self.message {
208 serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
209 }
210 if let Some(value) = &self.output {
211 serde::ser::SerializeStruct::serialize_field(&mut state, "output", value)?;
212 }
213 if let Some(value) = &self.output_docker_image_reference {
214 serde::ser::SerializeStruct::serialize_field(&mut state, "outputDockerImageReference", value)?;
215 }
216 serde::ser::SerializeStruct::serialize_field(&mut state, "phase", &self.phase)?;
217 if let Some(value) = &self.reason {
218 serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
219 }
220 if let Some(value) = &self.stages {
221 serde::ser::SerializeStruct::serialize_field(&mut state, "stages", value)?;
222 }
223 if let Some(value) = &self.start_timestamp {
224 serde::ser::SerializeStruct::serialize_field(&mut state, "startTimestamp", value)?;
225 }
226 serde::ser::SerializeStruct::end(state)
227 }
228}