k8s_openapi/v1_30/api/authentication/v1/
self_subject_review.rs
1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct SelfSubjectReview {
6 pub metadata: crate::apimachinery::pkg::apis::meta::v1::ObjectMeta,
8
9 pub status: Option<crate::api::authentication::v1::SelfSubjectReviewStatus>,
11}
12
13impl crate::Resource for SelfSubjectReview {
14 const API_VERSION: &'static str = "authentication.k8s.io/v1";
15 const GROUP: &'static str = "authentication.k8s.io";
16 const KIND: &'static str = "SelfSubjectReview";
17 const VERSION: &'static str = "v1";
18 const URL_PATH_SEGMENT: &'static str = "selfsubjectreviews";
19 type Scope = crate::ClusterResourceScope;
20}
21
22impl crate::Metadata for SelfSubjectReview {
23 type Ty = crate::apimachinery::pkg::apis::meta::v1::ObjectMeta;
24
25 fn metadata(&self) -> &<Self as crate::Metadata>::Ty {
26 &self.metadata
27 }
28
29 fn metadata_mut(&mut self) -> &mut<Self as crate::Metadata>::Ty {
30 &mut self.metadata
31 }
32}
33
34impl crate::DeepMerge for SelfSubjectReview {
35 fn merge_from(&mut self, other: Self) {
36 crate::DeepMerge::merge_from(&mut self.metadata, other.metadata);
37 crate::DeepMerge::merge_from(&mut self.status, other.status);
38 }
39}
40
41impl<'de> crate::serde::Deserialize<'de> for SelfSubjectReview {
42 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
43 #[allow(non_camel_case_types)]
44 enum Field {
45 Key_api_version,
46 Key_kind,
47 Key_metadata,
48 Key_status,
49 Other,
50 }
51
52 impl<'de> crate::serde::Deserialize<'de> for Field {
53 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
54 struct Visitor;
55
56 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
57 type Value = Field;
58
59 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
60 f.write_str("field identifier")
61 }
62
63 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
64 Ok(match v {
65 "apiVersion" => Field::Key_api_version,
66 "kind" => Field::Key_kind,
67 "metadata" => Field::Key_metadata,
68 "status" => Field::Key_status,
69 _ => Field::Other,
70 })
71 }
72 }
73
74 deserializer.deserialize_identifier(Visitor)
75 }
76 }
77
78 struct Visitor;
79
80 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
81 type Value = SelfSubjectReview;
82
83 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
84 f.write_str(<Self::Value as crate::Resource>::KIND)
85 }
86
87 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
88 let mut value_metadata: Option<crate::apimachinery::pkg::apis::meta::v1::ObjectMeta> = None;
89 let mut value_status: Option<crate::api::authentication::v1::SelfSubjectReviewStatus> = None;
90
91 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
92 match key {
93 Field::Key_api_version => {
94 let value_api_version: String = crate::serde::de::MapAccess::next_value(&mut map)?;
95 if value_api_version != <Self::Value as crate::Resource>::API_VERSION {
96 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_api_version), &<Self::Value as crate::Resource>::API_VERSION));
97 }
98 },
99 Field::Key_kind => {
100 let value_kind: String = crate::serde::de::MapAccess::next_value(&mut map)?;
101 if value_kind != <Self::Value as crate::Resource>::KIND {
102 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_kind), &<Self::Value as crate::Resource>::KIND));
103 }
104 },
105 Field::Key_metadata => value_metadata = crate::serde::de::MapAccess::next_value(&mut map)?,
106 Field::Key_status => value_status = crate::serde::de::MapAccess::next_value(&mut map)?,
107 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
108 }
109 }
110
111 Ok(SelfSubjectReview {
112 metadata: value_metadata.unwrap_or_default(),
113 status: value_status,
114 })
115 }
116 }
117
118 deserializer.deserialize_struct(
119 <Self as crate::Resource>::KIND,
120 &[
121 "apiVersion",
122 "kind",
123 "metadata",
124 "status",
125 ],
126 Visitor,
127 )
128 }
129}
130
131impl crate::serde::Serialize for SelfSubjectReview {
132 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
133 let mut state = serializer.serialize_struct(
134 <Self as crate::Resource>::KIND,
135 3 +
136 self.status.as_ref().map_or(0, |_| 1),
137 )?;
138 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "apiVersion", <Self as crate::Resource>::API_VERSION)?;
139 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "kind", <Self as crate::Resource>::KIND)?;
140 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "metadata", &self.metadata)?;
141 if let Some(value) = &self.status {
142 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "status", value)?;
143 }
144 crate::serde::ser::SerializeStruct::end(state)
145 }
146}
147
148#[cfg(feature = "schemars")]
149impl crate::schemars::JsonSchema for SelfSubjectReview {
150 fn schema_name() -> String {
151 "io.k8s.api.authentication.v1.SelfSubjectReview".to_owned()
152 }
153
154 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
155 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
156 metadata: Some(Box::new(crate::schemars::schema::Metadata {
157 description: Some("SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.".to_owned()),
158 ..Default::default()
159 })),
160 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
161 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
162 properties: [
163 (
164 "apiVersion".to_owned(),
165 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
166 metadata: Some(Box::new(crate::schemars::schema::Metadata {
167 description: Some("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".to_owned()),
168 ..Default::default()
169 })),
170 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
171 ..Default::default()
172 }),
173 ),
174 (
175 "kind".to_owned(),
176 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
177 metadata: Some(Box::new(crate::schemars::schema::Metadata {
178 description: Some("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".to_owned()),
179 ..Default::default()
180 })),
181 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
182 ..Default::default()
183 }),
184 ),
185 (
186 "metadata".to_owned(),
187 {
188 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::ObjectMeta>().into_object();
189 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
190 description: Some("Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata".to_owned()),
191 ..Default::default()
192 }));
193 crate::schemars::schema::Schema::Object(schema_obj)
194 },
195 ),
196 (
197 "status".to_owned(),
198 {
199 let mut schema_obj = __gen.subschema_for::<crate::api::authentication::v1::SelfSubjectReviewStatus>().into_object();
200 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
201 description: Some("Status is filled in by the server with the user attributes.".to_owned()),
202 ..Default::default()
203 }));
204 crate::schemars::schema::Schema::Object(schema_obj)
205 },
206 ),
207 ].into(),
208 required: [
209 "metadata".to_owned(),
210 ].into(),
211 ..Default::default()
212 })),
213 ..Default::default()
214 })
215 }
216}