k8s_openapi/v1_32/api/coordination/v1/
lease_spec.rs1#[derive(Clone, Debug, Default, PartialEq)]
5pub struct LeaseSpec {
6 pub acquire_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime>,
8
9 pub holder_identity: Option<String>,
11
12 pub lease_duration_seconds: Option<i32>,
14
15 pub lease_transitions: Option<i32>,
17
18 pub preferred_holder: Option<String>,
20
21 pub renew_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime>,
23
24 pub strategy: Option<String>,
26}
27
28impl crate::DeepMerge for LeaseSpec {
29 fn merge_from(&mut self, other: Self) {
30 crate::DeepMerge::merge_from(&mut self.acquire_time, other.acquire_time);
31 crate::DeepMerge::merge_from(&mut self.holder_identity, other.holder_identity);
32 crate::DeepMerge::merge_from(&mut self.lease_duration_seconds, other.lease_duration_seconds);
33 crate::DeepMerge::merge_from(&mut self.lease_transitions, other.lease_transitions);
34 crate::DeepMerge::merge_from(&mut self.preferred_holder, other.preferred_holder);
35 crate::DeepMerge::merge_from(&mut self.renew_time, other.renew_time);
36 crate::DeepMerge::merge_from(&mut self.strategy, other.strategy);
37 }
38}
39
40impl<'de> crate::serde::Deserialize<'de> for LeaseSpec {
41 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
42 #[allow(non_camel_case_types)]
43 enum Field {
44 Key_acquire_time,
45 Key_holder_identity,
46 Key_lease_duration_seconds,
47 Key_lease_transitions,
48 Key_preferred_holder,
49 Key_renew_time,
50 Key_strategy,
51 Other,
52 }
53
54 impl<'de> crate::serde::Deserialize<'de> for Field {
55 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
56 struct Visitor;
57
58 impl crate::serde::de::Visitor<'_> for Visitor {
59 type Value = Field;
60
61 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
62 f.write_str("field identifier")
63 }
64
65 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
66 Ok(match v {
67 "acquireTime" => Field::Key_acquire_time,
68 "holderIdentity" => Field::Key_holder_identity,
69 "leaseDurationSeconds" => Field::Key_lease_duration_seconds,
70 "leaseTransitions" => Field::Key_lease_transitions,
71 "preferredHolder" => Field::Key_preferred_holder,
72 "renewTime" => Field::Key_renew_time,
73 "strategy" => Field::Key_strategy,
74 _ => Field::Other,
75 })
76 }
77 }
78
79 deserializer.deserialize_identifier(Visitor)
80 }
81 }
82
83 struct Visitor;
84
85 impl<'de> crate::serde::de::Visitor<'de> for Visitor {
86 type Value = LeaseSpec;
87
88 fn expecting(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
89 f.write_str("LeaseSpec")
90 }
91
92 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
93 let mut value_acquire_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime> = None;
94 let mut value_holder_identity: Option<String> = None;
95 let mut value_lease_duration_seconds: Option<i32> = None;
96 let mut value_lease_transitions: Option<i32> = None;
97 let mut value_preferred_holder: Option<String> = None;
98 let mut value_renew_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime> = None;
99 let mut value_strategy: Option<String> = None;
100
101 while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
102 match key {
103 Field::Key_acquire_time => value_acquire_time = crate::serde::de::MapAccess::next_value(&mut map)?,
104 Field::Key_holder_identity => value_holder_identity = crate::serde::de::MapAccess::next_value(&mut map)?,
105 Field::Key_lease_duration_seconds => value_lease_duration_seconds = crate::serde::de::MapAccess::next_value(&mut map)?,
106 Field::Key_lease_transitions => value_lease_transitions = crate::serde::de::MapAccess::next_value(&mut map)?,
107 Field::Key_preferred_holder => value_preferred_holder = crate::serde::de::MapAccess::next_value(&mut map)?,
108 Field::Key_renew_time => value_renew_time = crate::serde::de::MapAccess::next_value(&mut map)?,
109 Field::Key_strategy => value_strategy = crate::serde::de::MapAccess::next_value(&mut map)?,
110 Field::Other => { let _: crate::serde::de::IgnoredAny = crate::serde::de::MapAccess::next_value(&mut map)?; },
111 }
112 }
113
114 Ok(LeaseSpec {
115 acquire_time: value_acquire_time,
116 holder_identity: value_holder_identity,
117 lease_duration_seconds: value_lease_duration_seconds,
118 lease_transitions: value_lease_transitions,
119 preferred_holder: value_preferred_holder,
120 renew_time: value_renew_time,
121 strategy: value_strategy,
122 })
123 }
124 }
125
126 deserializer.deserialize_struct(
127 "LeaseSpec",
128 &[
129 "acquireTime",
130 "holderIdentity",
131 "leaseDurationSeconds",
132 "leaseTransitions",
133 "preferredHolder",
134 "renewTime",
135 "strategy",
136 ],
137 Visitor,
138 )
139 }
140}
141
142impl crate::serde::Serialize for LeaseSpec {
143 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
144 let mut state = serializer.serialize_struct(
145 "LeaseSpec",
146 self.acquire_time.as_ref().map_or(0, |_| 1) +
147 self.holder_identity.as_ref().map_or(0, |_| 1) +
148 self.lease_duration_seconds.as_ref().map_or(0, |_| 1) +
149 self.lease_transitions.as_ref().map_or(0, |_| 1) +
150 self.preferred_holder.as_ref().map_or(0, |_| 1) +
151 self.renew_time.as_ref().map_or(0, |_| 1) +
152 self.strategy.as_ref().map_or(0, |_| 1),
153 )?;
154 if let Some(value) = &self.acquire_time {
155 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "acquireTime", value)?;
156 }
157 if let Some(value) = &self.holder_identity {
158 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "holderIdentity", value)?;
159 }
160 if let Some(value) = &self.lease_duration_seconds {
161 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "leaseDurationSeconds", value)?;
162 }
163 if let Some(value) = &self.lease_transitions {
164 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "leaseTransitions", value)?;
165 }
166 if let Some(value) = &self.preferred_holder {
167 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "preferredHolder", value)?;
168 }
169 if let Some(value) = &self.renew_time {
170 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "renewTime", value)?;
171 }
172 if let Some(value) = &self.strategy {
173 crate::serde::ser::SerializeStruct::serialize_field(&mut state, "strategy", value)?;
174 }
175 crate::serde::ser::SerializeStruct::end(state)
176 }
177}
178
179#[cfg(feature = "schemars")]
180impl crate::schemars::JsonSchema for LeaseSpec {
181 fn schema_name() -> String {
182 "io.k8s.api.coordination.v1.LeaseSpec".to_owned()
183 }
184
185 fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
186 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
187 metadata: Some(Box::new(crate::schemars::schema::Metadata {
188 description: Some("LeaseSpec is a specification of a Lease.".to_owned()),
189 ..Default::default()
190 })),
191 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Object))),
192 object: Some(Box::new(crate::schemars::schema::ObjectValidation {
193 properties: [
194 (
195 "acquireTime".to_owned(),
196 {
197 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::MicroTime>().into_object();
198 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
199 description: Some("acquireTime is a time when the current lease was acquired.".to_owned()),
200 ..Default::default()
201 }));
202 crate::schemars::schema::Schema::Object(schema_obj)
203 },
204 ),
205 (
206 "holderIdentity".to_owned(),
207 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
208 metadata: Some(Box::new(crate::schemars::schema::Metadata {
209 description: Some("holderIdentity contains the identity of the holder of a current lease. If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field.".to_owned()),
210 ..Default::default()
211 })),
212 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
213 ..Default::default()
214 }),
215 ),
216 (
217 "leaseDurationSeconds".to_owned(),
218 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
219 metadata: Some(Box::new(crate::schemars::schema::Metadata {
220 description: Some("leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measured against the time of last observed renewTime.".to_owned()),
221 ..Default::default()
222 })),
223 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
224 format: Some("int32".to_owned()),
225 ..Default::default()
226 }),
227 ),
228 (
229 "leaseTransitions".to_owned(),
230 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
231 metadata: Some(Box::new(crate::schemars::schema::Metadata {
232 description: Some("leaseTransitions is the number of transitions of a lease between holders.".to_owned()),
233 ..Default::default()
234 })),
235 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::Integer))),
236 format: Some("int32".to_owned()),
237 ..Default::default()
238 }),
239 ),
240 (
241 "preferredHolder".to_owned(),
242 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
243 metadata: Some(Box::new(crate::schemars::schema::Metadata {
244 description: Some("PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. This field can only be set if Strategy is also set.".to_owned()),
245 ..Default::default()
246 })),
247 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
248 ..Default::default()
249 }),
250 ),
251 (
252 "renewTime".to_owned(),
253 {
254 let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::MicroTime>().into_object();
255 schema_obj.metadata = Some(Box::new(crate::schemars::schema::Metadata {
256 description: Some("renewTime is a time when the current holder of a lease has last updated the lease.".to_owned()),
257 ..Default::default()
258 }));
259 crate::schemars::schema::Schema::Object(schema_obj)
260 },
261 ),
262 (
263 "strategy".to_owned(),
264 crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
265 metadata: Some(Box::new(crate::schemars::schema::Metadata {
266 description: Some("Strategy indicates the strategy for picking the leader for coordinated leader election. If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.".to_owned()),
267 ..Default::default()
268 })),
269 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(Box::new(crate::schemars::schema::InstanceType::String))),
270 ..Default::default()
271 }),
272 ),
273 ].into(),
274 ..Default::default()
275 })),
276 ..Default::default()
277 })
278 }
279}