podman-client 0.0.2

A native Rust client for the Podman REST API over Unix sockets
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

use crate::models::podman::common::{
    blkio_weight_device::BlkioWeightDevice,
    linux_device_cgroup::LinuxDeviceCgroup,
    linux_resources::{
        LinuxResourcesBlockIo, LinuxResourcesCpu, LinuxResourcesHugepageLimit,
        LinuxResourcesMemory, LinuxResourcesNetwork, LinuxResourcesPids, LinuxResourcesRdma,
    },
};

#[derive(Default)]
pub struct ContainerUpdateConfigurationOptions<'a> {
    pub name: &'a str,
    pub restart_policy: Option<&'a str>,
    pub restart_retries: Option<i64>,
    pub request: Option<ContainerUpdateConfigurationRequest>,
}

#[derive(Serialize, Default)]
pub struct ContainerUpdateConfigurationRequest {
    #[serde(rename = "BlkIOWeightDevice")]
    pub blkio_weight_device: Option<Vec<BlkioWeightDevice>>,
    #[serde(rename = "blockIO")]
    pub block_io: Option<LinuxResourcesBlockIo>,
    pub cpu: Option<LinuxResourcesCpu>,
    #[serde(rename = "DeviceReadBPs")]
    pub device_read_bps: Option<Vec<ContainerUpdateConfigurationRequestThrottleDevice>>,
    #[serde(rename = "DeviceReadIOPs")]
    pub device_read_iops: Option<Vec<ContainerUpdateConfigurationRequestThrottleDevice>>,
    pub devices: Option<Vec<LinuxDeviceCgroup>>,
    #[serde(rename = "DeviceWriteBPs")]
    pub device_write_bps: Option<Vec<ContainerUpdateConfigurationRequestThrottleDevice>>,
    #[serde(rename = "DeviceWriteIOPs")]
    pub device_write_iops: Option<Vec<ContainerUpdateConfigurationRequestThrottleDevice>>,
    #[serde(rename = "Env")]
    pub env: Option<Vec<String>>,
    pub health_cmd: Option<String>,
    pub health_interval: Option<String>,
    pub health_log_destination: Option<String>,
    pub health_max_log_count: Option<u64>,
    pub health_max_log_size: Option<u64>,
    pub health_on_failure: Option<String>,
    pub health_retries: Option<u64>,
    pub health_start_period: Option<String>,
    pub health_startup_cmd: Option<String>,
    pub health_startup_interval: Option<String>,
    pub health_startup_retries: Option<u64>,
    pub health_startup_success: Option<u64>,
    pub health_startup_timeout: Option<String>,
    pub health_timeout: Option<String>,
    #[serde(rename = "hugepageLimits")]
    pub hugepage_limits: Option<Vec<LinuxResourcesHugepageLimit>>,
    pub memory: Option<LinuxResourcesMemory>,
    pub network: Option<LinuxResourcesNetwork>,
    pub no_healthcheck: Option<bool>,
    pub pids: Option<LinuxResourcesPids>,
    pub rdma: Option<HashMap<String, LinuxResourcesRdma>>,
    pub unified: Option<HashMap<String, String>>,
    #[serde(rename = "UnsetEnv")]
    pub unset_env: Option<Vec<String>>,
}

#[derive(Serialize)]
pub struct ContainerUpdateConfigurationRequestThrottleDevice {
    pub path: String,
    pub rate: u64,
}

#[derive(Deserialize, Serialize)]
#[serde(rename_all = "UPPERCASE")]
pub struct ContainerUpdateConfiguration {
    pub id: String,
}