#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "submariner.io", version = "v1alpha1", kind = "Submariner", plural = "submariners")]
#[kube(namespaced)]
#[kube(status = "SubmarinerStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct SubmarinerSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "airGappedDeployment")]
pub air_gapped_deployment: Option<bool>,
pub broker: String,
#[serde(rename = "brokerK8sApiServer")]
pub broker_k8s_api_server: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "brokerK8sApiServerToken")]
pub broker_k8s_api_server_token: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "brokerK8sCA")]
pub broker_k8s_ca: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "brokerK8sInsecure")]
pub broker_k8s_insecure: Option<bool>,
#[serde(rename = "brokerK8sRemoteNamespace")]
pub broker_k8s_remote_namespace: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "brokerK8sSecret")]
pub broker_k8s_secret: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cableDriver")]
pub cable_driver: Option<String>,
#[serde(rename = "ceIPSecDebug")]
pub ce_ip_sec_debug: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecForceUDPEncaps")]
pub ce_ip_sec_force_udp_encaps: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecIKEPort")]
pub ce_ip_sec_ike_port: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecNATTPort")]
pub ce_ip_sec_natt_port: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecPSK")]
pub ce_ip_sec_psk: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecPSKSecret")]
pub ce_ip_sec_psk_secret: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecPreferredServer")]
pub ce_ip_sec_preferred_server: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ceIPSecUseOVNCertAuthMode")]
pub ce_ip_sec_use_ovn_cert_auth_mode: Option<bool>,
#[serde(rename = "clusterCIDR")]
pub cluster_cidr: String,
#[serde(rename = "clusterID")]
pub cluster_id: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clustersetIPCIDR")]
pub clusterset_ipcidr: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clustersetIPEnabled")]
pub clusterset_ip_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "colorCodes")]
pub color_codes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "connectionHealthCheck")]
pub connection_health_check: Option<SubmarinerConnectionHealthCheck>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "coreDNSCustomConfig")]
pub core_dns_custom_config: Option<SubmarinerCoreDnsCustomConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "customDomains")]
pub custom_domains: Option<Vec<String>>,
pub debug: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableIntraClusterConnectivity")]
pub disable_intra_cluster_connectivity: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "globalCIDR")]
pub global_cidr: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "haltOnCertificateError")]
pub halt_on_certificate_error: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "hostedCluster")]
pub hosted_cluster: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imageOverrides")]
pub image_overrides: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerEnabled")]
pub load_balancer_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerServiceAnnotations")]
pub load_balancer_service_annotations: Option<BTreeMap<String, String>>,
pub namespace: String,
#[serde(rename = "natEnabled")]
pub nat_enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")]
pub node_selector: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub repository: Option<String>,
#[serde(rename = "serviceCIDR")]
pub service_cidr: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceDiscoveryEnabled")]
pub service_discovery_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tolerations: Option<Vec<SubmarinerTolerations>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerConnectionHealthCheck {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "intervalSeconds")]
pub interval_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxPacketLossCount")]
pub max_packet_loss_count: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerCoreDnsCustomConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapName")]
pub config_map_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerTolerations {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub effect: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")]
pub toleration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "airGappedDeployment")]
pub air_gapped_deployment: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterCIDR")]
pub cluster_cidr: Option<String>,
#[serde(rename = "clusterID")]
pub cluster_id: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clustersetIPCIDR")]
pub clusterset_ipcidr: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "colorCodes")]
pub color_codes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "deploymentInfo")]
pub deployment_info: Option<SubmarinerStatusDeploymentInfo>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "gatewayDaemonSetStatus")]
pub gateway_daemon_set_status: Option<SubmarinerStatusGatewayDaemonSetStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gateways: Option<Vec<SubmarinerStatusGateways>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "globalCIDR")]
pub global_cidr: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "globalnetDaemonSetStatus")]
pub globalnet_daemon_set_status: Option<SubmarinerStatusGlobalnetDaemonSetStatus>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "hostedCluster")]
pub hosted_cluster: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerStatus")]
pub load_balancer_status: Option<SubmarinerStatusLoadBalancerStatus>,
#[serde(rename = "natEnabled")]
pub nat_enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "networkPlugin")]
pub network_plugin: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "routeAgentDaemonSetStatus")]
pub route_agent_daemon_set_status: Option<SubmarinerStatusRouteAgentDaemonSetStatus>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceCIDR")]
pub service_cidr: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusDeploymentInfo {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cloudProvider")]
pub cloud_provider: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kubernetesType")]
pub kubernetes_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kubernetesTypeVersion")]
pub kubernetes_type_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kubernetesVersion")]
pub kubernetes_version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastResourceVersion")]
pub last_resource_version: Option<String>,
#[serde(rename = "mismatchedContainerImages")]
pub mismatched_container_images: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nonReadyContainerStates")]
pub non_ready_container_states: Option<Vec<SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStates>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubmarinerStatusGatewayDaemonSetStatusStatus>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStates {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub running: Option<SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesRunning>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terminated: Option<SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesTerminated>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub waiting: Option<SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesWaiting>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesRunning {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesTerminated {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "containerID")]
pub container_id: Option<String>,
#[serde(rename = "exitCode")]
pub exit_code: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "finishedAt")]
pub finished_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signal: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatusNonReadyContainerStatesWaiting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewayDaemonSetStatusStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")]
pub collision_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(rename = "currentNumberScheduled")]
pub current_number_scheduled: i32,
#[serde(rename = "desiredNumberScheduled")]
pub desired_number_scheduled: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberAvailable")]
pub number_available: Option<i32>,
#[serde(rename = "numberMisscheduled")]
pub number_misscheduled: i32,
#[serde(rename = "numberReady")]
pub number_ready: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberUnavailable")]
pub number_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedNumberScheduled")]
pub updated_number_scheduled: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGateways {
pub connections: Vec<SubmarinerStatusGatewaysConnections>,
#[serde(rename = "haStatus")]
pub ha_status: String,
#[serde(rename = "localEndpoint")]
pub local_endpoint: SubmarinerStatusGatewaysLocalEndpoint,
#[serde(rename = "statusFailure")]
pub status_failure: String,
pub version: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewaysConnections {
pub endpoint: SubmarinerStatusGatewaysConnectionsEndpoint,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "latencyRTT")]
pub latency_rtt: Option<SubmarinerStatusGatewaysConnectionsLatencyRtt>,
pub status: String,
#[serde(rename = "statusMessage")]
pub status_message: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "usingIP")]
pub using_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "usingNAT")]
pub using_nat: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewaysConnectionsEndpoint {
pub backend: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub backend_config: Option<BTreeMap<String, String>>,
pub cable_name: String,
pub cluster_id: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckIP")]
pub health_check_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckIPs")]
pub health_check_i_ps: Option<Vec<String>>,
pub hostname: String,
pub nat_enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateIPs")]
pub private_i_ps: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub private_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "publicIPs")]
pub public_i_ps: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub public_ip: Option<String>,
pub subnets: Vec<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewaysConnectionsLatencyRtt {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub average: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "stdDev")]
pub std_dev: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGatewaysLocalEndpoint {
pub backend: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub backend_config: Option<BTreeMap<String, String>>,
pub cable_name: String,
pub cluster_id: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckIP")]
pub health_check_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckIPs")]
pub health_check_i_ps: Option<Vec<String>>,
pub hostname: String,
pub nat_enabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateIPs")]
pub private_i_ps: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub private_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "publicIPs")]
pub public_i_ps: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub public_ip: Option<String>,
pub subnets: Vec<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastResourceVersion")]
pub last_resource_version: Option<String>,
#[serde(rename = "mismatchedContainerImages")]
pub mismatched_container_images: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nonReadyContainerStates")]
pub non_ready_container_states: Option<Vec<SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStates>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubmarinerStatusGlobalnetDaemonSetStatusStatus>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStates {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub running: Option<SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesRunning>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terminated: Option<SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesTerminated>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub waiting: Option<SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesWaiting>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesRunning {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesTerminated {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "containerID")]
pub container_id: Option<String>,
#[serde(rename = "exitCode")]
pub exit_code: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "finishedAt")]
pub finished_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signal: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatusNonReadyContainerStatesWaiting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusGlobalnetDaemonSetStatusStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")]
pub collision_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(rename = "currentNumberScheduled")]
pub current_number_scheduled: i32,
#[serde(rename = "desiredNumberScheduled")]
pub desired_number_scheduled: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberAvailable")]
pub number_available: Option<i32>,
#[serde(rename = "numberMisscheduled")]
pub number_misscheduled: i32,
#[serde(rename = "numberReady")]
pub number_ready: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberUnavailable")]
pub number_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedNumberScheduled")]
pub updated_number_scheduled: Option<i32>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusLoadBalancerStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubmarinerStatusLoadBalancerStatusStatus>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusLoadBalancerStatusStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ingress: Option<Vec<SubmarinerStatusLoadBalancerStatusStatusIngress>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusLoadBalancerStatusStatusIngress {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ipMode")]
pub ip_mode: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ports: Option<Vec<SubmarinerStatusLoadBalancerStatusStatusIngressPorts>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusLoadBalancerStatusStatusIngressPorts {
pub error: String,
pub port: i32,
pub protocol: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastResourceVersion")]
pub last_resource_version: Option<String>,
#[serde(rename = "mismatchedContainerImages")]
pub mismatched_container_images: bool,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "nonReadyContainerStates")]
pub non_ready_container_states: Option<Vec<SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStates>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubmarinerStatusRouteAgentDaemonSetStatusStatus>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStates {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub running: Option<SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesRunning>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub terminated: Option<SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesTerminated>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub waiting: Option<SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesWaiting>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesRunning {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesTerminated {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "containerID")]
pub container_id: Option<String>,
#[serde(rename = "exitCode")]
pub exit_code: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "finishedAt")]
pub finished_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signal: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "startedAt")]
pub started_at: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatusNonReadyContainerStatesWaiting {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct SubmarinerStatusRouteAgentDaemonSetStatusStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")]
pub collision_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(rename = "currentNumberScheduled")]
pub current_number_scheduled: i32,
#[serde(rename = "desiredNumberScheduled")]
pub desired_number_scheduled: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberAvailable")]
pub number_available: Option<i32>,
#[serde(rename = "numberMisscheduled")]
pub number_misscheduled: i32,
#[serde(rename = "numberReady")]
pub number_ready: i32,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "numberUnavailable")]
pub number_unavailable: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedNumberScheduled")]
pub updated_number_scheduled: Option<i32>,
}