use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
pub struct Dashboard {
pub generated_at_unix_ms: u64,
pub cpu_count: usize,
pub containers: Vec<ContainerMetrics>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ContainerMetrics {
pub id: String,
pub name: String,
pub image: String,
pub state: ContainerState,
pub status: String,
pub health: HealthState,
pub stack: Option<String>,
pub cpu_percent: Option<f64>,
pub mem_used: Option<u64>,
pub mem_limit: Option<u64>,
pub net_rx_bps: Option<f64>,
pub net_tx_bps: Option<f64>,
pub disk_read_bps: Option<f64>,
pub disk_write_bps: Option<f64>,
pub ports: Vec<Port>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct Port {
pub private: u16,
pub public: Option<u16>,
pub proto: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum ContainerState {
Created,
Running,
Paused,
Restarting,
Exited,
Removing,
Dead,
Stopping,
Unknown,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum HealthState {
Healthy,
Unhealthy,
Starting,
None,
}