cluster_api_rs/api/capi_machine.rs
1// WARNING: generated by kopium - manual changes will be overwritten
2// kopium command: kopium --smart-derive-elision -D Default -D PartialEq -A -d -f -
3// kopium version: 0.21.2
4
5#[allow(unused_imports)]
6mod prelude {
7 pub use k8s_openapi::api::core::v1::ObjectReference;
8 pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
9 pub use kube::CustomResource;
10 pub use schemars::JsonSchema;
11 pub use serde::{Deserialize, Serialize};
12}
13use self::prelude::*;
14
15/// spec is the desired state of Machine.
16#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
17#[kube(
18 group = "cluster.x-k8s.io",
19 version = "v1beta1",
20 kind = "Machine",
21 plural = "machines"
22)]
23#[kube(namespaced)]
24#[kube(status = "MachineStatus")]
25#[kube(derive = "Default")]
26#[kube(derive = "PartialEq")]
27pub struct MachineSpec {
28 /// bootstrap is a reference to a local struct which encapsulates
29 /// fields to configure the Machine’s bootstrapping mechanism.
30 pub bootstrap: MachineBootstrap,
31 /// clusterName is the name of the Cluster this object belongs to.
32 #[serde(rename = "clusterName")]
33 pub cluster_name: String,
34 /// failureDomain is the failure domain the machine will be created in.
35 /// Must match a key in the FailureDomains map stored on the cluster object.
36 #[serde(
37 default,
38 skip_serializing_if = "Option::is_none",
39 rename = "failureDomain"
40 )]
41 pub failure_domain: Option<String>,
42 /// infrastructureRef is a required reference to a custom resource
43 /// offered by an infrastructure provider.
44 #[serde(rename = "infrastructureRef")]
45 pub infrastructure_ref: ObjectReference,
46 /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine
47 /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.
48 /// Defaults to 10 seconds.
49 #[serde(
50 default,
51 skip_serializing_if = "Option::is_none",
52 rename = "nodeDeletionTimeout"
53 )]
54 pub node_deletion_timeout: Option<String>,
55 /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.
56 /// The default value is 0, meaning that the node can be drained without any time limitations.
57 /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`
58 #[serde(
59 default,
60 skip_serializing_if = "Option::is_none",
61 rename = "nodeDrainTimeout"
62 )]
63 pub node_drain_timeout: Option<String>,
64 /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes
65 /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.
66 #[serde(
67 default,
68 skip_serializing_if = "Option::is_none",
69 rename = "nodeVolumeDetachTimeout"
70 )]
71 pub node_volume_detach_timeout: Option<String>,
72 /// providerID is the identification ID of the machine provided by the provider.
73 /// This field must match the provider ID as seen on the node object corresponding to this machine.
74 /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler
75 /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out
76 /// machines at provider which could not get registered as Kubernetes nodes. With cluster-api as a
77 /// generic out-of-tree provider for autoscaler, this field is required by autoscaler to be
78 /// able to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver
79 /// and then a comparison is done to find out unregistered machines and are marked for delete.
80 /// This field will be set by the actuators and consumed by higher level entities like autoscaler that will
81 /// be interfacing with cluster-api as generic provider.
82 #[serde(
83 default,
84 skip_serializing_if = "Option::is_none",
85 rename = "providerID"
86 )]
87 pub provider_id: Option<String>,
88 /// readinessGates specifies additional conditions to include when evaluating Machine Ready condition.
89 ///
90 /// This field can be used e.g. by Cluster API control plane providers to extend the semantic of the
91 /// Ready condition for the Machine they control, like the kubeadm control provider adding ReadinessGates
92 /// for the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.
93 ///
94 /// Another example are external controllers, e.g. responsible to install special software/hardware on the Machines;
95 /// they can include the status of those components with a new condition and add this condition to ReadinessGates.
96 ///
97 /// NOTE: This field is considered only for computing v1beta2 conditions.
98 /// NOTE: In case readinessGates conditions start with the APIServer, ControllerManager, Scheduler prefix, and all those
99 /// readiness gates condition are reporting the same message, when computing the Machine's Ready condition those
100 /// readinessGates will be replaced by a single entry reporting "Control plane components: " + message.
101 /// This helps to improve readability of conditions bubbling up to the Machine's owner resource / to the Cluster).
102 #[serde(
103 default,
104 skip_serializing_if = "Option::is_none",
105 rename = "readinessGates"
106 )]
107 pub readiness_gates: Option<Vec<MachineReadinessGates>>,
108 /// version defines the desired Kubernetes version.
109 /// This field is meant to be optionally used by bootstrap providers.
110 #[serde(default, skip_serializing_if = "Option::is_none")]
111 pub version: Option<String>,
112}
113
114/// bootstrap is a reference to a local struct which encapsulates
115/// fields to configure the Machine’s bootstrapping mechanism.
116#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
117pub struct MachineBootstrap {
118 /// configRef is a reference to a bootstrap provider-specific resource
119 /// that holds configuration details. The reference is optional to
120 /// allow users/operators to specify Bootstrap.DataSecretName without
121 /// the need of a controller.
122 #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")]
123 pub config_ref: Option<ObjectReference>,
124 /// dataSecretName is the name of the secret that stores the bootstrap data script.
125 /// If nil, the Machine should remain in the Pending state.
126 #[serde(
127 default,
128 skip_serializing_if = "Option::is_none",
129 rename = "dataSecretName"
130 )]
131 pub data_secret_name: Option<String>,
132}
133
134/// configRef is a reference to a bootstrap provider-specific resource
135/// that holds configuration details. The reference is optional to
136/// allow users/operators to specify Bootstrap.DataSecretName without
137/// the need of a controller.
138#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
139pub struct MachineBootstrapConfigRef {
140 /// API version of the referent.
141 #[serde(
142 default,
143 skip_serializing_if = "Option::is_none",
144 rename = "apiVersion"
145 )]
146 pub api_version: Option<String>,
147 /// If referring to a piece of an object instead of an entire object, this string
148 /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
149 /// For example, if the object reference is to a container within a pod, this would take on a value like:
150 /// "spec.containers{name}" (where "name" refers to the name of the container that triggered
151 /// the event) or if no container name is specified "spec.containers[2]" (container with
152 /// index 2 in this pod). This syntax is chosen only to have some well-defined way of
153 /// referencing a part of an object.
154 #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")]
155 pub field_path: Option<String>,
156 /// Kind of the referent.
157 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
158 #[serde(default, skip_serializing_if = "Option::is_none")]
159 pub kind: Option<String>,
160 /// Name of the referent.
161 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
162 #[serde(default, skip_serializing_if = "Option::is_none")]
163 pub name: Option<String>,
164 /// Namespace of the referent.
165 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
166 #[serde(default, skip_serializing_if = "Option::is_none")]
167 pub namespace: Option<String>,
168 /// Specific resourceVersion to which this reference is made, if any.
169 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
170 #[serde(
171 default,
172 skip_serializing_if = "Option::is_none",
173 rename = "resourceVersion"
174 )]
175 pub resource_version: Option<String>,
176 /// UID of the referent.
177 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
178 #[serde(default, skip_serializing_if = "Option::is_none")]
179 pub uid: Option<String>,
180}
181
182/// infrastructureRef is a required reference to a custom resource
183/// offered by an infrastructure provider.
184#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
185pub struct MachineInfrastructureRef {
186 /// API version of the referent.
187 #[serde(
188 default,
189 skip_serializing_if = "Option::is_none",
190 rename = "apiVersion"
191 )]
192 pub api_version: Option<String>,
193 /// If referring to a piece of an object instead of an entire object, this string
194 /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
195 /// For example, if the object reference is to a container within a pod, this would take on a value like:
196 /// "spec.containers{name}" (where "name" refers to the name of the container that triggered
197 /// the event) or if no container name is specified "spec.containers[2]" (container with
198 /// index 2 in this pod). This syntax is chosen only to have some well-defined way of
199 /// referencing a part of an object.
200 #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")]
201 pub field_path: Option<String>,
202 /// Kind of the referent.
203 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
204 #[serde(default, skip_serializing_if = "Option::is_none")]
205 pub kind: Option<String>,
206 /// Name of the referent.
207 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
208 #[serde(default, skip_serializing_if = "Option::is_none")]
209 pub name: Option<String>,
210 /// Namespace of the referent.
211 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
212 #[serde(default, skip_serializing_if = "Option::is_none")]
213 pub namespace: Option<String>,
214 /// Specific resourceVersion to which this reference is made, if any.
215 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
216 #[serde(
217 default,
218 skip_serializing_if = "Option::is_none",
219 rename = "resourceVersion"
220 )]
221 pub resource_version: Option<String>,
222 /// UID of the referent.
223 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
224 #[serde(default, skip_serializing_if = "Option::is_none")]
225 pub uid: Option<String>,
226}
227
228/// MachineReadinessGate contains the type of a Machine condition to be used as a readiness gate.
229#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
230pub struct MachineReadinessGates {
231 /// conditionType refers to a condition with matching type in the Machine's condition list.
232 /// If the conditions doesn't exist, it will be treated as unknown.
233 /// Note: Both Cluster API conditions or conditions added by 3rd party controllers can be used as readiness gates.
234 #[serde(rename = "conditionType")]
235 pub condition_type: String,
236 /// polarity of the conditionType specified in this readinessGate.
237 /// Valid values are Positive, Negative and omitted.
238 /// When omitted, the default behaviour will be Positive.
239 /// A positive polarity means that the condition should report a true status under normal conditions.
240 /// A negative polarity means that the condition should report a false status under normal conditions.
241 #[serde(default, skip_serializing_if = "Option::is_none")]
242 pub polarity: Option<MachineReadinessGatesPolarity>,
243}
244
245/// MachineReadinessGate contains the type of a Machine condition to be used as a readiness gate.
246#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
247pub enum MachineReadinessGatesPolarity {
248 Positive,
249 Negative,
250}
251
252/// status is the observed state of Machine.
253#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
254pub struct MachineStatus {
255 /// addresses is a list of addresses assigned to the machine.
256 /// This field is copied from the infrastructure provider reference.
257 #[serde(default, skip_serializing_if = "Option::is_none")]
258 pub addresses: Option<Vec<MachineStatusAddresses>>,
259 /// bootstrapReady is the state of the bootstrap provider.
260 #[serde(
261 default,
262 skip_serializing_if = "Option::is_none",
263 rename = "bootstrapReady"
264 )]
265 pub bootstrap_ready: Option<bool>,
266 /// certificatesExpiryDate is the expiry date of the machine certificates.
267 /// This value is only set for control plane machines.
268 #[serde(
269 default,
270 skip_serializing_if = "Option::is_none",
271 rename = "certificatesExpiryDate"
272 )]
273 pub certificates_expiry_date: Option<String>,
274 /// conditions defines current service state of the Machine.
275 #[serde(default, skip_serializing_if = "Option::is_none")]
276 pub conditions: Option<Vec<Condition>>,
277 /// deletion contains information relating to removal of the Machine.
278 /// Only present when the Machine has a deletionTimestamp and drain or wait for volume detach started.
279 #[serde(default, skip_serializing_if = "Option::is_none")]
280 pub deletion: Option<MachineStatusDeletion>,
281 /// failureMessage will be set in the event that there is a terminal problem
282 /// reconciling the Machine and will contain a more verbose string suitable
283 /// for logging and human consumption.
284 ///
285 /// This field should not be set for transitive errors that a controller
286 /// faces that are expected to be fixed automatically over
287 /// time (like service outages), but instead indicate that something is
288 /// fundamentally wrong with the Machine's spec or the configuration of
289 /// the controller, and that manual intervention is required. Examples
290 /// of terminal errors would be invalid combinations of settings in the
291 /// spec, values that are unsupported by the controller, or the
292 /// responsible controller itself being critically misconfigured.
293 ///
294 /// Any transient errors that occur during the reconciliation of Machines
295 /// can be added as events to the Machine object and/or logged in the
296 /// controller's output.
297 ///
298 /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
299 #[serde(
300 default,
301 skip_serializing_if = "Option::is_none",
302 rename = "failureMessage"
303 )]
304 pub failure_message: Option<String>,
305 /// failureReason will be set in the event that there is a terminal problem
306 /// reconciling the Machine and will contain a succinct value suitable
307 /// for machine interpretation.
308 ///
309 /// This field should not be set for transitive errors that a controller
310 /// faces that are expected to be fixed automatically over
311 /// time (like service outages), but instead indicate that something is
312 /// fundamentally wrong with the Machine's spec or the configuration of
313 /// the controller, and that manual intervention is required. Examples
314 /// of terminal errors would be invalid combinations of settings in the
315 /// spec, values that are unsupported by the controller, or the
316 /// responsible controller itself being critically misconfigured.
317 ///
318 /// Any transient errors that occur during the reconciliation of Machines
319 /// can be added as events to the Machine object and/or logged in the
320 /// controller's output.
321 ///
322 /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details.
323 #[serde(
324 default,
325 skip_serializing_if = "Option::is_none",
326 rename = "failureReason"
327 )]
328 pub failure_reason: Option<String>,
329 /// infrastructureReady is the state of the infrastructure provider.
330 #[serde(
331 default,
332 skip_serializing_if = "Option::is_none",
333 rename = "infrastructureReady"
334 )]
335 pub infrastructure_ready: Option<bool>,
336 /// lastUpdated identifies when the phase of the Machine last transitioned.
337 #[serde(
338 default,
339 skip_serializing_if = "Option::is_none",
340 rename = "lastUpdated"
341 )]
342 pub last_updated: Option<String>,
343 /// nodeInfo is a set of ids/uuids to uniquely identify the node.
344 /// More info: https://kubernetes.io/docs/concepts/nodes/node/#info
345 #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeInfo")]
346 pub node_info: Option<MachineStatusNodeInfo>,
347 /// nodeRef will point to the corresponding Node if it exists.
348 #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRef")]
349 pub node_ref: Option<ObjectReference>,
350 /// observedGeneration is the latest generation observed by the controller.
351 #[serde(
352 default,
353 skip_serializing_if = "Option::is_none",
354 rename = "observedGeneration"
355 )]
356 pub observed_generation: Option<i64>,
357 /// phase represents the current phase of machine actuation.
358 #[serde(default, skip_serializing_if = "Option::is_none")]
359 pub phase: Option<MachineStatusPhase>,
360 /// v1beta2 groups all the fields that will be added or modified in Machine's status with the V1Beta2 version.
361 #[serde(default, skip_serializing_if = "Option::is_none")]
362 pub v1beta2: Option<MachineStatusV1beta2>,
363}
364
365/// MachineAddress contains information for the node's address.
366#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
367pub struct MachineStatusAddresses {
368 /// address is the machine address.
369 pub address: String,
370 /// type is the machine address type, one of Hostname, ExternalIP, InternalIP, ExternalDNS or InternalDNS.
371 #[serde(rename = "type")]
372 pub r#type: MachineStatusAddressesType,
373}
374
375/// MachineAddress contains information for the node's address.
376#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
377pub enum MachineStatusAddressesType {
378 Hostname,
379 #[serde(rename = "ExternalIP")]
380 ExternalIp,
381 #[serde(rename = "InternalIP")]
382 InternalIp,
383 #[serde(rename = "ExternalDNS")]
384 ExternalDns,
385 #[serde(rename = "InternalDNS")]
386 InternalDns,
387}
388
389/// deletion contains information relating to removal of the Machine.
390/// Only present when the Machine has a deletionTimestamp and drain or wait for volume detach started.
391#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
392pub struct MachineStatusDeletion {
393 /// nodeDrainStartTime is the time when the drain of the node started and is used to determine
394 /// if the NodeDrainTimeout is exceeded.
395 /// Only present when the Machine has a deletionTimestamp and draining the node had been started.
396 #[serde(
397 default,
398 skip_serializing_if = "Option::is_none",
399 rename = "nodeDrainStartTime"
400 )]
401 pub node_drain_start_time: Option<String>,
402 /// waitForNodeVolumeDetachStartTime is the time when waiting for volume detachment started
403 /// and is used to determine if the NodeVolumeDetachTimeout is exceeded.
404 /// Detaching volumes from nodes is usually done by CSI implementations and the current state
405 /// is observed from the node's `.Status.VolumesAttached` field.
406 /// Only present when the Machine has a deletionTimestamp and waiting for volume detachments had been started.
407 #[serde(
408 default,
409 skip_serializing_if = "Option::is_none",
410 rename = "waitForNodeVolumeDetachStartTime"
411 )]
412 pub wait_for_node_volume_detach_start_time: Option<String>,
413}
414
415/// nodeInfo is a set of ids/uuids to uniquely identify the node.
416/// More info: https://kubernetes.io/docs/concepts/nodes/node/#info
417#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
418pub struct MachineStatusNodeInfo {
419 /// The Architecture reported by the node
420 pub architecture: String,
421 /// Boot ID reported by the node.
422 #[serde(rename = "bootID")]
423 pub boot_id: String,
424 /// ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
425 #[serde(rename = "containerRuntimeVersion")]
426 pub container_runtime_version: String,
427 /// Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
428 #[serde(rename = "kernelVersion")]
429 pub kernel_version: String,
430 /// Deprecated: KubeProxy Version reported by the node.
431 #[serde(rename = "kubeProxyVersion")]
432 pub kube_proxy_version: String,
433 /// Kubelet Version reported by the node.
434 #[serde(rename = "kubeletVersion")]
435 pub kubelet_version: String,
436 /// MachineID reported by the node. For unique machine identification
437 /// in the cluster this field is preferred. Learn more from man(5)
438 /// machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
439 #[serde(rename = "machineID")]
440 pub machine_id: String,
441 /// The Operating System reported by the node
442 #[serde(rename = "operatingSystem")]
443 pub operating_system: String,
444 /// OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
445 #[serde(rename = "osImage")]
446 pub os_image: String,
447 /// SystemUUID reported by the node. For unique machine identification
448 /// MachineID is preferred. This field is specific to Red Hat hosts
449 /// https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
450 #[serde(rename = "systemUUID")]
451 pub system_uuid: String,
452}
453
454/// nodeRef will point to the corresponding Node if it exists.
455#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
456pub struct MachineStatusNodeRef {
457 /// API version of the referent.
458 #[serde(
459 default,
460 skip_serializing_if = "Option::is_none",
461 rename = "apiVersion"
462 )]
463 pub api_version: Option<String>,
464 /// If referring to a piece of an object instead of an entire object, this string
465 /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
466 /// For example, if the object reference is to a container within a pod, this would take on a value like:
467 /// "spec.containers{name}" (where "name" refers to the name of the container that triggered
468 /// the event) or if no container name is specified "spec.containers[2]" (container with
469 /// index 2 in this pod). This syntax is chosen only to have some well-defined way of
470 /// referencing a part of an object.
471 #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")]
472 pub field_path: Option<String>,
473 /// Kind of the referent.
474 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
475 #[serde(default, skip_serializing_if = "Option::is_none")]
476 pub kind: Option<String>,
477 /// Name of the referent.
478 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
479 #[serde(default, skip_serializing_if = "Option::is_none")]
480 pub name: Option<String>,
481 /// Namespace of the referent.
482 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
483 #[serde(default, skip_serializing_if = "Option::is_none")]
484 pub namespace: Option<String>,
485 /// Specific resourceVersion to which this reference is made, if any.
486 /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
487 #[serde(
488 default,
489 skip_serializing_if = "Option::is_none",
490 rename = "resourceVersion"
491 )]
492 pub resource_version: Option<String>,
493 /// UID of the referent.
494 /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
495 #[serde(default, skip_serializing_if = "Option::is_none")]
496 pub uid: Option<String>,
497}
498
499/// status is the observed state of Machine.
500#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
501pub enum MachineStatusPhase {
502 Pending,
503 Provisioning,
504 Provisioned,
505 Running,
506 Deleting,
507 Deleted,
508 Failed,
509 Unknown,
510}
511
512/// v1beta2 groups all the fields that will be added or modified in Machine's status with the V1Beta2 version.
513#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
514pub struct MachineStatusV1beta2 {
515 /// conditions represents the observations of a Machine's current state.
516 /// Known condition types are Available, Ready, UpToDate, BootstrapConfigReady, InfrastructureReady, NodeReady,
517 /// NodeHealthy, Deleting, Paused.
518 /// If a MachineHealthCheck is targeting this machine, also HealthCheckSucceeded, OwnerRemediated conditions are added.
519 /// Additionally control plane Machines controlled by KubeadmControlPlane will have following additional conditions:
520 /// APIServerPodHealthy, ControllerManagerPodHealthy, SchedulerPodHealthy, EtcdPodHealthy, EtcdMemberHealthy.
521 #[serde(default, skip_serializing_if = "Option::is_none")]
522 pub conditions: Option<Vec<Condition>>,
523}