use crate::types::blkio::{ThrottleDevice, WeightDevice};
use crate::types::host::{DeviceMapping, DeviceRequest, HostConfig, RestartPolicy, Ulimit};
use crate::types::network::{Address, NetworkingConfig};
use crate::types::port::{PortMap, PortSet};
use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct Container {
#[serde(rename = "Id")]
pub id: String,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "Names")]
#[serde(skip_serializing_if = "Option::is_none")]
pub names: Option<Vec<String>>,
#[serde(rename = "Image")]
pub image: String,
#[serde(rename = "ImageID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub image_id: Option<String>,
#[serde(rename = "Command")]
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<String>,
#[serde(rename = "Created")]
pub created: Value,
#[serde(rename = "Path")]
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(rename = "Args")]
#[serde(skip_serializing_if = "Option::is_none")]
pub args: Option<Vec<String>>,
#[serde(rename = "ResolvConfPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub resolv_conf_path: Option<String>,
#[serde(rename = "HostnamePath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname_path: Option<String>,
#[serde(rename = "HostsPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hosts_path: Option<String>,
#[serde(rename = "LogPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub log_path: Option<String>,
#[serde(rename = "RestartCount")]
#[serde(skip_serializing_if = "Option::is_none")]
pub restart_count: Option<i32>,
#[serde(rename = "Driver")]
#[serde(skip_serializing_if = "Option::is_none")]
pub driver: Option<String>,
#[serde(rename = "Platform")]
#[serde(skip_serializing_if = "Option::is_none")]
pub platform: Option<String>,
#[serde(rename = "MountLabel")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mount_label: Option<String>,
#[serde(rename = "ProcessLabel")]
#[serde(skip_serializing_if = "Option::is_none")]
pub process_label: Option<String>,
#[serde(rename = "AppArmorProfile")]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_armor_profile: Option<String>,
#[serde(rename = "ExecIDs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub exec_ids: Option<Vec<String>>,
#[serde(rename = "GraphDriver")]
#[serde(skip_serializing_if = "Option::is_none")]
pub graph_driver: Option<GraphDriverData>,
#[serde(rename = "Ports")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ports: Option<Vec<super::port::Port>>,
#[serde(rename = "SizeRw")]
#[serde(skip_serializing_if = "Option::is_none")]
pub size_rw: Option<i64>,
#[serde(rename = "SizeRootFs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub size_root_fs: Option<i64>,
#[serde(rename = "Labels")]
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "State")]
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<Value>,
#[serde(rename = "Status")]
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(rename = "HostConfig")]
#[serde(skip_serializing_if = "Option::is_none")]
pub host_config: Option<HostConfig>,
#[serde(rename = "NetworkSettings")]
#[serde(skip_serializing_if = "Option::is_none")]
pub network_settings: Option<NetworkSettings>,
#[serde(rename = "Mounts")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mounts: Option<Vec<super::mounts::MountPoint>>,
#[serde(rename = "Config")]
#[serde(skip_serializing_if = "Option::is_none")]
pub config: Option<ContainerConfig>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct NetworkSettings {
#[serde(rename = "Bridge")]
#[serde(skip_serializing_if = "Option::is_none")]
pub bridge: Option<String>,
#[serde(rename = "SandboxID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sandbox_id: Option<String>,
#[serde(rename = "HairpinMode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hairpin_mode: Option<bool>,
#[serde(rename = "LinkLocalIPv6Address")]
#[serde(skip_serializing_if = "Option::is_none")]
pub link_local_ipv6_address: Option<String>,
#[serde(rename = "LinkLocalIPv6PrefixLen")]
#[serde(skip_serializing_if = "Option::is_none")]
pub link_local_ipv6_prefix_len: Option<i32>,
#[serde(rename = "Ports")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ports: Option<PortMap>,
#[serde(rename = "SandboxKey")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sandbox_key: Option<String>,
#[serde(rename = "SecondaryIPAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub secondary_ip_addresses: Option<Vec<Address>>,
#[serde(rename = "SecondaryIPv6Addresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub secondary_ipv6_addresses: Option<Vec<Address>>,
#[serde(rename = "EndpointID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub endpoint_id: Option<String>,
#[serde(rename = "Gateway")]
#[serde(skip_serializing_if = "Option::is_none")]
pub gateway: Option<String>,
#[serde(rename = "GlobalIPv6Address")]
#[serde(skip_serializing_if = "Option::is_none")]
pub global_ipv6_address: Option<String>,
#[serde(rename = "GlobalIPv6PrefixLen")]
#[serde(skip_serializing_if = "Option::is_none")]
pub global_ipv6_prefix_len: Option<i32>,
#[serde(rename = "IPAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ip_address: Option<String>,
#[serde(rename = "IPPrefixLen")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ip_prefix_len: Option<i32>,
#[serde(rename = "IPv6Gateway")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ipv6_gateway: Option<String>,
#[serde(rename = "MacAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mac_address: Option<String>,
#[serde(rename = "Networks")]
#[serde(skip_serializing_if = "Option::is_none")]
pub networks: Option<HashMap<String, super::network::EndpointSettings>>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct ContainerConfig {
#[serde(rename = "Hostname")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(rename = "Domainname")]
#[serde(skip_serializing_if = "Option::is_none")]
pub domainname: Option<String>,
#[serde(rename = "User")]
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(rename = "AttachStdin")]
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stdin: Option<bool>,
#[serde(rename = "AttachStdout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stdout: Option<bool>,
#[serde(rename = "AttachStderr")]
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stderr: Option<bool>,
#[serde(rename = "ExposedPorts")]
#[serde(skip_serializing_if = "Option::is_none")]
pub exposed_ports: Option<PortSet>,
#[serde(rename = "Tty")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tty: Option<bool>,
#[serde(rename = "OpenStdin")]
#[serde(skip_serializing_if = "Option::is_none")]
pub open_stdin: Option<bool>,
#[serde(rename = "StdinOnce")]
#[serde(skip_serializing_if = "Option::is_none")]
pub stdin_once: Option<bool>,
#[serde(rename = "Env")]
#[serde(skip_serializing_if = "Option::is_none")]
pub env: Option<Vec<String>>,
#[serde(rename = "Cmd")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cmd: Option<Vec<String>>,
#[serde(rename = "Healthcheck")]
#[serde(skip_serializing_if = "Option::is_none")]
pub healthcheck: Option<HealthConfig>,
#[serde(rename = "ArgsEscaped")]
#[serde(skip_serializing_if = "Option::is_none")]
pub args_escaped: Option<bool>,
#[serde(rename = "Image")]
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<String>,
#[serde(rename = "Volumes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub volumes: Option<HashMap<String, Value>>,
#[serde(rename = "WorkingDir")]
#[serde(skip_serializing_if = "Option::is_none")]
pub working_dir: Option<String>,
#[serde(rename = "Entrypoint")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entrypoint: Option<Vec<String>>,
#[serde(rename = "NetworkDisabled")]
#[serde(skip_serializing_if = "Option::is_none")]
pub network_disabled: Option<bool>,
#[serde(rename = "MacAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mac_address: Option<String>,
#[serde(rename = "OnBuild")]
#[serde(skip_serializing_if = "Option::is_none")]
pub on_build: Option<Vec<String>>,
#[serde(rename = "Labels")]
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "StopSignal")]
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_signal: Option<String>,
#[serde(rename = "StopTimeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_timeout: Option<i32>,
#[serde(rename = "Shell")]
#[serde(skip_serializing_if = "Option::is_none")]
pub shell: Option<Vec<String>>,
#[serde(rename = "HostConfig")]
#[serde(skip_serializing_if = "Option::is_none")]
pub host_config: Option<HostConfig>,
#[serde(rename = "NetworkingConfig")]
#[serde(skip_serializing_if = "Option::is_none")]
pub networking_config: Option<NetworkingConfig>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct HealthConfig {
#[serde(rename = "Test")]
#[serde(skip_serializing_if = "Option::is_none")]
pub test: Option<Vec<String>>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_nanoseconds: Option<i64>,
#[serde(rename = "Timeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout_nanoseconds: Option<i64>,
#[serde(rename = "StartPeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub start_period_nanoseconds: Option<i64>,
#[serde(rename = "Retries")]
#[serde(skip_serializing_if = "Option::is_none")]
pub retries: Option<i32>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct UpdateConfig {
#[serde(rename = "CpuShares")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_shares: Option<i64>,
#[serde(rename = "Memory")]
#[serde(skip_serializing_if = "Option::is_none")]
pub memory: Option<i64>,
#[serde(rename = "NanoCPUs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub nano_cpus: Option<i64>,
#[serde(rename = "CgroupParent")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cgroup_parent: Option<String>,
#[serde(rename = "BlkioWeight")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_weight: Option<u16>,
#[serde(rename = "BlkioWeightDevice")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_weight_device: Option<Vec<WeightDevice>>,
#[serde(rename = "BlkioDeviceReadBps")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_device_read_bps: Option<Vec<ThrottleDevice>>,
#[serde(rename = "BlkioDeviceWriteBps")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_device_write_bps: Option<Vec<ThrottleDevice>>,
#[serde(rename = "BlkioDeviceReadIOps")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_device_read_iops: Option<Vec<ThrottleDevice>>,
#[serde(rename = "BlkioDeviceWriteIOps")]
#[serde(skip_serializing_if = "Option::is_none")]
pub blkio_device_write_iops: Option<Vec<ThrottleDevice>>,
#[serde(rename = "CpuPeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_period: Option<i64>,
#[serde(rename = "CpuQuota")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_quota: Option<i64>,
#[serde(rename = "CpuRealtimePeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_realtime_period: Option<i64>,
#[serde(rename = "CpuRealtimeRuntime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_realtime_runtime: Option<i64>,
#[serde(rename = "CpusetCpus")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpuset_cpus: Option<String>,
#[serde(rename = "CpusetMems")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpuset_mems: Option<String>,
#[serde(rename = "Devices")]
#[serde(skip_serializing_if = "Option::is_none")]
pub devices: Option<Vec<DeviceMapping>>,
#[serde(rename = "DeviceCgroupRules")]
#[serde(skip_serializing_if = "Option::is_none")]
pub device_cgroup_rules: Option<Vec<String>>,
#[serde(rename = "DeviceRequests")]
#[serde(skip_serializing_if = "Option::is_none")]
pub device_requests: Option<Vec<DeviceRequest>>,
#[serde(rename = "KernelMemory")]
#[serde(skip_serializing_if = "Option::is_none")]
pub kernel_memory: Option<i64>,
#[serde(rename = "KernelMemoryTCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub kernel_memory_tcp: Option<i64>,
#[serde(rename = "MemoryReservation")]
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_reservation: Option<i64>,
#[serde(rename = "MemorySwap")]
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_swap: Option<i64>,
#[serde(rename = "MemorySwappiness")]
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_swappiness: Option<i64>,
#[serde(rename = "OomKillDisable")]
#[serde(skip_serializing_if = "Option::is_none")]
pub oom_kill_disable: Option<bool>,
#[serde(rename = "PidsLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pids_limit: Option<i64>,
#[serde(rename = "Ulimits")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ulimits: Option<Vec<Ulimit>>,
#[serde(rename = "CpuCount")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_count: Option<i64>,
#[serde(rename = "CpuPercent")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_percent: Option<i64>,
#[serde(rename = "IOMaximumIOps")]
#[serde(skip_serializing_if = "Option::is_none")]
pub io_maximum_iops: Option<u64>,
#[serde(rename = "IOMaximumBandwidth")]
#[serde(skip_serializing_if = "Option::is_none")]
pub io_maximum_bandwidth: Option<u64>,
#[serde(rename = "RestartPolicy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub restart_policy: Option<RestartPolicy>,
}
pub enum WaitCondition {
NotRunning,
NextExit,
Removed,
}
impl ToString for WaitCondition {
fn to_string(&self) -> String {
match self {
WaitCondition::NotRunning => "not-running".into(),
WaitCondition::NextExit => "next-exit".into(),
WaitCondition::Removed => "removed".into(),
}
}
}
#[derive(Clone, Debug, Default, Deserialize, Serialize, Builder)]
#[builder(default, setter(into))]
pub struct GraphDriverData {
#[serde(rename = "Data")]
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<HashMap<String, String>>,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}