#[allow(unused_imports)]
mod prelude {
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use kube::CustomResource;
pub use schemars::JsonSchema;
pub use serde::{Deserialize, Serialize};
pub use std::collections::BTreeMap;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
#[kube(
group = "cluster.x-k8s.io",
version = "v1beta2",
kind = "MachineDeployment",
plural = "machinedeployments"
)]
#[kube(namespaced)]
#[kube(status = "MachineDeploymentStatus")]
#[kube(derive = "Default")]
#[kube(derive = "PartialEq")]
pub struct MachineDeploymentSpec {
#[serde(rename = "clusterName")]
pub cluster_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deletion: Option<MachineDeploymentDeletion>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "machineNaming"
)]
pub machine_naming: Option<MachineDeploymentMachineNaming>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub paused: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remediation: Option<MachineDeploymentRemediation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replicas: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rollout: Option<MachineDeploymentRollout>,
pub selector: MachineDeploymentSelector,
pub template: MachineDeploymentTemplate,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentDeletion {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<MachineDeploymentDeletionOrder>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentDeletionOrder {
Random,
Newest,
Oldest,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentMachineNaming {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub template: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentRemediation {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "maxInFlight"
)]
pub max_in_flight: Option<IntOrString>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentRollout {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub strategy: Option<MachineDeploymentRolloutStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MachineDeploymentRolloutStrategy {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "rollingUpdate"
)]
pub rolling_update: Option<MachineDeploymentRolloutStrategyRollingUpdate>,
#[serde(rename = "type")]
pub r#type: MachineDeploymentRolloutStrategyType,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentRolloutStrategyRollingUpdate {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxSurge")]
pub max_surge: Option<IntOrString>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "maxUnavailable"
)]
pub max_unavailable: Option<IntOrString>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentRolloutStrategyType {
RollingUpdate,
OnDelete,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentSelector {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "matchExpressions"
)]
pub match_expressions: Option<Vec<MachineDeploymentSelectorMatchExpressions>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "matchLabels"
)]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentSelectorMatchExpressions {
pub key: String,
pub operator: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplate {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<MachineDeploymentTemplateMetadata>,
pub spec: MachineDeploymentTemplateSpec,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpec {
pub bootstrap: MachineDeploymentTemplateSpecBootstrap,
#[serde(rename = "clusterName")]
pub cluster_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deletion: Option<MachineDeploymentTemplateSpecDeletion>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "failureDomain"
)]
pub failure_domain: Option<String>,
#[serde(rename = "infrastructureRef")]
pub infrastructure_ref: MachineDeploymentTemplateSpecInfrastructureRef,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "minReadySeconds"
)]
pub min_ready_seconds: Option<i32>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "providerID"
)]
pub provider_id: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "readinessGates"
)]
pub readiness_gates: Option<Vec<MachineDeploymentTemplateSpecReadinessGates>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taints: Option<Vec<MachineDeploymentTemplateSpecTaints>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecBootstrap {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")]
pub config_ref: Option<MachineDeploymentTemplateSpecBootstrapConfigRef>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "dataSecretName"
)]
pub data_secret_name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecBootstrapConfigRef {
#[serde(rename = "apiGroup")]
pub api_group: String,
pub kind: String,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecDeletion {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "nodeDeletionTimeoutSeconds"
)]
pub node_deletion_timeout_seconds: Option<i32>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "nodeDrainTimeoutSeconds"
)]
pub node_drain_timeout_seconds: Option<i32>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "nodeVolumeDetachTimeoutSeconds"
)]
pub node_volume_detach_timeout_seconds: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecInfrastructureRef {
#[serde(rename = "apiGroup")]
pub api_group: String,
pub kind: String,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecReadinessGates {
#[serde(rename = "conditionType")]
pub condition_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub polarity: Option<MachineDeploymentTemplateSpecReadinessGatesPolarity>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentTemplateSpecReadinessGatesPolarity {
Positive,
Negative,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct MachineDeploymentTemplateSpecTaints {
pub effect: MachineDeploymentTemplateSpecTaintsEffect,
pub key: String,
pub propagation: MachineDeploymentTemplateSpecTaintsPropagation,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentTemplateSpecTaintsEffect {
NoSchedule,
PreferNoSchedule,
NoExecute,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentTemplateSpecTaintsPropagation {
Always,
OnInitialization,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentStatus {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "availableReplicas"
)]
pub available_replicas: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deprecated: Option<MachineDeploymentStatusDeprecated>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "observedGeneration"
)]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phase: Option<MachineDeploymentStatusPhase>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "readyReplicas"
)]
pub ready_replicas: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replicas: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "upToDateReplicas"
)]
pub up_to_date_replicas: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentStatusDeprecated {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub v1beta1: Option<MachineDeploymentStatusDeprecatedV1beta1>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq, JsonSchema)]
pub struct MachineDeploymentStatusDeprecatedV1beta1 {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "availableReplicas"
)]
pub available_replicas: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "readyReplicas"
)]
pub ready_replicas: Option<i32>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "unavailableReplicas"
)]
pub unavailable_replicas: Option<i32>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "updatedReplicas"
)]
pub updated_replicas: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum MachineDeploymentStatusPhase {
ScalingUp,
ScalingDown,
Running,
Failed,
Unknown,
}