podman_client/models/podman/common/
linux_resources.rs1use 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}