k8s_openapi/v1_32/api/apps/v1/
controller_revision.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct ControllerRevision {
6 pub data: Option<crate::apimachinery::pkg::runtime::RawExtension>,
8
9 pub metadata: crate::apimachinery::pkg::apis::meta::v1::ObjectMeta,
11
12 pub revision: i64,
14}
15
16impl crate::Resource for ControllerRevision {
17 const API_VERSION: &'static str = "apps/v1";
18 const GROUP: &'static str = "apps";
19 const KIND: &'static str = "ControllerRevision";
20 const VERSION: &'static str = "v1";
21 const URL_PATH_SEGMENT: &'static str = "controllerrevisions";
22 type Scope = crate::NamespaceResourceScope;
23}
24
25impl crate::ListableResource for ControllerRevision {
26 const LIST_KIND: &'static str = "ControllerRevisionList";
27}
28
29impl crate::Metadata for ControllerRevision {
30 type Ty = crate::apimachinery::pkg::apis::meta::v1::ObjectMeta;
31
32 fn metadata(&self) -> &<Self as crate::Metadata>::Ty {
33 &self.metadata
34 }
35
36 fn metadata_mut(&mut self) -> &mut<Self as crate::Metadata>::Ty {
37 &mut self.metadata
38 }
39}
40
41impl crate::DeepMerge for ControllerRevision {
42 fn merge_from(&mut self, other: Self) {
43 crate::DeepMerge::merge_from(&mut self.data, other.data);
44 crate::DeepMerge::merge_from(&mut self.metadata, other.metadata);
45 crate::DeepMerge::merge_from(&mut self.revision, other.revision);
46 }
47}
48
49impl<'de> crate::serde::Deserialize<'de> for ControllerRevision {
50 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
51 #[allow(non_camel_case_types)]
52 enum Field {
53 Key_api_version,
54 Key_kind,
55 Key_data,
56 Key_metadata,
57 Key_revision,
58 Other,
59 }
60
61 impl<'de> crate::serde::Deserialize<'de> for Field {
62 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
63 struct Visitor;
64
65 impl crate::serde::de::Visitor<'_> for Visitor {
66 type Value = Field;
67
68 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
69 f.write_str("field identifier")
70 }
71
72 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
73 Ok(match v {
74 "apiVersion" => Field::Key_api_version,
75 "kind" => Field::Key_kind,
76 "data" => Field::Key_data,
77 "metadata" => Field::Key_metadata,
78 "revision" => Field::Key_revision,
79 _ => Field::Other,
80 })
81 }
82 }
83
84 deserializer.deserialize_identifier(Visitor)
85 }
86 }
87
88 struct Visitor;
89
90 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
91 type Value = ControllerRevision;
92
93 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
94 f.write_str(<Self::Value as crate::Resource>::KIND)
95 }
96
97 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
98 let mut value_data: Option<crate::apimachinery::pkg::runtime::RawExtension> = None;
99 let mut value_metadata: Option<crate::apimachinery::pkg::apis::meta::v1::ObjectMeta> = None;
100 let mut value_revision: Option<i64> = None;
101
102 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
103 match key {
104 Field::Key_api_version => {
105 let value_api_version: String = crate::serde::de::MapAccess::next_value(&mut map)?;
106 if value_api_version != <Self::Value as crate::Resource>::API_VERSION {
107 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_api_version), &<Self::Value as crate::Resource>::API_VERSION));
108 }
109 },
110 Field::Key_kind => {
111 let value_kind: String = crate::serde::de::MapAccess::next_value(&mut map)?;
112 if value_kind != <Self::Value as crate::Resource>::KIND {
113 return Err(crate::serde::de::Error::invalid_value(crate::serde::de::Unexpected::Str(&value_kind), &<Self::Value as crate::Resource>::KIND));
114 }
115 },
116 Field::Key_data => value_data = crate::serde::de::MapAccess::next_value(&mut map)?,
117 Field::Key_metadata => value_metadata = crate::serde::de::MapAccess::next_value(&mut map)?,
118 Field::Key_revision => value_revision = crate::serde::de::MapAccess::next_value(&mut map)?,
119 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
120 }
121 }
122
123 Ok(ControllerRevision {
124 data: value_data,
125 metadata: value_metadata.unwrap_or_default(),
126 revision: value_revision.unwrap_or_default(),
127 })
128 }
129 }
130
131 deserializer.deserialize_struct(
132 <Self as crate::Resource>::KIND,
133 &[
134 "apiVersion",
135 "kind",
136 "data",
137 "metadata",
138 "revision",
139 ],
140 Visitor,
141 )
142 }
143}
144
145impl crate::serde::Serialize for ControllerRevision {
146 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
147 let mut state = serializer.serialize_struct(
148 <Self as crate::Resource>::KIND,
149 4 +
150 self.data.as_ref().map_or(0, |_| 1),
151 )?;
152 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "apiVersion", <Self as crate::Resource>::API_VERSION)?;
153 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "kind", <Self as crate::Resource>::KIND)?;
154 if let Some(value) = &self.data {
155 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "data", value)?;
156 }
157 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "metadata", &self.metadata)?;
158 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "revision", &self.revision)?;
159 crate::serde::ser::SerializeStruct::end(state)
160 }
161}
162
163#[cfg(feature = "schemars")]
164impl crate::schemars::JsonSchema for ControllerRevision {
165 fn schema_name() -> String {
166 "io.k8s.api.apps.v1.ControllerRevision".to_owned()
167 }
168
169 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
170 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
171 metadata: Some(Box::new(crate::schemars::schema::Metadata {
172 description: Some("ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.".to_owned()),
173 ..Default::default()
174 })),
175 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
176 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
177 properties: [
178 (
179 "apiVersion".to_owned(),
180 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
181 metadata: Some(Box::new(crate::schemars::schema::Metadata {
182 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()),
183 ..Default::default()
184 })),
185 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
186 ..Default::default()
187 }),
188 ),
189 (
190 "data".to_owned(),
191 {
192 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::runtime::RawExtension>().into_object();
193 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
194 description: Some("Data is the serialized representation of the state.".to_owned()),
195 ..Default::default()
196 }));
197 crate::schemars::schema::Schema::Object(schema_obj)
198 },
199 ),
200 (
201 "kind".to_owned(),
202 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
203 metadata: Some(Box::new(crate::schemars::schema::Metadata {
204 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()),
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 "metadata".to_owned(),
213 {
214 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::ObjectMeta>().into_object();
215 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
216 description: Some("Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata".to_owned()),
217 ..Default::default()
218 }));
219 crate::schemars::schema::Schema::Object(schema_obj)
220 },
221 ),
222 (
223 "revision".to_owned(),
224 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
225 metadata: Some(Box::new(crate::schemars::schema::Metadata {
226 description: Some("Revision indicates the revision of the state represented by Data.".to_owned()),
227 ..Default::default()
228 })),
229 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
230 format: Some("int64".to_owned()),
231 ..Default::default()
232 }),
233 ),
234 ].into(),
235 required: [
236 "metadata".to_owned(),
237 "revision".to_owned(),
238 ].into(),
239 ..Default::default()
240 })),
241 ..Default::default()
242 })
243 }
244}