use std::collections::BTreeMap;
use super::*;
pub use machine::AWSMachineTemplate;
pub use network::ClassicELBScheme;
pub use network::NetworkSpec;
pub use network::NetworkStatus;
pub use network::VPCSpec;
pub use tags::Tags;
pub use types::AMIReference;
pub use types::AZSelectionScheme;
pub use types::EKSAMILookupType;
pub use types::Instance;
pub use types::InstanceState;
pub use types::Volume;
pub use types::VolumeType;
mod impls;
mod machine;
mod network;
mod tags;
mod types;
#[skip_serializing_none]
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default)]
#[serde(rename_all = "camelCase")]
#[kube(
group = "infrastructure.cluster.x-k8s.io",
version = "v1beta1",
kind = "AWSCluster",
plural = "awsclusters",
status = "AWSClusterStatus"
)]
#[kube(namespaced)]
#[kube(schema = "disabled")]
pub struct AWSClusterSpec {
pub network: Option<NetworkSpec>,
pub region: Option<String>,
pub ssh_key_name: Option<String>,
pub control_plane_endpoint: Option<clusterv1::ApiEndpoint>,
pub additional_tags: Option<Tags>,
pub control_plane_load_balancer: Option<AWSLoadBalancerSpec>,
pub image_lookup_format: Option<String>,
pub image_lookup_org: Option<String>,
#[serde(rename = "imageLookupBaseOS")]
pub image_lookup_base_os: Option<String>,
pub bastion: Option<Bastion>,
pub identity_ref: Option<AWSIdentityReference>,
}
#[skip_serializing_none]
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AWSClusterStatus {
pub ready: bool,
pub network_status: Option<NetworkStatus>,
pub failure_domains: Option<clusterv1::FailureDomains>,
pub bastion: Option<Instance>,
pub conditions: Option<clusterv1::Conditions>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AWSIdentityKind {
AWSClusterControllerIdentity,
AWSClusterRoleIdentity,
AWSClusterStaticIdentity,
}
#[allow(non_upper_case_globals)]
pub const ControllerIdentityKind: AWSIdentityKind = AWSIdentityKind::AWSClusterControllerIdentity;
#[allow(non_upper_case_globals)]
pub const ClusterRoleIdentityKind: AWSIdentityKind = AWSIdentityKind::AWSClusterRoleIdentity;
#[allow(non_upper_case_globals)]
pub const ClusterStaticIdentityKind: AWSIdentityKind = AWSIdentityKind::AWSClusterStaticIdentity;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AWSIdentityReference {
pub name: String,
pub kind: AWSIdentityKind,
}
#[skip_serializing_none]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Bastion {
pub enabled: Option<bool>,
pub disable_ingress_rules: Option<bool>,
#[serde(
default,
rename = "allowedCIDRBlocks",
skip_serializing_if = "Vec::is_empty"
)]
pub allowed_cidr_blocks: Vec<String>,
pub instance_type: Option<String>,
pub ami: Option<String>,
}
#[skip_serializing_none]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AWSLoadBalancerSpec {
pub name: Option<String>,
pub scheme: Option<ClassicELBScheme>,
pub cross_zone_load_balancing: Option<bool>,
pub subnets: Option<Vec<String>>,
pub additional_security_groups: Option<Vec<String>>, }
#[cfg(test)]
mod tests;