#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use typed_builder::TypedBuilder;
pub use schemars::JsonSchema;
pub use serde::{Serialize, Deserialize};
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
#[kube(group = "traefik.io", version = "v1alpha1", kind = "IngressRouteTCP", plural = "ingressroutetcps")]
#[kube(namespaced)]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct IngressRouteTCPSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "entryPoints")]
#[builder(default, setter(strip_option))]
pub entry_points: Option<Vec<String>>,
#[builder(default)]
pub routes: Vec<IngressRouteTCPRoutes>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub tls: Option<IngressRouteTCPTls>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPRoutes {
#[serde(rename = "match")]
pub r#match: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub middlewares: Option<Vec<IngressRouteTCPRoutesMiddlewares>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub priority: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub services: Option<Vec<IngressRouteTCPRoutesServices>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub syntax: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPRoutesMiddlewares {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPRoutesServices {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nativeLB")]
#[builder(default, setter(strip_option))]
pub native_lb: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePortLB")]
#[builder(default, setter(strip_option))]
pub node_port_lb: Option<bool>,
pub port: IntOrString,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyProtocol")]
#[builder(default, setter(strip_option))]
pub proxy_protocol: Option<IngressRouteTCPRoutesServicesProxyProtocol>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serversTransport")]
#[builder(default, setter(strip_option))]
pub servers_transport: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationDelay")]
#[builder(default, setter(strip_option))]
pub termination_delay: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub tls: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub weight: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPRoutesServicesProxyProtocol {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub version: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "certResolver")]
#[builder(default, setter(strip_option))]
pub cert_resolver: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub domains: Option<Vec<IngressRouteTCPTlsDomains>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub options: Option<IngressRouteTCPTlsOptions>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub passthrough: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")]
#[builder(default, setter(strip_option))]
pub secret_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub store: Option<IngressRouteTCPTlsStore>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPTlsDomains {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub main: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub sans: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPTlsOptions {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct IngressRouteTCPTlsStore {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub namespace: Option<String>,
}