#[allow(unused_imports)]
mod prelude {
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
pub use kube::CustomResource;
pub use schemars::JsonSchema;
pub use serde::{Deserialize, Serialize};
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
#[kube(
group = "gateway.networking.x-k8s.io",
version = "v1alpha1",
kind = "XBackendTrafficPolicy",
plural = "xbackendtrafficpolicies"
)]
#[kube(namespaced)]
#[kube(status = "XBackendTrafficPolicyStatus")]
#[kube(derive = "Default")]
#[kube(derive = "PartialEq")]
pub struct XBackendTrafficPolicySpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "retryConstraint")]
pub retry_constraint: Option<XBackendTrafficPolicyRetryConstraint>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionPersistence")]
pub session_persistence: Option<XBackendTrafficPolicySessionPersistence>,
#[serde(rename = "targetRefs")]
pub target_refs: Vec<XBackendTrafficPolicyTargetRefs>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyRetryConstraint {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub budget: Option<XBackendTrafficPolicyRetryConstraintBudget>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minRetryRate")]
pub min_retry_rate: Option<XBackendTrafficPolicyRetryConstraintMinRetryRate>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyRetryConstraintBudget {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percent: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyRetryConstraintMinRetryRate {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicySessionPersistence {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "absoluteTimeout")]
pub absolute_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cookieConfig")]
pub cookie_config: Option<XBackendTrafficPolicySessionPersistenceCookieConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionName")]
pub session_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<XBackendTrafficPolicySessionPersistenceType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicySessionPersistenceCookieConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lifetimeType")]
pub lifetime_type: Option<XBackendTrafficPolicySessionPersistenceCookieConfigLifetimeType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
pub enum XBackendTrafficPolicySessionPersistenceCookieConfigLifetimeType {
Permanent,
Session,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, PartialEq)]
pub enum XBackendTrafficPolicySessionPersistenceType {
Cookie,
Header,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyTargetRefs {
pub group: String,
pub kind: String,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyStatus {
pub ancestors: Vec<XBackendTrafficPolicyStatusAncestors>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyStatusAncestors {
#[serde(rename = "ancestorRef")]
pub ancestor_ref: XBackendTrafficPolicyStatusAncestorsAncestorRef,
pub conditions: Vec<Condition>,
#[serde(rename = "controllerName")]
pub controller_name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema, Default, PartialEq)]
pub struct XBackendTrafficPolicyStatusAncestorsAncestorRef {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sectionName")]
pub section_name: Option<String>,
}