podman_client/models/podman/containers/
stats.rs

1use core::fmt;
2use std::collections::HashMap;
3
4use serde::{Deserialize, Serialize};
5
6pub struct ContainerStatsOptions<'a> {
7    pub containers: Option<Vec<&'a str>>,
8    pub interval: Option<i64>,
9    pub stream: Option<bool>,
10}
11
12#[derive(Deserialize, Serialize)]
13#[serde(rename_all = "PascalCase")]
14pub struct ContainerStats {
15    #[serde(rename = "AvgCPU")]
16    pub avg_cpu: f64,
17    pub block_input: u64,
18    pub block_output: u64,
19    #[serde(rename = "ContainerID")]
20    pub container_id: String,
21    #[serde(rename = "CPU")]
22    pub cpu: f64,
23    #[serde(rename = "CPUNano")]
24    pub cpu_nano: u64,
25    #[serde(rename = "CPUSystemNano")]
26    pub cpu_system_nano: u64,
27    pub duration: u64,
28    pub mem_limit: u64,
29    pub mem_perc: f64,
30    pub mem_usage: u64,
31    pub name: String,
32    pub network: HashMap<String, ContainerStatsNetwork>,
33    #[serde(rename = "PerCPU")]
34    pub per_cpu: Vec<u64>,
35    #[serde(rename = "PIDs")]
36    pub pids: u64,
37    pub system_nano: u64,
38    pub up_time: u64,
39}
40
41impl fmt::Debug for ContainerStats {
42    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
44        f.write_str(&json)
45    }
46}
47
48#[derive(Deserialize, Serialize)]
49#[serde(rename_all = "PascalCase")]
50pub struct ContainerStatsNetwork {
51    pub rx_bytes: u64,
52    pub rx_dropped: u64,
53    pub rx_errors: u64,
54    pub rx_packets: u64,
55    pub tx_bytes: u64,
56    pub tx_dropped: u64,
57    pub tx_errors: u64,
58    pub tx_packets: u64,
59}