#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use typed_builder::TypedBuilder;
pub use schemars::JsonSchema;
pub use serde::{Serialize, Deserialize};
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
#[kube(group = "traefik.io", version = "v1alpha1", kind = "MiddlewareTCP", plural = "middlewaretcps")]
#[kube(namespaced)]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct MiddlewareTCPSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "inFlightConn")]
#[builder(default, setter(strip_option))]
pub in_flight_conn: Option<MiddlewareTCPInFlightConn>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ipAllowList")]
#[builder(default, setter(strip_option))]
pub ip_allow_list: Option<MiddlewareTCPIpAllowList>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ipWhiteList")]
#[builder(default, setter(strip_option))]
pub ip_white_list: Option<MiddlewareTCPIpWhiteList>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct MiddlewareTCPInFlightConn {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option))]
pub amount: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct MiddlewareTCPIpAllowList {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sourceRange")]
#[builder(default, setter(strip_option))]
pub source_range: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct MiddlewareTCPIpWhiteList {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sourceRange")]
#[builder(default, setter(strip_option))]
pub source_range: Option<Vec<String>>,
}