1// Generated from definition io.k8s.api.coordination.v1.LeaseSpec
23/// LeaseSpec is a specification of a Lease.
4#[derive(Clone, Debug, Default, PartialEq)]
5pub struct LeaseSpec {
6/// acquireTime is a time when the current lease was acquired.
7pub acquire_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime>,
89/// 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.
10pub holder_identity: Option<std::string::String>,
1112/// 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.
13pub lease_duration_seconds: Option<i32>,
1415/// leaseTransitions is the number of transitions of a lease between holders.
16pub lease_transitions: Option<i32>,
1718/// 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.
19pub preferred_holder: Option<std::string::String>,
2021/// renewTime is a time when the current holder of a lease has last updated the lease.
22pub renew_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime>,
2324/// 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.
25pub strategy: Option<std::string::String>,
26}
2728impl crate::DeepMerge for LeaseSpec {
29fn merge_from(&mut self, other: Self) {
30crate::DeepMerge::merge_from(&mut self.acquire_time, other.acquire_time);
31crate::DeepMerge::merge_from(&mut self.holder_identity, other.holder_identity);
32crate::DeepMerge::merge_from(&mut self.lease_duration_seconds, other.lease_duration_seconds);
33crate::DeepMerge::merge_from(&mut self.lease_transitions, other.lease_transitions);
34crate::DeepMerge::merge_from(&mut self.preferred_holder, other.preferred_holder);
35crate::DeepMerge::merge_from(&mut self.renew_time, other.renew_time);
36crate::DeepMerge::merge_from(&mut self.strategy, other.strategy);
37 }
38}
3940impl<'de> crate::serde::Deserialize<'de> for LeaseSpec {
41fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
42#[allow(non_camel_case_types)]
43enum 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 }
5354impl<'de> crate::serde::Deserialize<'de> for Field {
55fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: crate::serde::Deserializer<'de> {
56struct Visitor;
5758impl crate::serde::de::Visitor<'_> for Visitor {
59type Value = Field;
6061fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
62 f.write_str("field identifier")
63 }
6465fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where E: crate::serde::de::Error {
66Ok(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 }
7879 deserializer.deserialize_identifier(Visitor)
80 }
81 }
8283struct Visitor;
8485impl<'de> crate::serde::de::Visitor<'de> for Visitor {
86type Value = LeaseSpec;
8788fn expecting(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
89 f.write_str("LeaseSpec")
90 }
9192fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> where A: crate::serde::de::MapAccess<'de> {
93let mut value_acquire_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime> = None;
94let mut value_holder_identity: Option<std::string::String> = None;
95let mut value_lease_duration_seconds: Option<i32> = None;
96let mut value_lease_transitions: Option<i32> = None;
97let mut value_preferred_holder: Option<std::string::String> = None;
98let mut value_renew_time: Option<crate::apimachinery::pkg::apis::meta::v1::MicroTime> = None;
99let mut value_strategy: Option<std::string::String> = None;
100101while let Some(key) = crate::serde::de::MapAccess::next_key::<Field>(&mut map)? {
102match 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 }
113114Ok(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 }
125126 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}
141142impl crate::serde::Serialize for LeaseSpec {
143fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: crate::serde::Serializer {
144let mut state = serializer.serialize_struct(
145"LeaseSpec",
146self.acquire_time.as_ref().map_or(0, |_| 1) +
147self.holder_identity.as_ref().map_or(0, |_| 1) +
148self.lease_duration_seconds.as_ref().map_or(0, |_| 1) +
149self.lease_transitions.as_ref().map_or(0, |_| 1) +
150self.preferred_holder.as_ref().map_or(0, |_| 1) +
151self.renew_time.as_ref().map_or(0, |_| 1) +
152self.strategy.as_ref().map_or(0, |_| 1),
153 )?;
154if let Some(value) = &self.acquire_time {
155crate::serde::ser::SerializeStruct::serialize_field(&mut state, "acquireTime", value)?;
156 }
157if let Some(value) = &self.holder_identity {
158crate::serde::ser::SerializeStruct::serialize_field(&mut state, "holderIdentity", value)?;
159 }
160if let Some(value) = &self.lease_duration_seconds {
161crate::serde::ser::SerializeStruct::serialize_field(&mut state, "leaseDurationSeconds", value)?;
162 }
163if let Some(value) = &self.lease_transitions {
164crate::serde::ser::SerializeStruct::serialize_field(&mut state, "leaseTransitions", value)?;
165 }
166if let Some(value) = &self.preferred_holder {
167crate::serde::ser::SerializeStruct::serialize_field(&mut state, "preferredHolder", value)?;
168 }
169if let Some(value) = &self.renew_time {
170crate::serde::ser::SerializeStruct::serialize_field(&mut state, "renewTime", value)?;
171 }
172if let Some(value) = &self.strategy {
173crate::serde::ser::SerializeStruct::serialize_field(&mut state, "strategy", value)?;
174 }
175crate::serde::ser::SerializeStruct::end(state)
176 }
177}
178179#[cfg(feature = "schemars")]
180impl crate::schemars::JsonSchema for LeaseSpec {
181fn schema_name() -> std::string::String {
182"io.k8s.api.coordination.v1.LeaseSpec".into()
183 }
184185fn json_schema(__gen: &mut crate::schemars::gen::SchemaGenerator) -> crate::schemars::schema::Schema {
186crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
187 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
188 description: Some("LeaseSpec is a specification of a Lease.".into()),
189 ..Default::default()
190 })),
191 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Object))),
192 object: Some(std::boxed::Box::new(crate::schemars::schema::ObjectValidation {
193 properties: [
194 (
195"acquireTime".into(),
196 {
197let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::MicroTime>().into_object();
198 schema_obj.metadata = Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
199 description: Some("acquireTime is a time when the current lease was acquired.".into()),
200 ..Default::default()
201 }));
202crate::schemars::schema::Schema::Object(schema_obj)
203 },
204 ),
205 (
206"holderIdentity".into(),
207crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
208 metadata: Some(std::boxed::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.".into()),
210 ..Default::default()
211 })),
212 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
213 ..Default::default()
214 }),
215 ),
216 (
217"leaseDurationSeconds".into(),
218crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
219 metadata: Some(std::boxed::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.".into()),
221 ..Default::default()
222 })),
223 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Integer))),
224 format: Some("int32".into()),
225 ..Default::default()
226 }),
227 ),
228 (
229"leaseTransitions".into(),
230crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
231 metadata: Some(std::boxed::Box::new(crate::schemars::schema::Metadata {
232 description: Some("leaseTransitions is the number of transitions of a lease between holders.".into()),
233 ..Default::default()
234 })),
235 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::Integer))),
236 format: Some("int32".into()),
237 ..Default::default()
238 }),
239 ),
240 (
241"preferredHolder".into(),
242crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
243 metadata: Some(std::boxed::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.".into()),
245 ..Default::default()
246 })),
247 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
248 ..Default::default()
249 }),
250 ),
251 (
252"renewTime".into(),
253 {
254let mut schema_obj = __gen.subschema_for::<crate::apimachinery::pkg::apis::meta::v1::MicroTime>().into_object();
255 schema_obj.metadata = Some(std::boxed::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.".into()),
257 ..Default::default()
258 }));
259crate::schemars::schema::Schema::Object(schema_obj)
260 },
261 ),
262 (
263"strategy".into(),
264crate::schemars::schema::Schema::Object(crate::schemars::schema::SchemaObject {
265 metadata: Some(std::boxed::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.".into()),
267 ..Default::default()
268 })),
269 instance_type: Some(crate::schemars::schema::SingleOrVec::Single(std::boxed::Box::new(crate::schemars::schema::InstanceType::String))),
270 ..Default::default()
271 }),
272 ),
273 ].into(),
274 ..Default::default()
275 })),
276 ..Default::default()
277 })
278 }
279}