use super::v0::{ChartExtCardinality, ChartExtStatusFeature};
use crate::versions::{ChartExtKindFeatures, ChartExtVersionV1Beta2};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde(rename_all = "camelCase")]
pub struct ChartExtFeaturesV1Beta2 {
pub api_version: ChartExtVersionV1Beta2,
pub kind: ChartExtKindFeatures,
pub spec: ChartExtFeaturesSpec,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ChartExtFeaturesSpec {
#[serde(default)]
pub ingress: ChartExtIngress,
pub status: Option<ChartExtStatusFeature>,
#[serde(default)]
pub cardinality: ChartExtCardinality,
#[serde(default = "yes")]
pub reinstall_dependencies: bool,
#[serde(default)]
pub node_selector_paths: Vec<Vec<String>>,
#[serde(default)]
pub tolerations_paths: Vec<Vec<String>>,
#[serde(default)]
pub display: ChartExtDeploymentDisplay,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ChartExtIngress {
pub enabled: bool,
#[serde(default)]
pub hostname_format: ChartExtIngressHostnameFormat,
}
fn yes() -> bool {
true
}
impl From<bool> for ChartExtIngress {
fn from(standard_ingress: bool) -> Self {
Self {
enabled: standard_ingress,
hostname_format: Default::default(),
}
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum ChartExtIngressHostnameFormat {
Name,
#[default]
KindAndName,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct ChartExtDeploymentDisplay {
pub name: Option<ChartExtDeploymentDisplayName>,
pub icon: Option<ChartExtDeploymentDisplayIcon>,
}
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum ChartExtDeploymentDisplayName {
DeploymentName,
InputField(ChartExtDeploymentDisplayNameInputField),
}
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct ChartExtDeploymentDisplayNameInputField {
pub name: String,
}
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct ChartExtDeploymentDisplayIcon {
pub font_awesome: String,
}