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: EventType,
pub id: String,
#[serde(rename = "data")]
pub stats: Option<Stats>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Stats {
pub cpu: Cpu,
pub memory: Memory,
pub pids: Pids,
#[serde(rename = "blkio")]
pub block_io: BlkIO,
#[serde(rename = "hugetlb")]
pub huge_tlb: HugeTLB,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HugeTLB {
pub usage: Option<u64>,
pub max: Option<u64>,
#[serde(rename = "failcnt")]
pub fail_count: 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 Pids {
pub current: Option<u64>,
pub limit: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Throttling {
pub periods: Option<u64>,
#[serde(rename = "throttledPeriods")]
pub throtted_periods: Option<u64>,
#[serde(rename = "throttledTime")]
pub throtted_time: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CpuUsage {
pub total: Option<u64>,
pub per_cpu: Option<Vec<u64>>,
pub kernel: u64,
pub user: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Cpu {
pub usage: Option<u64>,
pub throttling: Option<Throttling>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemoryEntry {
pub limit: u64,
pub usage: Option<u64>,
pub max: Option<u64>,
#[serde(rename = "failcnt")]
pub fail_count: 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>>,
}