k8s_openapi/v1_30/api/apiserverinternal/v1alpha1/
storage_version_condition.rs

1// Generated from definition io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition
2
3/// Describes the state of the storageVersion at a certain point.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct StorageVersionCondition {
6    /// Last time the condition transitioned from one status to another.
7    pub last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
8
9    /// A human readable message indicating details about the transition.
10    pub message: String,
11
12    /// If set, this represents the .metadata.generation that the condition was set based upon.
13    pub observed_generation: Option<i64>,
14
15    /// The reason for the condition's last transition.
16    pub reason: String,
17
18    /// Status of the condition, one of True, False, Unknown.
19    pub status: String,
20
21    /// Type of the condition.
22    pub type_: 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 std::fmt::Formatter<'_>) -> std::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 std::fmt::Formatter<'_>) -> std::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<String> = None;
89                let mut value_observed_generation: Option<i64> = None;
90                let mut value_reason: Option<String> = None;
91                let mut value_status: Option<String> = None;
92                let mut value_type_: Option<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() -> String {
157        "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition".to_owned()
158    }
159
160    fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
161        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
162            metadata: Some(Box::new(crate::schemars::schema::Metadata {
163                description: Some("Describes the state of the storageVersion at a certain point.".to_owned()),
164                ..Default::default()
165            })),
166            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
167            object: Some(Box::new(crate::schemars::schema::ObjectValidation {
168                properties: [
169                    (
170                        "lastTransitionTime".to_owned(),
171                        {
172                            let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>().into_object();
173                            schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
174                                description: Some("Last time the condition transitioned from one status to another.".to_owned()),
175                                ..Default::default()
176                            }));
177                            crate::schemars::schema::Schema::Object(schema_obj)
178                        },
179                    ),
180                    (
181                        "message".to_owned(),
182                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
183                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
184                                description: Some("A human readable message indicating details about the transition.".to_owned()),
185                                ..Default::default()
186                            })),
187                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
188                            ..Default::default()
189                        }),
190                    ),
191                    (
192                        "observedGeneration".to_owned(),
193                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
194                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
195                                description: Some("If set, this represents the .metadata.generation that the condition was set based upon.".to_owned()),
196                                ..Default::default()
197                            })),
198                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
199                            format: Some("int64".to_owned()),
200                            ..Default::default()
201                        }),
202                    ),
203                    (
204                        "reason".to_owned(),
205                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
206                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
207                                description: Some("The reason for the condition's last transition.".to_owned()),
208                                ..Default::default()
209                            })),
210                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
211                            ..Default::default()
212                        }),
213                    ),
214                    (
215                        "status".to_owned(),
216                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
217                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
218                                description: Some("Status of the condition, one of True, False, Unknown.".to_owned()),
219                                ..Default::default()
220                            })),
221                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
222                            ..Default::default()
223                        }),
224                    ),
225                    (
226                        "type".to_owned(),
227                        crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
228                            metadata: Some(Box::new(crate::schemars::schema::Metadata {
229                                description: Some("Type of the condition.".to_owned()),
230                                ..Default::default()
231                            })),
232                            instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
233                            ..Default::default()
234                        }),
235                    ),
236                ].into(),
237                required: [
238                    "message".to_owned(),
239                    "reason".to_owned(),
240                    "status".to_owned(),
241                    "type".to_owned(),
242                ].into(),
243                ..Default::default()
244            })),
245            ..Default::default()
246        })
247    }
248}