k8s_openapi/v1_30/api/core/v1/
namespace_condition.rs

1// Generated from definition io.k8s.api.core.v1.NamespaceCondition
2
3/// NamespaceCondition contains details about state of namespace.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct NamespaceCondition {
6    pub last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time>,
7
8    pub message: Option<std::string::String>,
9
10    pub reason: Option<std::string::String>,
11
12    /// Status of the condition, one of True, False, Unknown.
13    pub status: std::string::String,
14
15    /// Type of namespace controller condition.
16    pub type_: std::string::String,
17}
18
19impl crate::DeepMerge for NamespaceCondition {
20    fn merge_from(&mut self, other: Self) {
21        crate::DeepMerge::merge_from(&mut self.last_transition_time, other.last_transition_time);
22        crate::DeepMerge::merge_from(&mut self.message, other.message);
23        crate::DeepMerge::merge_from(&mut self.reason, other.reason);
24        crate::DeepMerge::merge_from(&mut self.status, other.status);
25        crate::DeepMerge::merge_from(&mut self.type_, other.type_);
26    }
27}
28
29impl<'de> crate::serde::Deserialize<'de> for NamespaceCondition {
30    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
31        #[allow(non_camel_case_types)]
32        enum Field {
33            Key_last_transition_time,
34            Key_message,
35            Key_reason,
36            Key_status,
37            Key_type_,
38            Other,
39        }
40
41        impl<'de> crate::serde::Deserialize<'de> for Field {
42            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
43                struct Visitor;
44
45                impl crate::serde::de::Visitor<'_> for Visitor {
46                    type Value = Field;
47
48                    fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
49                        f.write_str("field identifier")
50                    }
51
52                    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
53                        Ok(match v {
54                            "lastTransitionTime" => Field::Key_last_transition_time,
55                            "message" => Field::Key_message,
56                            "reason" => Field::Key_reason,
57                            "status" => Field::Key_status,
58                            "type" => Field::Key_type_,
59                            _ => Field::Other,
60                        })
61                    }
62                }
63
64                deserializer.deserialize_identifier(Visitor)
65            }
66        }
67
68        struct Visitor;
69
70        impl<'de> crate::serde::de::Visitor<'de> for Visitor {
71            type Value = NamespaceCondition;
72
73            fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
74                f.write_str("NamespaceCondition")
75            }
76
77            fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
78                let mut value_last_transition_time: Option<crate::apimachinery::pkg::apis::meta::v1::Time> = None;
79                let mut value_message: Option<std::string::String> = None;
80                let mut value_reason: Option<std::string::String> = None;
81                let mut value_status: Option<std::string::String> = None;
82                let mut value_type_: Option<std::string::String> = None;
83
84                while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
85                    match key {
86                        Field::Key_last_transition_time => value_last_transition_time = crate::serde::de::MapAccess::next_value(&mut map)?,
87                        Field::Key_message => value_message = crate::serde::de::MapAccess::next_value(&mut map)?,
88                        Field::Key_reason => value_reason = crate::serde::de::MapAccess::next_value(&mut map)?,
89                        Field::Key_status => value_status = crate::serde::de::MapAccess::next_value(&mut map)?,
90                        Field::Key_type_ => value_type_ = crate::serde::de::MapAccess::next_value(&mut map)?,
91                        Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
92                    }
93                }
94
95                Ok(NamespaceCondition {
96                    last_transition_time: value_last_transition_time,
97                    message: value_message,
98                    reason: value_reason,
99                    status: value_status.unwrap_or_default(),
100                    type_: value_type_.unwrap_or_default(),
101                })
102            }
103        }
104
105        deserializer.deserialize_struct(
106            "NamespaceCondition",
107            &[
108                "lastTransitionTime",
109                "message",
110                "reason",
111                "status",
112                "type",
113            ],
114            Visitor,
115        )
116    }
117}
118
119impl crate::serde::Serialize for NamespaceCondition {
120    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
121        let mut state = serializer.serialize_struct(
122            "NamespaceCondition",
123            2 +
124            self.last_transition_time.as_ref().map_or(0, |_| 1) +
125            self.message.as_ref().map_or(0, |_| 1) +
126            self.reason.as_ref().map_or(0, |_| 1),
127        )?;
128        if let Some(value) = &self.last_transition_time {
129            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "lastTransitionTime", value)?;
130        }
131        if let Some(value) = &self.message {
132            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
133        }
134        if let Some(value) = &self.reason {
135            crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
136        }
137        crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", &self.status)?;
138        crate::serde::ser::SerializeStruct::serialize_field(&mut state, "type", &self.type_)?;
139        crate::serde::ser::SerializeStruct::end(state)
140    }
141}
142
143#[cfg(feature = "schemars")]
144impl crate::schemars::JsonSchema for NamespaceCondition {
145    fn schema_name() -> std::borrow::Cow<'static, str> {
146        "io.k8s.api.core.v1.NamespaceCondition".into()
147    }
148
149    fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
150        crate::schemars::json_schema!({
151            "description": "NamespaceCondition contains details about state of namespace.",
152            "type": "object",
153            "properties": {
154                "lastTransitionTime": __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::Time>(),
155                "message": {
156                    "type": "string",
157                },
158                "reason": {
159                    "type": "string",
160                },
161                "status": {
162                    "description": "Status of the condition, one of True, False, Unknown.",
163                    "type": "string",
164                },
165                "type": {
166                    "description": "Type of namespace controller condition.",
167                    "type": "string",
168                },
169            },
170            "required": [
171                "status",
172                "type",
173            ],
174        })
175    }
176}