1// Generated from definition io.k8s.apimachinery.pkg.apis.meta.v1.Condition
23/// Condition contains details for one aspect of the current state of this API Resource.
4#[derive(Clone, Debug, PartialEq)]
5pub struct Condition {
6/// lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
7pub last_transition_time: crate::apimachinery::pkg::apis::meta::v1::Time,
89/// message is a human readable message indicating details about the transition. This may be an empty string.
10pub message: String,
1112/// observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions\[x\].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
13pub observed_generation: Option<i64>,
1415/// reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
16pub reason: String,
1718/// status of the condition, one of True, False, Unknown.
19pub status: String,
2021/// type of condition in CamelCase or in foo.example.com/CamelCase.
22pub type_: String,
23}
2425impl crate::DeepMerge for Condition {
26fn merge_from(&mut self, other: Self) {
27crate::DeepMerge::merge_from(&mut self.last_transition_time, other.last_transition_time);
28crate::DeepMerge::merge_from(&mut self.message, other.message);
29crate::DeepMerge::merge_from(&mut self.observed_generation, other.observed_generation);
30crate::DeepMerge::merge_from(&mut self.reason, other.reason);
31crate::DeepMerge::merge_from(&mut self.status, other.status);
32crate::DeepMerge::merge_from(&mut self.type_, other.type_);
33 }
34}
3536impl<'de> crate::serde::Deserialize<'de> for Condition {
37fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
38#[allow(non_camel_case_types)]
39enum 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 }
4849impl<'de> crate::serde::Deserialize<'de> for Field {
50fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
51struct Visitor;
5253impl<'de> crate::serde::de::Visitor<'de> for Visitor {
54type Value = Field;
5556fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
57 f.write_str("field identifier")
58 }
5960fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
61Ok(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 }
7273 deserializer.deserialize_identifier(Visitor)
74 }
75 }
7677struct Visitor;
7879impl<'de> crate::serde::de::Visitor<'de> for Visitor {
80type Value = Condition;
8182fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
83 f.write_str("Condition")
84 }
8586fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
87let mut value_last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
88let mut value_message: Option<String> = None;
89let mut value_observed_generation: Option<i64> = None;
90let mut value_reason: Option<String> = None;
91let mut value_status: Option<String> = None;
92let mut value_type_: Option<String> = None;
9394while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
95match key {
96 Field::Key_last_transition_time => value_last_transition_time = Some(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 }
105106Ok(Condition {
107 last_transition_time: value_last_transition_time.ok_or_else(|| crate::serde::de::Error::missing_field("lastTransitionTime"))?,
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 }
116117 deserializer.deserialize_struct(
118"Condition",
119&[
120"lastTransitionTime",
121"message",
122"observedGeneration",
123"reason",
124"status",
125"type",
126 ],
127 Visitor,
128 )
129 }
130}
131132impl crate::serde::Serialize for Condition {
133fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
134let mut state = serializer.serialize_struct(
135"Condition",
1365 +
137self.observed_generation.as_ref().map_or(0, |_| 1),
138 )?;
139crate::serde::ser::SerializeStruct::serialize_field(&mut state, "lastTransitionTime", &self.last_transition_time)?;
140crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", &self.message)?;
141if let Some(value) = &self.observed_generation {
142crate::serde::ser::SerializeStruct::serialize_field(&mut state, "observedGeneration", value)?;
143 }
144crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", &self.reason)?;
145crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", &self.status)?;
146crate::serde::ser::SerializeStruct::serialize_field(&mut state, "type", &self.type_)?;
147crate::serde::ser::SerializeStruct::end(state)
148 }
149}
150151#[cfg(feature = "schemars")]
152impl crate::schemars::JsonSchema for Condition {
153fn schema_name() -> String {
154"io.k8s.apimachinery.pkg.apis.meta.v1.Condition".to_owned()
155 }
156157fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
158crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
159 metadata: Some(Box::new(crate::schemars::schema::Metadata {
160 description: Some("Condition contains details for one aspect of the current state of this API Resource.".to_owned()),
161 ..Default::default()
162 })),
163 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
164 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
165 properties: [
166 (
167"lastTransitionTime".to_owned(),
168 {
169let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>().into_object();
170 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
171 description: Some("lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.".to_owned()),
172 ..Default::default()
173 }));
174crate::schemars::schema::Schema::Object(schema_obj)
175 },
176 ),
177 (
178"message".to_owned(),
179crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
180 metadata: Some(Box::new(crate::schemars::schema::Metadata {
181 description: Some("message is a human readable message indicating details about the transition. This may be an empty string.".to_owned()),
182 ..Default::default()
183 })),
184 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
185 ..Default::default()
186 }),
187 ),
188 (
189"observedGeneration".to_owned(),
190crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
191 metadata: Some(Box::new(crate::schemars::schema::Metadata {
192 description: Some("observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.".to_owned()),
193 ..Default::default()
194 })),
195 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
196 format: Some("int64".to_owned()),
197 ..Default::default()
198 }),
199 ),
200 (
201"reason".to_owned(),
202crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
203 metadata: Some(Box::new(crate::schemars::schema::Metadata {
204 description: Some("reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.".to_owned()),
205 ..Default::default()
206 })),
207 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
208 ..Default::default()
209 }),
210 ),
211 (
212"status".to_owned(),
213crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
214 metadata: Some(Box::new(crate::schemars::schema::Metadata {
215 description: Some("status of the condition, one of True, False, Unknown.".to_owned()),
216 ..Default::default()
217 })),
218 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
219 ..Default::default()
220 }),
221 ),
222 (
223"type".to_owned(),
224crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
225 metadata: Some(Box::new(crate::schemars::schema::Metadata {
226 description: Some("type of condition in CamelCase or in foo.example.com/CamelCase.".to_owned()),
227 ..Default::default()
228 })),
229 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
230 ..Default::default()
231 }),
232 ),
233 ].into(),
234 required: [
235"lastTransitionTime".to_owned(),
236"message".to_owned(),
237"reason".to_owned(),
238"status".to_owned(),
239"type".to_owned(),
240 ].into(),
241 ..Default::default()
242 })),
243 ..Default::default()
244 })
245 }
246}