1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct StorageVersionCondition {
6 pub last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
8
9 pub message: std::string::String,
11
12 pub observed_generation: Option<i64>,
14
15 pub reason: std::string::String,
17
18 pub status: std::string::String,
20
21 pub type_: std::string::String,
23}
24
25impl crate::DeepMerge for StorageVersionCondition {
26 fn merge_from(&mut self, other: Self) {
27 crate::DeepMerge::merge_from(&mut self.last_transition_time, other.last_transition_time);
28 crate::DeepMerge::merge_from(&mut self.message, other.message);
29 crate::DeepMerge::merge_from(&mut self.observed_generation, other.observed_generation);
30 crate::DeepMerge::merge_from(&mut self.reason, other.reason);
31 crate::DeepMerge::merge_from(&mut self.status, other.status);
32 crate::DeepMerge::merge_from(&mut self.type_, other.type_);
33 }
34}
35
36impl<'de> crate::serde::Deserialize<'de> for StorageVersionCondition {
37 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
38 #[allow(non_camel_case_types)]
39 enum Field {
40 Key_last_transition_time,
41 Key_message,
42 Key_observed_generation,
43 Key_reason,
44 Key_status,
45 Key_type_,
46 Other,
47 }
48
49 impl<'de> crate::serde::Deserialize<'de> for Field {
50 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
51 struct Visitor;
52
53 impl crate::serde::de::Visitor<'_> for Visitor {
54 type Value = Field;
55
56 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
57 f.write_str("field identifier")
58 }
59
60 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
61 Ok(match v {
62 "lastTransitionTime" => Field::Key_last_transition_time,
63 "message" => Field::Key_message,
64 "observedGeneration" => Field::Key_observed_generation,
65 "reason" => Field::Key_reason,
66 "status" => Field::Key_status,
67 "type" => Field::Key_type_,
68 _ => Field::Other,
69 })
70 }
71 }
72
73 deserializer.deserialize_identifier(Visitor)
74 }
75 }
76
77 struct Visitor;
78
79 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
80 type Value = StorageVersionCondition;
81
82 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
83 f.write_str("StorageVersionCondition")
84 }
85
86 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
87 let mut value_last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
88 let mut value_message: Option<std::string::String> = None;
89 let mut value_observed_generation: Option<i64> = None;
90 let mut value_reason: Option<std::string::String> = None;
91 let mut value_status: Option<std::string::String> = None;
92 let mut value_type_: Option<std::string::String> = None;
93
94 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
95 match key {
96 Field::Key_last_transition_time => value_last_transition_time = crate::serde::de::MapAccess::next_value(&mut map)?,
97 Field::Key_message => value_message = crate::serde::de::MapAccess::next_value(&mut map)?,
98 Field::Key_observed_generation => value_observed_generation = crate::serde::de::MapAccess::next_value(&mut map)?,
99 Field::Key_reason => value_reason = crate::serde::de::MapAccess::next_value(&mut map)?,
100 Field::Key_status => value_status = crate::serde::de::MapAccess::next_value(&mut map)?,
101 Field::Key_type_ => value_type_ = crate::serde::de::MapAccess::next_value(&mut map)?,
102 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
103 }
104 }
105
106 Ok(StorageVersionCondition {
107 last_transition_time: value_last_transition_time,
108 message: value_message.unwrap_or_default(),
109 observed_generation: value_observed_generation,
110 reason: value_reason.unwrap_or_default(),
111 status: value_status.unwrap_or_default(),
112 type_: value_type_.unwrap_or_default(),
113 })
114 }
115 }
116
117 deserializer.deserialize_struct(
118 "StorageVersionCondition",
119 &[
120 "lastTransitionTime",
121 "message",
122 "observedGeneration",
123 "reason",
124 "status",
125 "type",
126 ],
127 Visitor,
128 )
129 }
130}
131
132impl crate::serde::Serialize for StorageVersionCondition {
133 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
134 let mut state = serializer.serialize_struct(
135 "StorageVersionCondition",
136 4 +
137 self.last_transition_time.as_ref().map_or(0, |_| 1) +
138 self.observed_generation.as_ref().map_or(0, |_| 1),
139 )?;
140 if let Some(value) = &self.last_transition_time {
141 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "lastTransitionTime", value)?;
142 }
143 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", &self.message)?;
144 if let Some(value) = &self.observed_generation {
145 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "observedGeneration", value)?;
146 }
147 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", &self.reason)?;
148 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", &self.status)?;
149 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "type", &self.type_)?;
150 crate::serde::ser::SerializeStruct::end(state)
151 }
152}
153
154#[cfg(feature = "schemars")]
155impl crate::schemars::JsonSchema for StorageVersionCondition {
156 fn schema_name() -> std::borrow::Cow<'static, str> {
157 "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition".into()
158 }
159
160 fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
161 crate::schemars::json_schema!({
162 "description": "Describes the state of the storageVersion at a certain point.",
163 "type": "object",
164 "properties": {
165 "lastTransitionTime": ({
166 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>();
167 schema_obj.ensure_object().insert("description".into(), "lastTransitionTime is the last time the condition transitioned from one status to another.".into());
168 schema_obj
169 }),
170 "message": {
171 "description": "message is a human readable string indicating details about the transition.",
172 "type": "string",
173 },
174 "observedGeneration": {
175 "description": "observedGeneration represents the .metadata.generation that the condition was set based upon, if field is set.",
176 "type": "integer",
177 "format": "int64",
178 },
179 "reason": {
180 "description": "reason for the condition's last transition.",
181 "type": "string",
182 },
183 "status": {
184 "description": "status of the condition, one of True, False, Unknown.",
185 "type": "string",
186 },
187 "type": {
188 "description": "type of the condition.",
189 "type": "string",
190 },
191 },
192 "required": [
193 "message",
194 "reason",
195 "status",
196 "type",
197 ],
198 })
199 }
200}
201
202#[cfg(feature = "schemars08")]
203impl crate::schemars08::JsonSchema for StorageVersionCondition {
204 fn schema_name() -> std::string::String {
205 "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition".into()
206 }
207
208 fn json_schema(__gen: &mut crate::schemars08::gen::SchemaGenerator) -> crate::schemars08::schema::Schema {
209 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
210 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
211 description: Some("Describes the state of the storageVersion at a certain point.".into()),
212 ..Default::default()
213 })),
214 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Object))),
215 object: Some(std::boxed::Box::new(crate::schemars08::schema::ObjectValidation {
216 properties: [
217 (
218 "lastTransitionTime".into(),
219 {
220 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>().into_object();
221 schema_obj.metadata = Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
222 description: Some("lastTransitionTime is the last time the condition transitioned from one status to another.".into()),
223 ..Default::default()
224 }));
225 crate::schemars08::schema::Schema::Object(schema_obj)
226 },
227 ),
228 (
229 "message".into(),
230 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
231 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
232 description: Some("message is a human readable string indicating details about the transition.".into()),
233 ..Default::default()
234 })),
235 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
236 ..Default::default()
237 }),
238 ),
239 (
240 "observedGeneration".into(),
241 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
242 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
243 description: Some("observedGeneration represents the .metadata.generation that the condition was set based upon, if field is set.".into()),
244 ..Default::default()
245 })),
246 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::Integer))),
247 format: Some("int64".into()),
248 ..Default::default()
249 }),
250 ),
251 (
252 "reason".into(),
253 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
254 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
255 description: Some("reason for the condition's last transition.".into()),
256 ..Default::default()
257 })),
258 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
259 ..Default::default()
260 }),
261 ),
262 (
263 "status".into(),
264 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
265 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
266 description: Some("status of the condition, one of True, False, Unknown.".into()),
267 ..Default::default()
268 })),
269 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
270 ..Default::default()
271 }),
272 ),
273 (
274 "type".into(),
275 crate::schemars08::schema::Schema::Object(crate::schemars08::schema::SchemaObject {
276 metadata: Some(std::boxed::Box::new(crate::schemars08::schema::Metadata {
277 description: Some("type of the condition.".into()),
278 ..Default::default()
279 })),
280 instance_type: Some(crate::schemars08::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars08::schema::InstanceType::String))),
281 ..Default::default()
282 }),
283 ),
284 ].into(),
285 required: [
286 "message".into(),
287 "reason".into(),
288 "status".into(),
289 "type".into(),
290 ].into(),
291 ..Default::default()
292 })),
293 ..Default::default()
294 })
295 }
296}