podman_client/models/podman/common/
linux_resources.rs

1use core::fmt;
2use std::collections::HashMap;
3
4use serde::{Deserialize, Serialize};
5
6use crate::models::podman::common::{
7    linux_device_cgroup::LinuxDeviceCgroup, linux_throttle_device::LinuxThrottleDevice,
8    linux_weight_device::LinuxWeightDevice,
9};
10
11#[derive(Deserialize, Serialize, Default)]
12#[serde(rename_all = "camelCase")]
13pub struct LinuxResources {
14    #[serde(rename = "blockIO")]
15    pub block_io: Option<LinuxResourcesBlockIo>,
16    pub cpu: Option<LinuxResourcesCpu>,
17    pub devices: Option<Vec<LinuxDeviceCgroup>>,
18    pub hugepage_limits: Option<Vec<LinuxResourcesHugepageLimit>>,
19    pub memory: Option<LinuxResourcesMemory>,
20    pub network: Option<LinuxResourcesNetwork>,
21    pub pids: Option<LinuxResourcesPids>,
22    pub rdma: Option<HashMap<String, LinuxResourcesRdma>>,
23    pub unified: Option<HashMap<String, String>>,
24}
25
26impl fmt::Debug for LinuxResources {
27    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
29        f.write_str(&json)
30    }
31}
32
33#[derive(Deserialize, Serialize, Default)]
34#[serde(rename_all = "camelCase")]
35pub struct LinuxResourcesBlockIo {
36    pub leaf_weight: Option<u16>,
37    pub throttle_read_bps_device: Option<Vec<LinuxThrottleDevice>>,
38    #[serde(rename = "throttleReadIOPSDevice")]
39    pub throttle_read_iops_device: Option<Vec<LinuxThrottleDevice>>,
40    pub throttle_write_bps_device: Option<Vec<LinuxThrottleDevice>>,
41    #[serde(rename = "throttleWriteIOPSDevice")]
42    pub throttle_write_iops_device: Option<Vec<LinuxThrottleDevice>>,
43    pub weight: Option<u16>,
44    #[serde(rename = "weight_device")]
45    pub weight_device: Option<Vec<LinuxWeightDevice>>,
46}
47
48#[derive(Deserialize, Serialize, Default)]
49#[serde(rename_all = "camelCase")]
50pub struct LinuxResourcesCpu {
51    pub burst: Option<u64>,
52    pub cpus: Option<String>,
53    pub idle: Option<i64>,
54    pub mems: Option<String>,
55    pub period: Option<u64>,
56    pub quota: Option<i64>,
57    pub realtime_period: Option<u64>,
58    pub realtime_runtime: Option<i64>,
59    pub shares: Option<u64>,
60}
61
62#[derive(Deserialize, Serialize, Default)]
63#[serde(rename_all = "camelCase")]
64pub struct LinuxResourcesHugepageLimit {
65    pub limit: Option<u64>,
66    pub page_size: Option<String>,
67}
68
69#[derive(Deserialize, Serialize, Default)]
70#[serde(rename_all = "camelCase")]
71pub struct LinuxResourcesMemory {
72    pub check_before_update: Option<bool>,
73    #[serde(rename = "disableOOMKiller")]
74    pub disable_oom_killer: Option<bool>,
75    pub kernel: Option<i64>,
76    #[serde(rename = "kernelTCP")]
77    pub kernel_tcp: Option<i64>,
78    pub limit: Option<i64>,
79    pub reservation: Option<i64>,
80    pub swap: Option<i64>,
81    pub swappiness: Option<i64>,
82    pub use_hierarchy: Option<bool>,
83}
84
85#[derive(Deserialize, Serialize, Default)]
86pub struct LinuxResourcesNetwork {
87    #[serde(rename = "classID")]
88    pub class_id: Option<u32>,
89    pub priorities: Option<Vec<LinuxResourcesNetworkPriority>>,
90}
91
92#[derive(Deserialize, Serialize, Default)]
93pub struct LinuxResourcesNetworkPriority {
94    pub name: Option<String>,
95    pub priority: Option<u32>,
96}
97
98#[derive(Deserialize, Serialize)]
99pub struct LinuxResourcesPids {
100    limit: i64,
101}
102
103#[derive(Deserialize, Serialize, Default)]
104#[serde(rename_all = "camelCase")]
105pub struct LinuxResourcesRdma {
106    pub hca_handles: Option<u32>,
107    pub hca_objects: Option<u32>,
108}