use super::{EndpointSettings, PortBinding};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ContainerSummary {
pub id: String,
pub names: Vec<String>,
pub image: String,
pub image_id: String,
pub command: String,
pub created: i64,
pub state: String,
pub status: String,
pub ports: Vec<Port>,
pub labels: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size_rw: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size_root_fs: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_settings: Option<SummaryNetworkSettings>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mounts: Option<Vec<MountPoint>>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Port {
pub private_port: u16,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_port: Option<u16>,
#[serde(rename = "Type")]
pub port_type: String,
#[serde(rename = "IP", skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct SummaryNetworkSettings {
pub networks: HashMap<String, EndpointSettings>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct MountPoint {
#[serde(rename = "Type")]
pub mount_type: String,
pub source: String,
pub destination: String,
pub mode: String,
#[serde(rename = "RW")]
pub rw: bool,
pub propagation: String,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ContainerCreateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub domainname: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stdin: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stdout: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attach_stderr: Option<bool>,
#[allow(clippy::zero_sized_map_values)]
#[serde(skip_serializing_if = "Option::is_none")]
pub exposed_ports: Option<HashMap<String, HashMap<(), ()>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tty: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub open_stdin: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stdin_once: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub env: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cmd: Option<Vec<String>>,
pub image: String,
#[allow(clippy::zero_sized_map_values)]
#[serde(skip_serializing_if = "Option::is_none")]
pub volumes: Option<HashMap<String, HashMap<(), ()>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub working_dir: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entrypoint: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub labels: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_signal: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_timeout: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub host_config: Option<HostConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub networking_config: Option<NetworkingConfig>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct HostConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub port_bindings: Option<HashMap<String, Vec<PortBinding>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binds: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_remove: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_swap: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_shares: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_period: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cpu_quota: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub restart_policy: Option<RestartPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub privileged: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pid_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ipc_mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub readonly_rootfs: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extra_hosts: Option<Vec<String>>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct NetworkingConfig {
pub endpoints_config: HashMap<String, EndpointSettings>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct RestartPolicy {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub maximum_retry_count: Option<i32>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ContainerCreateResponse {
pub id: String,
pub warnings: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ContainerInspectResponse {
pub id: String,
pub created: String,
pub path: String,
pub args: Vec<String>,
pub state: ContainerState,
pub image: String,
pub name: String,
pub restart_count: i32,
pub config: super::ContainerConfig,
pub host_config: HostConfig,
pub network_settings: NetworkSettings,
pub mounts: Vec<MountPoint>,
}
#[allow(clippy::struct_excessive_bools)]
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ContainerState {
pub status: String,
pub running: bool,
pub paused: bool,
pub restarting: bool,
#[serde(rename = "OOMKilled")]
pub oom_killed: bool,
pub dead: bool,
pub pid: i32,
pub exit_code: i32,
pub error: String,
pub started_at: String,
pub finished_at: String,
}
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct NetworkSettings {
pub bridge: String,
pub gateway: String,
#[serde(rename = "IPAddress")]
pub ip_address: String,
#[serde(rename = "IPPrefixLen")]
pub ip_prefix_len: i32,
pub mac_address: String,
pub ports: HashMap<String, Option<Vec<PortBinding>>>,
pub networks: HashMap<String, EndpointSettings>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct WaitResponse {
pub status_code: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<WaitError>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct WaitError {
pub message: String,
}