use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all(serialize = "lowercase", deserialize = "lowercase"))]
pub enum EventType {
Stats,
OOM,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Event {
#[serde(rename = "type")]
pub event_type: Option<EventType>,
pub id: Option<String>,
#[serde(rename = "data")]
pub stats: Option<Stats>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Stats {
pub cpu: Option<Cpu>,
pub memory: Option<Memory>,
pub pids: Option<Pids>,
#[serde(rename = "blkio")]
pub blk_io: Option<Blkio>,
#[serde(rename = "hugetlb")]
pub huge_tlb: Option<HashMap<String, HugeTlb>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CpuUsage {
pub total: Option<u64>,
pub percpu: Option<Vec<u64>>,
pub kernel: Option<u64>,
pub user: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Throttling {
pub periods: Option<u64>,
#[serde(rename = "throttledPeriods")]
pub throttled_periods: Option<u64>,
#[serde(rename = "throttledTime")]
pub throttled_time: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Cpu {
pub usage: Option<CpuUsage>,
pub throttling: Option<Throttling>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemoryEntry {
pub limit: Option<u64>,
pub usage: Option<u64>,
pub max: Option<u64>,
#[serde(rename = "failcnt")]
pub fail_count: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Memory {
pub cache: Option<u64>,
pub usage: Option<MemoryEntry>,
pub swap: Option<MemoryEntry>,
pub kernel: Option<MemoryEntry>,
#[serde(rename = "kernelTCP")]
pub kernel_tcp: Option<MemoryEntry>,
pub raw: Option<HashMap<String, u64>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Pids {
pub current: Option<u64>,
pub limit: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlkioEntry {
pub major: Option<u64>,
pub minor: Option<u64>,
pub op: Option<String>,
pub value: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Blkio {
#[serde(rename = "ioServiceBytesRecursive")]
pub io_service_bytes_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioServicedRecursive")]
pub io_serviced_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioQueueRecursive")]
pub io_queued_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioServiceTimeRecursive")]
pub io_service_time_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioWaitTimeRecursive")]
pub io_wait_time_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioMergedRecursive")]
pub io_merged_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "ioTimeRecursive")]
pub io_time_recursive: Option<Vec<BlkioEntry>>,
#[serde(rename = "sectorsRecursive")]
pub sectors_recursive: Option<Vec<BlkioEntry>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HugeTlb {
pub usage: Option<u64>,
pub max: Option<u64>,
#[serde(rename = "failcnt")]
pub fail_count: Option<u64>,
}