1// Generated from definition io.k8s.api.apps.v1.ControllerRevision
23/// 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.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct ControllerRevision {
6/// Data is the serialized representation of the state.
7pub data: Option<crate::apimachinery::pkg::runtime::RawExtension>,
89/// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
10pub metadata: crate::apimachinery::pkg::apis::meta::v1::ObjectMeta,
1112/// Revision indicates the revision of the state represented by Data.
13pub revision: i64,
14}
1516impl crate::Resource for ControllerRevision {
17const API_VERSION: &'static str = "apps/v1";
18const GROUP: &'static str = "apps";
19const KIND: &'static str = "ControllerRevision";
20const VERSION: &'static str = "v1";
21const URL_PATH_SEGMENT: &'static str = "controllerrevisions";
22type Scope = crate::NamespaceResourceScope;
23}
2425impl crate::ListableResource for ControllerRevision {
26const LIST_KIND: &'static str = "ControllerRevisionList";
27}
2829impl crate::Metadata for ControllerRevision {
30type Ty = crate::apimachinery::pkg::apis::meta::v1::ObjectMeta;
3132fn metadata(&self) -> &<Self as crate::Metadata>::Ty {
33&self.metadata
34 }
3536fn metadata_mut(&mut self) -> &mut<Self as crate::Metadata>::Ty {
37&mut self.metadata
38 }
39}
4041impl crate::DeepMerge for ControllerRevision {
42fn merge_from(&mut self, other: Self) {
43crate::DeepMerge::merge_from(&mut self.data, other.data);
44crate::DeepMerge::merge_from(&mut self.metadata, other.metadata);
45crate::DeepMerge::merge_from(&mut self.revision, other.revision);
46 }
47}
4849impl<'de> crate::serde::Deserialize<'de> for ControllerRevision {
50fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
51#[allow(non_camel_case_types)]
52enum Field {
53 Key_api_version,
54 Key_kind,
55 Key_data,
56 Key_metadata,
57 Key_revision,
58 Other,
59 }
6061impl<'de> crate::serde::Deserialize<'de> for Field {
62fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
63struct Visitor;
6465impl<'de> crate::serde::de::Visitor<'de> for Visitor {
66type Value = Field;
6768fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
69 f.write_str("field identifier")
70 }
7172fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
73Ok(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 }
8384 deserializer.deserialize_identifier(Visitor)
85 }
86 }
8788struct Visitor;
8990impl<'de> crate::serde::de::Visitor<'de> for Visitor {
91type Value = ControllerRevision;
9293fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
94 f.write_str(<Self::Value as crate::Resource>::KIND)
95 }
9697fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
98let mut value_data: Option<crate::apimachinery::pkg::runtime::RawExtension> = None;
99let mut value_metadata: Option<crate::apimachinery::pkg::apis::meta::v1::ObjectMeta> = None;
100let mut value_revision: Option<i64> = None;
101102while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
103match key {
104 Field::Key_api_version => {
105let value_api_version: String = crate::serde::de::MapAccess::next_value(&mut map)?;
106if value_api_version != <Self::Value as crate::Resource>::API_VERSION {
107return 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 => {
111let value_kind: String = crate::serde::de::MapAccess::next_value(&mut map)?;
112if value_kind != <Self::Value as crate::Resource>::KIND {
113return 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 }
122123Ok(ControllerRevision {
124 data: value_data,
125 metadata: value_metadata.unwrap_or_default(),
126 revision: value_revision.unwrap_or_default(),
127 })
128 }
129 }
130131 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}
144145impl crate::serde::Serialize for ControllerRevision {
146fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
147let mut state = serializer.serialize_struct(
148 <Self as crate::Resource>::KIND,
1494 +
150self.data.as_ref().map_or(0, |_| 1),
151 )?;
152crate::serde::ser::SerializeStruct::serialize_field(&mut state, "apiVersion", <Self as crate::Resource>::API_VERSION)?;
153crate::serde::ser::SerializeStruct::serialize_field(&mut state, "kind", <Self as crate::Resource>::KIND)?;
154if let Some(value) = &self.data {
155crate::serde::ser::SerializeStruct::serialize_field(&mut state, "data", value)?;
156 }
157crate::serde::ser::SerializeStruct::serialize_field(&mut state, "metadata", &self.metadata)?;
158crate::serde::ser::SerializeStruct::serialize_field(&mut state, "revision", &self.revision)?;
159crate::serde::ser::SerializeStruct::end(state)
160 }
161}
162163#[cfg(feature = "schemars")]
164impl crate::schemars::JsonSchema for ControllerRevision {
165fn schema_name() -> String {
166"io.k8s.api.apps.v1.ControllerRevision".to_owned()
167 }
168169fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
170crate::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(),
180crate::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 {
192let 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 }));
197crate::schemars::schema::Schema::Object(schema_obj)
198 },
199 ),
200 (
201"kind".to_owned(),
202crate::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 {
214let 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 }));
219crate::schemars::schema::Schema::Object(schema_obj)
220 },
221 ),
222 (
223"revision".to_owned(),
224crate::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}