openshift_openapi/v4_5/api/route/v1/
route_ingress_condition.rs

1// Generated from definition com.github.openshift.api.route.v1.RouteIngressCondition
2
3/// RouteIngressCondition contains details for the current condition of this route on a particular router.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct RouteIngressCondition {
6    /// RFC 3339 date and time when this condition last transitioned
7    pub last_transition_time: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time>,
8
9    /// Human readable message indicating details about last transition.
10    pub message: Option<String>,
11
12    /// (brief) reason for the condition's last transition, and is usually a machine and human readable constant
13    pub reason: Option<String>,
14
15    /// Status is the status of the condition. Can be True, False, Unknown.
16    pub status: String,
17
18    /// Type is the type of the condition. Currently only Ready.
19    pub type_: String,
20}
21
22impl<'de> serde::Deserialize<'de> for RouteIngressCondition {
23    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
24        #[allow(non_camel_case_types)]
25        enum Field {
26            Key_last_transition_time,
27            Key_message,
28            Key_reason,
29            Key_status,
30            Key_type_,
31            Other,
32        }
33
34        impl<'de> serde::Deserialize<'de> for Field {
35            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: serde::Deserializer<'de> {
36                struct Visitor;
37
38                impl<'de> serde::de::Visitor<'de> for Visitor {
39                    type Value = Field;
40
41                    fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42                        f.write_str("field identifier")
43                    }
44
45                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: serde::de::Error {
46                        Ok(match v {
47                            "lastTransitionTime" => Field::Key_last_transition_time,
48                            "message" => Field::Key_message,
49                            "reason" => Field::Key_reason,
50                            "status" => Field::Key_status,
51                            "type" => Field::Key_type_,
52                            _ => Field::Other,
53                        })
54                    }
55                }
56
57                deserializer.deserialize_identifier(Visitor)
58            }
59        }
60
61        struct Visitor;
62
63        impl<'de> serde::de::Visitor<'de> for Visitor {
64            type Value = RouteIngressCondition;
65
66            fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
67                f.write_str("RouteIngressCondition")
68            }
69
70            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: serde::de::MapAccess<'de> {
71                let mut value_last_transition_time: Option<k8s_openapi::apimachinery::pkg::apis::meta::v1::Time> = None;
72                let mut value_message: Option<String> = None;
73                let mut value_reason: Option<String> = None;
74                let mut value_status: Option<String> = None;
75                let mut value_type_: Option<String> = None;
76
77                while let Some(key) = serde::de::MapAccess::next_key::<Field>(&mut map)? {
78                    match key {
79                        Field::Key_last_transition_time => value_last_transition_time = serde::de::MapAccess::next_value(&mut map)?,
80                        Field::Key_message => value_message = serde::de::MapAccess::next_value(&mut map)?,
81                        Field::Key_reason => value_reason = serde::de::MapAccess::next_value(&mut map)?,
82                        Field::Key_status => value_status = Some(serde::de::MapAccess::next_value(&mut map)?),
83                        Field::Key_type_ => value_type_ = Some(serde::de::MapAccess::next_value(&mut map)?),
84                        Field::Other => { let _: serde::de::IgnoredAny = serde::de::MapAccess::next_value(&mut map)?; },
85                    }
86                }
87
88                Ok(RouteIngressCondition {
89                    last_transition_time: value_last_transition_time,
90                    message: value_message,
91                    reason: value_reason,
92                    status: value_status.ok_or_else(|| serde::de::Error::missing_field("status"))?,
93                    type_: value_type_.ok_or_else(|| serde::de::Error::missing_field("type"))?,
94                })
95            }
96        }
97
98        deserializer.deserialize_struct(
99            "RouteIngressCondition",
100            &[
101                "lastTransitionTime",
102                "message",
103                "reason",
104                "status",
105                "type",
106            ],
107            Visitor,
108        )
109    }
110}
111
112impl serde::Serialize for RouteIngressCondition {
113    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
114        let mut state = serializer.serialize_struct(
115            "RouteIngressCondition",
116            2 +
117            self.last_transition_time.as_ref().map_or(0, |_| 1) +
118            self.message.as_ref().map_or(0, |_| 1) +
119            self.reason.as_ref().map_or(0, |_| 1),
120        )?;
121        if let Some(value) = &self.last_transition_time {
122            serde::ser::SerializeStruct::serialize_field(&mut state, "lastTransitionTime", value)?;
123        }
124        if let Some(value) = &self.message {
125            serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
126        }
127        if let Some(value) = &self.reason {
128            serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
129        }
130        serde::ser::SerializeStruct::serialize_field(&mut state, "status", &self.status)?;
131        serde::ser::SerializeStruct::serialize_field(&mut state, "type", &self.type_)?;
132        serde::ser::SerializeStruct::end(state)
133    }
134}