#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use schemars::JsonSchema;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, JsonSchema)]
#[kube(group = "networking.istio.io", version = "v1beta1", kind = "DestinationRule", plural = "destinationrules")]
#[kube(namespaced)]
#[kube(status = "DestinationRuleStatus")]
pub struct DestinationRuleSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "exportTo")]
pub export_to: Option<Vec<String>>,
pub host: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subsets: Option<Vec<DestinationRuleSubsets>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "trafficPolicy")]
pub traffic_policy: Option<DestinationRuleTrafficPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "workloadSelector")]
pub workload_selector: Option<DestinationRuleWorkloadSelector>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsets {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<BTreeMap<String, String>>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "trafficPolicy")]
pub traffic_policy: Option<DestinationRuleSubsetsTrafficPolicy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionPool")]
pub connection_pool: Option<DestinationRuleSubsetsTrafficPolicyConnectionPool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")]
pub load_balancer: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancer>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outlierDetection")]
pub outlier_detection: Option<DestinationRuleSubsetsTrafficPolicyOutlierDetection>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "portLevelSettings")]
pub port_level_settings: Option<Vec<DestinationRuleSubsetsTrafficPolicyPortLevelSettings>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyProtocol")]
pub proxy_protocol: Option<DestinationRuleSubsetsTrafficPolicyProxyProtocol>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "retryBudget")]
pub retry_budget: Option<DestinationRuleSubsetsTrafficPolicyRetryBudget>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<DestinationRuleSubsetsTrafficPolicyTls>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tunnel: Option<DestinationRuleSubsetsTrafficPolicyTunnel>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyConnectionPool {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub http: Option<DestinationRuleSubsetsTrafficPolicyConnectionPoolHttp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tcp: Option<DestinationRuleSubsetsTrafficPolicyConnectionPoolTcp>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyConnectionPoolHttp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "h2UpgradePolicy")]
pub h2_upgrade_policy: Option<DestinationRuleSubsetsTrafficPolicyConnectionPoolHttpH2UpgradePolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http1MaxPendingRequests")]
pub http1_max_pending_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http2MaxRequests")]
pub http2_max_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentStreams")]
pub max_concurrent_streams: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRequestsPerConnection")]
pub max_requests_per_connection: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRetries")]
pub max_retries: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useClientProtocol")]
pub use_client_protocol: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyConnectionPoolHttpH2UpgradePolicy {
#[serde(rename = "DEFAULT")]
Default,
#[serde(rename = "DO_NOT_UPGRADE")]
DoNotUpgrade,
#[serde(rename = "UPGRADE")]
Upgrade,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyConnectionPoolTcp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectTimeout")]
pub connect_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnectionDuration")]
pub max_connection_duration: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnections")]
pub max_connections: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpKeepalive")]
pub tcp_keepalive: Option<DestinationRuleSubsetsTrafficPolicyConnectionPoolTcpTcpKeepalive>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyConnectionPoolTcpTcpKeepalive {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub probes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancer {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consistentHash")]
pub consistent_hash: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "localityLbSetting")]
pub locality_lb_setting: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSetting>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub simple: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerSimple>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub warmup: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerWarmup>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "warmupDurationSecs")]
pub warmup_duration_secs: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpCookie")]
pub http_cookie: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashHttpCookie>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaderName")]
pub http_header_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpQueryParameterName")]
pub http_query_parameter_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maglev: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashMaglev>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ringHash")]
pub ring_hash: Option<DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashRingHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useSourceIp")]
pub use_source_ip: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashHttpCookie {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashMaglev {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tableSize")]
pub table_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerConsistentHashRingHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSetting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub distribute: Option<Vec<DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSettingDistribute>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failover: Option<Vec<DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSettingFailover>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failoverPriority")]
pub failover_priority: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSettingDistribute {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<BTreeMap<String, i64>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerLocalityLbSettingFailover {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyLoadBalancerSimple {
#[serde(rename = "UNSPECIFIED")]
Unspecified,
#[serde(rename = "LEAST_CONN")]
LeastConn,
#[serde(rename = "RANDOM")]
Random,
#[serde(rename = "PASSTHROUGH")]
Passthrough,
#[serde(rename = "ROUND_ROBIN")]
RoundRobin,
#[serde(rename = "LEAST_REQUEST")]
LeastRequest,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyLoadBalancerWarmup {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub aggression: Option<f64>,
pub duration: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumPercent")]
pub minimum_percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyOutlierDetection {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseEjectionTime")]
pub base_ejection_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutive5xxErrors")]
pub consecutive5xx_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveErrors")]
pub consecutive_errors: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveGatewayErrors")]
pub consecutive_gateway_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveLocalOriginFailures")]
pub consecutive_local_origin_failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxEjectionPercent")]
pub max_ejection_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minHealthPercent")]
pub min_health_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "splitExternalLocalOriginErrors")]
pub split_external_local_origin_errors: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettings {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionPool")]
pub connection_pool: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")]
pub load_balancer: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancer>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outlierDetection")]
pub outlier_detection: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsOutlierDetection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsPort>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsTls>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPool {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub http: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolHttp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tcp: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolTcp>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolHttp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "h2UpgradePolicy")]
pub h2_upgrade_policy: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolHttpH2UpgradePolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http1MaxPendingRequests")]
pub http1_max_pending_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http2MaxRequests")]
pub http2_max_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentStreams")]
pub max_concurrent_streams: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRequestsPerConnection")]
pub max_requests_per_connection: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRetries")]
pub max_retries: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useClientProtocol")]
pub use_client_protocol: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolHttpH2UpgradePolicy {
#[serde(rename = "DEFAULT")]
Default,
#[serde(rename = "DO_NOT_UPGRADE")]
DoNotUpgrade,
#[serde(rename = "UPGRADE")]
Upgrade,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolTcp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectTimeout")]
pub connect_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnectionDuration")]
pub max_connection_duration: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnections")]
pub max_connections: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpKeepalive")]
pub tcp_keepalive: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolTcpTcpKeepalive>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsConnectionPoolTcpTcpKeepalive {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub probes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancer {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consistentHash")]
pub consistent_hash: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "localityLbSetting")]
pub locality_lb_setting: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSetting>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub simple: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerSimple>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub warmup: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerWarmup>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "warmupDurationSecs")]
pub warmup_duration_secs: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpCookie")]
pub http_cookie: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashHttpCookie>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaderName")]
pub http_header_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpQueryParameterName")]
pub http_query_parameter_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maglev: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashMaglev>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ringHash")]
pub ring_hash: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashRingHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useSourceIp")]
pub use_source_ip: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashHttpCookie {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashMaglev {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tableSize")]
pub table_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashRingHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSetting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub distribute: Option<Vec<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingDistribute>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failover: Option<Vec<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingFailover>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failoverPriority")]
pub failover_priority: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingDistribute {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<BTreeMap<String, i64>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingFailover {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerSimple {
#[serde(rename = "UNSPECIFIED")]
Unspecified,
#[serde(rename = "LEAST_CONN")]
LeastConn,
#[serde(rename = "RANDOM")]
Random,
#[serde(rename = "PASSTHROUGH")]
Passthrough,
#[serde(rename = "ROUND_ROBIN")]
RoundRobin,
#[serde(rename = "LEAST_REQUEST")]
LeastRequest,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsLoadBalancerWarmup {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub aggression: Option<f64>,
pub duration: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumPercent")]
pub minimum_percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsOutlierDetection {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseEjectionTime")]
pub base_ejection_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutive5xxErrors")]
pub consecutive5xx_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveErrors")]
pub consecutive_errors: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveGatewayErrors")]
pub consecutive_gateway_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveLocalOriginFailures")]
pub consecutive_local_origin_failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxEjectionPercent")]
pub max_ejection_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minHealthPercent")]
pub min_health_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "splitExternalLocalOriginErrors")]
pub split_external_local_origin_errors: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsPort {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub number: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyPortLevelSettingsTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCertificates")]
pub ca_certificates: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCrl")]
pub ca_crl: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCertificate")]
pub client_certificate: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "credentialName")]
pub credential_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<DestinationRuleSubsetsTrafficPolicyPortLevelSettingsTlsMode>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKey")]
pub private_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subjectAltNames")]
pub subject_alt_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyPortLevelSettingsTlsMode {
#[serde(rename = "DISABLE")]
Disable,
#[serde(rename = "SIMPLE")]
Simple,
#[serde(rename = "MUTUAL")]
Mutual,
#[serde(rename = "ISTIO_MUTUAL")]
IstioMutual,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyProxyProtocol {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<DestinationRuleSubsetsTrafficPolicyProxyProtocolVersion>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyProxyProtocolVersion {
V1,
V2,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyRetryBudget {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minRetryConcurrency")]
pub min_retry_concurrency: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCertificates")]
pub ca_certificates: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCrl")]
pub ca_crl: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCertificate")]
pub client_certificate: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "credentialName")]
pub credential_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<DestinationRuleSubsetsTrafficPolicyTlsMode>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKey")]
pub private_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subjectAltNames")]
pub subject_alt_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleSubsetsTrafficPolicyTlsMode {
#[serde(rename = "DISABLE")]
Disable,
#[serde(rename = "SIMPLE")]
Simple,
#[serde(rename = "MUTUAL")]
Mutual,
#[serde(rename = "ISTIO_MUTUAL")]
IstioMutual,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleSubsetsTrafficPolicyTunnel {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub protocol: Option<String>,
#[serde(rename = "targetHost")]
pub target_host: String,
#[serde(rename = "targetPort")]
pub target_port: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicy {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionPool")]
pub connection_pool: Option<DestinationRuleTrafficPolicyConnectionPool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")]
pub load_balancer: Option<DestinationRuleTrafficPolicyLoadBalancer>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outlierDetection")]
pub outlier_detection: Option<DestinationRuleTrafficPolicyOutlierDetection>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "portLevelSettings")]
pub port_level_settings: Option<Vec<DestinationRuleTrafficPolicyPortLevelSettings>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyProtocol")]
pub proxy_protocol: Option<DestinationRuleTrafficPolicyProxyProtocol>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "retryBudget")]
pub retry_budget: Option<DestinationRuleTrafficPolicyRetryBudget>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<DestinationRuleTrafficPolicyTls>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tunnel: Option<DestinationRuleTrafficPolicyTunnel>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyConnectionPool {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub http: Option<DestinationRuleTrafficPolicyConnectionPoolHttp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tcp: Option<DestinationRuleTrafficPolicyConnectionPoolTcp>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyConnectionPoolHttp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "h2UpgradePolicy")]
pub h2_upgrade_policy: Option<DestinationRuleTrafficPolicyConnectionPoolHttpH2UpgradePolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http1MaxPendingRequests")]
pub http1_max_pending_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http2MaxRequests")]
pub http2_max_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentStreams")]
pub max_concurrent_streams: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRequestsPerConnection")]
pub max_requests_per_connection: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRetries")]
pub max_retries: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useClientProtocol")]
pub use_client_protocol: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyConnectionPoolHttpH2UpgradePolicy {
#[serde(rename = "DEFAULT")]
Default,
#[serde(rename = "DO_NOT_UPGRADE")]
DoNotUpgrade,
#[serde(rename = "UPGRADE")]
Upgrade,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyConnectionPoolTcp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectTimeout")]
pub connect_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnectionDuration")]
pub max_connection_duration: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnections")]
pub max_connections: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpKeepalive")]
pub tcp_keepalive: Option<DestinationRuleTrafficPolicyConnectionPoolTcpTcpKeepalive>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyConnectionPoolTcpTcpKeepalive {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub probes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancer {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consistentHash")]
pub consistent_hash: Option<DestinationRuleTrafficPolicyLoadBalancerConsistentHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "localityLbSetting")]
pub locality_lb_setting: Option<DestinationRuleTrafficPolicyLoadBalancerLocalityLbSetting>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub simple: Option<DestinationRuleTrafficPolicyLoadBalancerSimple>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub warmup: Option<DestinationRuleTrafficPolicyLoadBalancerWarmup>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "warmupDurationSecs")]
pub warmup_duration_secs: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerConsistentHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpCookie")]
pub http_cookie: Option<DestinationRuleTrafficPolicyLoadBalancerConsistentHashHttpCookie>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaderName")]
pub http_header_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpQueryParameterName")]
pub http_query_parameter_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maglev: Option<DestinationRuleTrafficPolicyLoadBalancerConsistentHashMaglev>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ringHash")]
pub ring_hash: Option<DestinationRuleTrafficPolicyLoadBalancerConsistentHashRingHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useSourceIp")]
pub use_source_ip: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerConsistentHashHttpCookie {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerConsistentHashMaglev {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tableSize")]
pub table_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerConsistentHashRingHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerLocalityLbSetting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub distribute: Option<Vec<DestinationRuleTrafficPolicyLoadBalancerLocalityLbSettingDistribute>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failover: Option<Vec<DestinationRuleTrafficPolicyLoadBalancerLocalityLbSettingFailover>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failoverPriority")]
pub failover_priority: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerLocalityLbSettingDistribute {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<BTreeMap<String, i64>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerLocalityLbSettingFailover {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyLoadBalancerSimple {
#[serde(rename = "UNSPECIFIED")]
Unspecified,
#[serde(rename = "LEAST_CONN")]
LeastConn,
#[serde(rename = "RANDOM")]
Random,
#[serde(rename = "PASSTHROUGH")]
Passthrough,
#[serde(rename = "ROUND_ROBIN")]
RoundRobin,
#[serde(rename = "LEAST_REQUEST")]
LeastRequest,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyLoadBalancerWarmup {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub aggression: Option<f64>,
pub duration: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumPercent")]
pub minimum_percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyOutlierDetection {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseEjectionTime")]
pub base_ejection_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutive5xxErrors")]
pub consecutive5xx_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveErrors")]
pub consecutive_errors: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveGatewayErrors")]
pub consecutive_gateway_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveLocalOriginFailures")]
pub consecutive_local_origin_failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxEjectionPercent")]
pub max_ejection_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minHealthPercent")]
pub min_health_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "splitExternalLocalOriginErrors")]
pub split_external_local_origin_errors: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettings {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionPool")]
pub connection_pool: Option<DestinationRuleTrafficPolicyPortLevelSettingsConnectionPool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")]
pub load_balancer: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancer>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outlierDetection")]
pub outlier_detection: Option<DestinationRuleTrafficPolicyPortLevelSettingsOutlierDetection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<DestinationRuleTrafficPolicyPortLevelSettingsPort>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<DestinationRuleTrafficPolicyPortLevelSettingsTls>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsConnectionPool {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub http: Option<DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolHttp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tcp: Option<DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolTcp>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolHttp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "h2UpgradePolicy")]
pub h2_upgrade_policy: Option<DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolHttpH2UpgradePolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http1MaxPendingRequests")]
pub http1_max_pending_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "http2MaxRequests")]
pub http2_max_requests: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConcurrentStreams")]
pub max_concurrent_streams: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRequestsPerConnection")]
pub max_requests_per_connection: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxRetries")]
pub max_retries: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useClientProtocol")]
pub use_client_protocol: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolHttpH2UpgradePolicy {
#[serde(rename = "DEFAULT")]
Default,
#[serde(rename = "DO_NOT_UPGRADE")]
DoNotUpgrade,
#[serde(rename = "UPGRADE")]
Upgrade,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolTcp {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectTimeout")]
pub connect_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "idleTimeout")]
pub idle_timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnectionDuration")]
pub max_connection_duration: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxConnections")]
pub max_connections: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpKeepalive")]
pub tcp_keepalive: Option<DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolTcpTcpKeepalive>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsConnectionPoolTcpTcpKeepalive {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub probes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancer {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consistentHash")]
pub consistent_hash: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "localityLbSetting")]
pub locality_lb_setting: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSetting>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub simple: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerSimple>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub warmup: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerWarmup>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "warmupDurationSecs")]
pub warmup_duration_secs: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpCookie")]
pub http_cookie: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashHttpCookie>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpHeaderName")]
pub http_header_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpQueryParameterName")]
pub http_query_parameter_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maglev: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashMaglev>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ringHash")]
pub ring_hash: Option<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashRingHash>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "useSourceIp")]
pub use_source_ip: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashHttpCookie {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashMaglev {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tableSize")]
pub table_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerConsistentHashRingHash {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumRingSize")]
pub minimum_ring_size: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSetting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub distribute: Option<Vec<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingDistribute>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failover: Option<Vec<DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingFailover>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failoverPriority")]
pub failover_priority: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingDistribute {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<BTreeMap<String, i64>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerLocalityLbSettingFailover {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub to: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerSimple {
#[serde(rename = "UNSPECIFIED")]
Unspecified,
#[serde(rename = "LEAST_CONN")]
LeastConn,
#[serde(rename = "RANDOM")]
Random,
#[serde(rename = "PASSTHROUGH")]
Passthrough,
#[serde(rename = "ROUND_ROBIN")]
RoundRobin,
#[serde(rename = "LEAST_REQUEST")]
LeastRequest,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsLoadBalancerWarmup {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub aggression: Option<f64>,
pub duration: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minimumPercent")]
pub minimum_percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsOutlierDetection {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "baseEjectionTime")]
pub base_ejection_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutive5xxErrors")]
pub consecutive5xx_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveErrors")]
pub consecutive_errors: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveGatewayErrors")]
pub consecutive_gateway_errors: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "consecutiveLocalOriginFailures")]
pub consecutive_local_origin_failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxEjectionPercent")]
pub max_ejection_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minHealthPercent")]
pub min_health_percent: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "splitExternalLocalOriginErrors")]
pub split_external_local_origin_errors: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsPort {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub number: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyPortLevelSettingsTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCertificates")]
pub ca_certificates: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCrl")]
pub ca_crl: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCertificate")]
pub client_certificate: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "credentialName")]
pub credential_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<DestinationRuleTrafficPolicyPortLevelSettingsTlsMode>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKey")]
pub private_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subjectAltNames")]
pub subject_alt_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyPortLevelSettingsTlsMode {
#[serde(rename = "DISABLE")]
Disable,
#[serde(rename = "SIMPLE")]
Simple,
#[serde(rename = "MUTUAL")]
Mutual,
#[serde(rename = "ISTIO_MUTUAL")]
IstioMutual,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyProxyProtocol {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<DestinationRuleTrafficPolicyProxyProtocolVersion>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyProxyProtocolVersion {
V1,
V2,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyRetryBudget {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minRetryConcurrency")]
pub min_retry_concurrency: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percent: Option<f64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyTls {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCertificates")]
pub ca_certificates: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "caCrl")]
pub ca_crl: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientCertificate")]
pub client_certificate: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "credentialName")]
pub credential_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "insecureSkipVerify")]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<DestinationRuleTrafficPolicyTlsMode>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKey")]
pub private_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subjectAltNames")]
pub subject_alt_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleTrafficPolicyTlsMode {
#[serde(rename = "DISABLE")]
Disable,
#[serde(rename = "SIMPLE")]
Simple,
#[serde(rename = "MUTUAL")]
Mutual,
#[serde(rename = "ISTIO_MUTUAL")]
IstioMutual,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleTrafficPolicyTunnel {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub protocol: Option<String>,
#[serde(rename = "targetHost")]
pub target_host: String,
#[serde(rename = "targetPort")]
pub target_port: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleWorkloadSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<IntOrString>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "validationMessages")]
pub validation_messages: Option<Vec<DestinationRuleStatusValidationMessages>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleStatusValidationMessages {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "documentationUrl")]
pub documentation_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub level: Option<DestinationRuleStatusValidationMessagesLevel>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<DestinationRuleStatusValidationMessagesType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum DestinationRuleStatusValidationMessagesLevel {
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(rename = "ERROR")]
Error,
#[serde(rename = "WARNING")]
Warning,
#[serde(rename = "INFO")]
Info,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct DestinationRuleStatusValidationMessagesType {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}