#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "keda.sh", version = "v1alpha1", kind = "ScaledObject", plural = "scaledobjects")]
#[kube(namespaced)]
#[kube(status = "ScaledObjectStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct ScaledObjectSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub advanced: Option<ScaledObjectAdvanced>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cooldownPeriod")]
pub cooldown_period: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fallback: Option<ScaledObjectFallback>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleReplicaCount")]
pub idle_replica_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "initialCooldownPeriod")]
pub initial_cooldown_period: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxReplicaCount")]
pub max_replica_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minReplicaCount")]
pub min_replica_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pollingInterval")]
pub polling_interval: Option<i32>,
#[serde(rename = "scaleTargetRef")]
pub scale_target_ref: ScaledObjectScaleTargetRef,
pub triggers: Vec<ScaledObjectTriggers>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvanced {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "horizontalPodAutoscalerConfig")]
pub horizontal_pod_autoscaler_config: Option<ScaledObjectAdvancedHorizontalPodAutoscalerConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "restoreToOriginalReplicaCount")]
pub restore_to_original_replica_count: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "scalingModifiers")]
pub scaling_modifiers: Option<ScaledObjectAdvancedScalingModifiers>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub behavior: Option<ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehavior>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehavior {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleDown")]
pub scale_down: Option<ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleDown>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleUp")]
pub scale_up: Option<ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleUp>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleDown {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub policies: Option<Vec<ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleDownPolicies>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "selectPolicy")]
pub select_policy: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "stabilizationWindowSeconds")]
pub stabilization_window_seconds: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerance: Option<IntOrString>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleDownPolicies {
#[serde(rename = "periodSeconds")]
pub period_seconds: i32,
#[serde(rename = "type")]
pub r#type: String,
pub value: i32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleUp {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub policies: Option<Vec<ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleUpPolicies>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "selectPolicy")]
pub select_policy: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "stabilizationWindowSeconds")]
pub stabilization_window_seconds: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerance: Option<IntOrString>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedHorizontalPodAutoscalerConfigBehaviorScaleUpPolicies {
#[serde(rename = "periodSeconds")]
pub period_seconds: i32,
#[serde(rename = "type")]
pub r#type: String,
pub value: i32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectAdvancedScalingModifiers {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "activationTarget")]
pub activation_target: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub formula: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "metricType")]
pub metric_type: Option<ScaledObjectAdvancedScalingModifiersMetricType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum ScaledObjectAdvancedScalingModifiersMetricType {
AverageValue,
Value,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectFallback {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub behavior: Option<ScaledObjectFallbackBehavior>,
#[serde(rename = "failureThreshold")]
pub failure_threshold: i32,
pub replicas: i32,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum ScaledObjectFallbackBehavior {
#[serde(rename = "static")]
Static,
#[serde(rename = "currentReplicas")]
CurrentReplicas,
#[serde(rename = "currentReplicasIfHigher")]
CurrentReplicasIfHigher,
#[serde(rename = "currentReplicasIfLower")]
CurrentReplicasIfLower,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectScaleTargetRef {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "envSourceContainerName")]
pub env_source_container_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectTriggers {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "authenticationRef")]
pub authentication_ref: Option<ScaledObjectTriggersAuthenticationRef>,
pub metadata: BTreeMap<String, String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "metricType")]
pub metric_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
pub r#type: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useCachedMetrics")]
pub use_cached_metrics: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectTriggersAuthenticationRef {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "authenticationsTypes")]
pub authentications_types: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "compositeScalerName")]
pub composite_scaler_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<ScaledObjectStatusConditions>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "externalMetricNames")]
pub external_metric_names: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub health: Option<BTreeMap<String, ScaledObjectStatusHealth>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "hpaName")]
pub hpa_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastActiveTime")]
pub last_active_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "originalReplicaCount")]
pub original_replica_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pausedReplicaCount")]
pub paused_replica_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceMetricNames")]
pub resource_metric_names: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleTargetGVKR")]
pub scale_target_gvkr: Option<ScaledObjectStatusScaleTargetGvkr>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleTargetKind")]
pub scale_target_kind: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "triggersTypes")]
pub triggers_types: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectStatusConditions {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
pub status: String,
#[serde(rename = "type")]
pub r#type: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectStatusHealth {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberOfFailures")]
pub number_of_failures: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ScaledObjectStatusScaleTargetGvkr {
pub group: String,
pub kind: String,
pub resource: String,
pub version: String,
}