#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "getambassador.io", version = "v3alpha1", kind = "RateLimitService", plural = "ratelimitservices")]
#[kube(namespaced)]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct RateLimitServiceSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ambassador_id: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub domain: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failure_mode_deny: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub grpc: Option<RateLimitServiceGrpc>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub protocol_version: Option<RateLimitServiceProtocolVersion>,
pub service: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stats_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout_ms: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "v2ExplicitTLS")]
pub v2_explicit_tls: Option<RateLimitServiceV2ExplicitTls>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct RateLimitServiceGrpc {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub use_resource_exhausted_code: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum RateLimitServiceProtocolVersion {
#[serde(rename = "v2")]
V2,
#[serde(rename = "v3")]
V3,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct RateLimitServiceV2ExplicitTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceScheme")]
pub service_scheme: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<RateLimitServiceV2ExplicitTlsTls>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum RateLimitServiceV2ExplicitTlsTls {
#[serde(rename = "")]
KopiumEmpty,
#[serde(rename = "null")]
Null,
#[serde(rename = "bool:true")]
BoolTrue,
#[serde(rename = "bool:false")]
BoolFalse,
#[serde(rename = "string")]
String,
}