use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
#[serde(rename_all = "camelCase")]
pub struct AwsFailureDomainSubnets {
#[serde(default)]
#[serde(deserialize_with = "crate::network_ids::deserialize_ids")]
pub public_subnet_ids: Vec<String>,
#[serde(default)]
#[serde(deserialize_with = "crate::network_ids::deserialize_ids")]
pub private_subnet_ids: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
#[serde(rename_all = "camelCase")]
pub struct AwsSandboxNetwork {
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub sandbox_subnet_ids: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub gateway_subnet_ids: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub sandbox_cidrs: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub gateway_cidrs: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub workload_cidrs: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids_or_csv")]
pub vpc_cidrs: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
#[serde(rename_all = "camelCase")]
pub struct AwsNetworkImportData {
pub vpc_id: Option<String>,
pub cidr_block: Option<String>,
pub internet_gateway_id: Option<String>,
pub nat_gateway_id: Option<String>,
pub eip_allocation_id: Option<String>,
#[serde(default)]
pub egress_public_ips: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sandbox_network: Option<AwsSandboxNetwork>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids")]
pub public_subnet_ids: Vec<String>,
#[serde(deserialize_with = "crate::network_ids::deserialize_ids")]
pub private_subnet_ids: Vec<String>,
pub public_route_table_id: Option<String>,
pub private_route_table_id: Option<String>,
#[cfg_attr(
feature = "jsonschema",
schemars(skip_serializing_if = "Option::is_none")
)]
#[serde(
default,
deserialize_with = "crate::network_ids::deserialize_optional_id"
)]
pub security_group_id: Option<String>,
pub availability_zones: Vec<String>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub subnets_by_failure_domain: BTreeMap<String, AwsFailureDomainSubnets>,
#[serde(deserialize_with = "crate::import::data::deserialize_bool_from_bool_or_string")]
pub is_byo_vpc: bool,
}