k8s_openapi/v1_34/apimachinery/pkg/apis/meta/v1/
status.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct Status {
6 pub code: Option<i32>,
8
9 pub details: Option<crate::apimachinery::pkg::apis::meta::v1::StatusDetails>,
11
12 pub message: Option<std::string::String>,
14
15 pub metadata: crate::apimachinery::pkg::apis::meta::v1::ListMeta,
17
18 pub reason: Option<std::string::String>,
20
21 pub status: Option<std::string::String>,
23}
24
25impl crate::Resource for Status {
26 const API_VERSION: &'static str = "v1";
27 const GROUP: &'static str = "";
28 const KIND: &'static str = "Status";
29 const VERSION: &'static str = "v1";
30 const URL_PATH_SEGMENT: &'static str = "status";
31 type Scope = crate::SubResourceScope;
32}
33
34impl crate::Metadata for Status {
35 type Ty = crate::apimachinery::pkg::apis::meta::v1::ListMeta;
36
37 fn metadata(&self) -> &<Self as crate::Metadata>::Ty {
38 &self.metadata
39 }
40
41 fn metadata_mut(&mut self) -> &mut<Self as crate::Metadata>::Ty {
42 &mut self.metadata
43 }
44}
45
46impl crate::DeepMerge for Status {
47 fn merge_from(&mut self, other: Self) {
48 crate::DeepMerge::merge_from(&mut self.code, other.code);
49 crate::DeepMerge::merge_from(&mut self.details, other.details);
50 crate::DeepMerge::merge_from(&mut self.message, other.message);
51 crate::DeepMerge::merge_from(&mut self.metadata, other.metadata);
52 crate::DeepMerge::merge_from(&mut self.reason, other.reason);
53 crate::DeepMerge::merge_from(&mut self.status, other.status);
54 }
55}
56
57impl<'de> crate::serde::Deserialize<'de> for Status {
58 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
59 #[allow(non_camel_case_types)]
60 enum Field {
61 Key_api_version,
62 Key_kind,
63 Key_code,
64 Key_details,
65 Key_message,
66 Key_metadata,
67 Key_reason,
68 Key_status,
69 Other,
70 }
71
72 impl<'de> crate::serde::Deserialize<'de> for Field {
73 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
74 struct Visitor;
75
76 impl crate::serde::de::Visitor<'_> for Visitor {
77 type Value = Field;
78
79 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
80 f.write_str("field identifier")
81 }
82
83 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
84 Ok(match v {
85 "apiVersion" => Field::Key_api_version,
86 "kind" => Field::Key_kind,
87 "code" => Field::Key_code,
88 "details" => Field::Key_details,
89 "message" => Field::Key_message,
90 "metadata" => Field::Key_metadata,
91 "reason" => Field::Key_reason,
92 "status" => Field::Key_status,
93 _ => Field::Other,
94 })
95 }
96 }
97
98 deserializer.deserialize_identifier(Visitor)
99 }
100 }
101
102 struct Visitor;
103
104 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
105 type Value = Status;
106
107 fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
108 f.write_str(<Self::Value as crate::Resource>::KIND)
109 }
110
111 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
112 let mut value_code: Option<i32> = None;
113 let mut value_details: Option<crate::apimachinery::pkg::apis::meta::v1::StatusDetails> = None;
114 let mut value_message: Option<std::string::String> = None;
115 let mut value_metadata: Option<crate::apimachinery::pkg::apis::meta::v1::ListMeta> = None;
116 let mut value_reason: Option<std::string::String> = None;
117 let mut value_status: Option<std::string::String> = None;
118
119 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
120 match key {
121 Field::Key_api_version => {
122 let value_api_version: std::string::String = crate::serde::de::MapAccess::next_value(&mut map)?;
123 if value_api_version != <Self::Value as crate::Resource>::API_VERSION {
124 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_api_version), &<Self::Value as crate::Resource>::API_VERSION));
125 }
126 },
127 Field::Key_kind => {
128 let value_kind: std::string::String = crate::serde::de::MapAccess::next_value(&mut map)?;
129 if value_kind != <Self::Value as crate::Resource>::KIND {
130 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_kind), &<Self::Value as crate::Resource>::KIND));
131 }
132 },
133 Field::Key_code => value_code = crate::serde::de::MapAccess::next_value(&mut map)?,
134 Field::Key_details => value_details = crate::serde::de::MapAccess::next_value(&mut map)?,
135 Field::Key_message => value_message = crate::serde::de::MapAccess::next_value(&mut map)?,
136 Field::Key_metadata => value_metadata = crate::serde::de::MapAccess::next_value(&mut map)?,
137 Field::Key_reason => value_reason = crate::serde::de::MapAccess::next_value(&mut map)?,
138 Field::Key_status => value_status = crate::serde::de::MapAccess::next_value(&mut map)?,
139 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
140 }
141 }
142
143 Ok(Status {
144 code: value_code,
145 details: value_details,
146 message: value_message,
147 metadata: value_metadata.unwrap_or_default(),
148 reason: value_reason,
149 status: value_status,
150 })
151 }
152 }
153
154 deserializer.deserialize_struct(
155 <Self as crate::Resource>::KIND,
156 &[
157 "apiVersion",
158 "kind",
159 "code",
160 "details",
161 "message",
162 "metadata",
163 "reason",
164 "status",
165 ],
166 Visitor,
167 )
168 }
169}
170
171impl crate::serde::Serialize for Status {
172 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
173 let mut state = serializer.serialize_struct(
174 <Self as crate::Resource>::KIND,
175 3 +
176 self.code.as_ref().map_or(0, |_| 1) +
177 self.details.as_ref().map_or(0, |_| 1) +
178 self.message.as_ref().map_or(0, |_| 1) +
179 self.reason.as_ref().map_or(0, |_| 1) +
180 self.status.as_ref().map_or(0, |_| 1),
181 )?;
182 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "apiVersion", <Self as crate::Resource>::API_VERSION)?;
183 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "kind", <Self as crate::Resource>::KIND)?;
184 if let Some(value) = &self.code {
185 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "code", value)?;
186 }
187 if let Some(value) = &self.details {
188 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "details", value)?;
189 }
190 if let Some(value) = &self.message {
191 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "message", value)?;
192 }
193 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "metadata", &self.metadata)?;
194 if let Some(value) = &self.reason {
195 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "reason", value)?;
196 }
197 if let Some(value) = &self.status {
198 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", value)?;
199 }
200 crate::serde::ser::SerializeStruct::end(state)
201 }
202}
203
204#[cfg(feature = "schemars")]
205impl crate::schemars::JsonSchema for Status {
206 fn schema_name() -> std::borrow::Cow<'static, str> {
207 "io.k8s.apimachinery.pkg.apis.meta.v1.Status".into()
208 }
209
210 fn json_schema(__gen: &mut crate::schemars::SchemaGenerator) -> crate::schemars::Schema {
211 crate::schemars::json_schema!({
212 "description": "Status is a return value for calls that don't return other objects.",
213 "type": "object",
214 "properties": {
215 "apiVersion": {
216 "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
217 "type": "string",
218 },
219 "code": {
220 "description": "Suggested HTTP return code for this status, 0 if not set.",
221 "type": "integer",
222 "format": "int32",
223 },
224 "details": ({
225 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::StatusDetails>();
226 schema_obj.ensure_object().insert("description".into(), "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.".into());
227 schema_obj
228 }),
229 "kind": {
230 "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
231 "type": "string",
232 },
233 "message": {
234 "description": "A human-readable description of the status of this operation.",
235 "type": "string",
236 },
237 "metadata": ({
238 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::ListMeta>();
239 schema_obj.ensure_object().insert("description".into(), "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds".into());
240 schema_obj
241 }),
242 "reason": {
243 "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.",
244 "type": "string",
245 },
246 "status": {
247 "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
248 "type": "string",
249 },
250 },
251 "required": [
252 "metadata",
253 ],
254 })
255 }
256}