use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RunnerContainerSpec {
pub name: String,
pub image: String,
pub gpus: GpuSelection,
pub cpus: Option<u32>,
pub memory_gb: Option<u32>,
pub env: Vec<(String, String)>,
pub command: ContainerCommand,
#[serde(default)]
pub privileged: bool,
#[serde(default)]
pub mount_docker_socket: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum GpuSelection {
None,
All,
Count(u32),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ContainerCommand {
Script(String),
Argv(Vec<String>),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContainerInfo {
pub name: String,
pub state: String,
}