podman_client/models/podman/containers/
stats.rs1use 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}