use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct Box {
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<usize>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct User {
#[serde(skip_serializing_if = "Option::is_none")]
pub uid: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gid: Option<u32>,
#[serde(rename = "additionalGids")]
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_gids: Option<Vec<u32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub bounding: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inheritable: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permitted: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ambient: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct POSIXRlimit {
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub limit_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hard: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub soft: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Process {
#[serde(skip_serializing_if = "Option::is_none")]
pub terminal: Option<bool>,
#[serde(rename = "consoleSize")]
#[serde(skip_serializing_if = "Option::is_none")]
pub console_size: Option<Box>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<User>,
#[serde(skip_serializing_if = "Option::is_none")]
pub args: Option<Vec<String>>,
#[serde(rename = "commandLine")]
#[serde(skip_serializing_if = "Option::is_none")]
pub command_line: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub env: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cwd: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<LinuxCapabilities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rlimits: Option<Vec<POSIXRlimit>>,
#[serde(rename = "noNewPrivileges")]
#[serde(skip_serializing_if = "Option::is_none")]
pub no_new_privileges: Option<bool>,
#[serde(rename = "apparmorProfile")]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_armor_profile: Option<String>,
#[serde(rename = "oomScoreAdj")]
#[serde(skip_serializing_if = "Option::is_none")]
pub oom_score_adj: Option<usize>,
#[serde(rename = "selinuxLabel")]
#[serde(skip_serializing_if = "Option::is_none")]
pub selinux_label: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxDeviceCgroup {
#[serde(skip_serializing_if = "Option::is_none")]
pub allow: Option<bool>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub device_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub major: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minor: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub access: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxMemory {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reservation: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub swap: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kernel: Option<i64>,
#[serde(rename = "kernelTCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub kernel_tcp: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub swappiness: Option<u64>,
#[serde(rename = "disableOOMKiller")]
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_oom_killer: Option<bool>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxCPU {
#[serde(skip_serializing_if = "Option::is_none")]
pub shares: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quota: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub period: Option<u64>,
#[serde(rename = "realtimeRuntime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub realtime_runtime: Option<i64>,
#[serde(rename = "realtimePeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub realtime_period: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cpus: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mems: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxPids {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxThrottleDevice {
#[serde(skip_serializing_if = "Option::is_none")]
pub major: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minor: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rate: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxWeightDevice {
#[serde(skip_serializing_if = "Option::is_none")]
pub major: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minor: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weight: Option<u16>,
#[serde(rename = "leafWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
pub leaf_weight: Option<u16>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxBlockIO {
#[serde(skip_serializing_if = "Option::is_none")]
pub weight: Option<u16>,
#[serde(rename = "leafWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
pub leaf_weight: Option<u16>,
#[serde(rename = "weightDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub weight_device: Option<Vec<LinuxWeightDevice>>,
#[serde(rename = "throttleReadBpsDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub throttle_read_bps_device: Option<Vec<LinuxThrottleDevice>>,
#[serde(rename = "throttleWriteBpsDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub throttle_write_bps_device: Option<Vec<LinuxThrottleDevice>>,
#[serde(rename = "throttleReadIOPSDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub throttle_read_iops_device: Option<Vec<LinuxThrottleDevice>>,
#[serde(rename = "throttleWriteIOPSDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub throttle_write_iops_device: Option<Vec<LinuxThrottleDevice>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxHugepageLimit {
#[serde(rename = "pageSize")]
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxInterfacePriority {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priority: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxNetwork {
#[serde(rename = "classID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub class_id: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priorities: Option<Vec<LinuxInterfacePriority>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxRdma {
#[serde(rename = "hcaHandles")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hca_handles: Option<u32>,
#[serde(rename = "hcaObjects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hca_objects: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinuxResources {
#[serde(skip_serializing_if = "Option::is_none")]
pub devices: Option<Vec<LinuxDeviceCgroup>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory: Option<LinuxMemory>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu: Option<LinuxCPU>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pids: Option<LinuxPids>,
#[serde(rename = "blockIO")]
#[serde(skip_serializing_if = "Option::is_none")]
pub block_io: Option<LinuxBlockIO>,
#[serde(rename = "hugepageLimits")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hugepage_limits: Option<Vec<LinuxHugepageLimit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<LinuxNetwork>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rdma: Option<HashMap<String, LinuxRdma>>,
}