use crate::InstanceType;
pub struct Ec2InstanceDefinition {
pub(crate) instance_type: InstanceType,
pub(crate) volume_size_gb: u32,
pub(crate) network_interface_count: u32,
pub(crate) os: InstanceOs,
pub(crate) ami: Option<String>,
}
impl Ec2InstanceDefinition {
pub fn new(instance_type: InstanceType) -> Self {
Ec2InstanceDefinition {
instance_type,
volume_size_gb: 8,
network_interface_count: 1,
os: InstanceOs::Ubuntu22_04,
ami: None,
}
}
pub fn volume_size_gigabytes(mut self, size_gb: u32) -> Self {
self.volume_size_gb = size_gb;
self
}
pub fn network_interface_count(mut self, count: u32) -> Self {
self.network_interface_count = count;
self
}
pub fn os(mut self, os: InstanceOs) -> Self {
self.os = os;
self
}
pub fn override_ami(mut self, ami: Option<String>) -> Self {
self.ami = ami;
self
}
}
#[derive(Clone, Copy)]
#[non_exhaustive]
pub enum InstanceOs {
Ubuntu20_04,
Ubuntu22_04,
}