use super::*;
#[derive(Debug, Args)]
pub struct CreateVpc {
#[arg(long)]
cidr_block: Option<String>,
#[arg(long)]
amazon_provided_ipv6_cidr_block: Option<bool>,
#[arg(long)]
ipv6_pool: Option<String>,
#[arg(long)]
ipv6_cidr_block: Option<String>,
#[arg(long)]
ipv4_ipam_pool_id: Option<String>,
#[arg(long)]
ipv4_netmask_length: Option<i32>,
#[arg(long)]
ipv6_ipam_pool_id: Option<String>,
#[arg(long)]
ipv6_netmask_length: Option<i32>,
#[arg(long)]
dry_run: Option<bool>,
#[arg(long,
// value_parser = ["default", "dedicated", "host"]
value_parser = clap::value_parser!(types::Tenancy),
)]
instance_tenancy: Option<types::Tenancy>,
#[arg(long)]
ipv6_cidr_block_network_border_group: Option<String>,
#[arg(long, value_parser = parsers::ec2::vpc::parse_tags, num_args = 1..)]
tag_specifications: Option<Vec<types::TagSpecification>>,
#[arg(long)]
cli_input_json: Option<String>,
}
impl CreateVpc {
pub(crate) async fn execute(self, config: &Config) -> Ec2Result {
let vpc = config
.ec2()
.create_vpc()
.set_cidr_block(self.cidr_block)
.set_amazon_provided_ipv6_cidr_block(self.amazon_provided_ipv6_cidr_block)
.set_ipv6_pool(self.ipv6_pool)
.set_ipv6_cidr_block(self.ipv6_cidr_block)
.set_ipv4_ipam_pool_id(self.ipv4_ipam_pool_id)
.set_ipv4_netmask_length(self.ipv4_netmask_length)
.set_ipv6_ipam_pool_id(self.ipv6_ipam_pool_id)
.set_ipv6_netmask_length(self.ipv6_netmask_length)
.set_dry_run(self.dry_run)
.set_instance_tenancy(self.instance_tenancy)
.set_tag_specifications(self.tag_specifications)
.send()
.await?
.vpc;
Ok(Box::new(vpc))
}
}