use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct GuestConfig {
pub cpu_kind: Option<CpuKind>,
pub cpus: Option<u64>,
pub gpu_kind: Option<GpuKind>,
pub gpus: Option<u64>,
pub memory_mb: Option<u64>,
pub kernel_args: Option<Vec<String>>,
}
impl Default for GuestConfig {
fn default() -> Self {
Self {
cpu_kind: Some(CpuKind::Shared),
cpus: Some(1),
gpu_kind: None,
gpus: None,
memory_mb: Some(256),
kernel_args: None,
}
}
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum CpuKind {
Shared,
Performance,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum GpuKind {
A10,
L40S,
A10040GPCIe,
A10080GSXM,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RestartPolicy {
pub gpu_bid_price: Option<f64>,
pub max_retries: Option<u32>,
pub policy: RestartPolicyEnum,
}
impl Default for RestartPolicy {
fn default() -> Self {
Self {
gpu_bid_price: None,
max_retries: None,
policy: RestartPolicyEnum::No,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "lowercase")]
pub enum RestartPolicyEnum {
No,
Always,
OnFailure,
SpotPrice,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct FileConfig {
pub guest_path: String,
pub mode: Option<u32>,
pub raw_value: Option<String>,
pub secret_name: Option<String>,
}