diff options
Diffstat (limited to 'src/rep.rs')
-rw-r--r-- | src/rep.rs | 559 |
1 files changed, 0 insertions, 559 deletions
diff --git a/src/rep.rs b/src/rep.rs deleted file mode 100644 index ededa6e..0000000 --- a/src/rep.rs +++ /dev/null @@ -1,559 +0,0 @@ -//! Rust representations of docker json structures - -#[cfg(feature = "chrono")] -use chrono::{DateTime, Utc}; -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SearchResult { - pub description: String, - pub is_official: bool, - pub is_automated: bool, - pub name: String, - pub star_count: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Image { - #[cfg(feature = "chrono")] - #[serde(deserialize_with = "datetime_from_unix_timestamp")] - pub created: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created: u64, - pub id: String, - pub parent_id: String, - pub labels: Option<HashMap<String, String>>, - pub repo_tags: Option<Vec<String>>, - pub repo_digests: Option<Vec<String>>, - pub virtual_size: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct ImageDetails { - pub architecture: String, - pub author: String, - pub comment: String, - pub config: Config, - #[cfg(feature = "chrono")] - pub created: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created: String, - pub docker_version: String, - pub id: String, - pub os: String, - pub parent: String, - pub repo_tags: Option<Vec<String>>, - pub repo_digests: Option<Vec<String>>, - pub size: u64, - pub virtual_size: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Container { - #[cfg(feature = "chrono")] - #[serde(deserialize_with = "datetime_from_unix_timestamp")] - pub created: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created: u64, - pub command: String, - pub id: String, - pub image: String, - #[serde(rename = "ImageID")] - pub image_id: String, - pub labels: HashMap<String, String>, - pub names: Vec<String>, - pub ports: Vec<Port>, - pub state: String, - pub status: String, - pub size_rw: Option<u64>, - pub size_root_fs: Option<u64>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct ContainerDetails { - pub app_armor_profile: String, - pub args: Vec<String>, - pub config: Config, - #[cfg(feature = "chrono")] - pub created: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created: String, - pub driver: String, - // pub ExecIDs: ?? - pub host_config: HostConfig, - pub hostname_path: String, - pub hosts_path: String, - pub log_path: String, - pub id: String, - pub image: String, - pub mount_label: String, - pub name: String, - pub network_settings: NetworkSettings, - pub path: String, - pub process_label: String, - pub resolv_conf_path: String, - pub restart_count: u64, - pub state: State, - pub mounts: Vec<Mount>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Mount { - pub source: String, - pub destination: String, - pub mode: String, - #[serde(rename = "RW")] - pub rw: bool, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct State { - pub error: String, - pub exit_code: u64, - #[cfg(feature = "chrono")] - pub finished_at: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub finished_at: String, - #[serde(rename = "OOMKilled")] - pub oom_killed: bool, - pub paused: bool, - pub pid: u64, - pub restarting: bool, - pub running: bool, - #[cfg(feature = "chrono")] - pub started_at: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub started_at: String, - pub status: String, -} - -type PortDescription = HashMap<String, Option<Vec<HashMap<String, String>>>>; - -#[derive(Clone, Debug, 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: u64, - pub mac_address: String, - pub ports: Option<PortDescription>, - pub networks: HashMap<String, NetworkEntry>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct NetworkEntry { - #[serde(rename = "NetworkID")] - pub network_id: String, - #[serde(rename = "EndpointID")] - pub endpoint_id: String, - pub gateway: String, - #[serde(rename = "IPAddress")] - pub ip_address: String, - #[serde(rename = "IPPrefixLen")] - pub ip_prefix_len: u64, - #[serde(rename = "IPv6Gateway")] - pub ipv6_gateway: String, - #[serde(rename = "GlobalIPv6Address")] - pub global_ipv6_address: String, - #[serde(rename = "GlobalIPv6PrefixLen")] - pub global_ipv6_prefix_len: u64, - pub mac_address: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct HostConfig { - pub cgroup_parent: Option<String>, - #[serde(rename = "ContainerIDFile")] - pub container_id_file: String, - pub cpu_shares: Option<u64>, - pub cpuset_cpus: Option<String>, - pub memory: Option<u64>, - pub memory_swap: Option<i64>, - pub network_mode: String, - pub pid_mode: Option<String>, - pub port_bindings: Option<HashMap<String, Vec<HashMap<String, String>>>>, - pub privileged: bool, - pub publish_all_ports: bool, - pub readonly_rootfs: Option<bool>, /* pub RestartPolicy: ??? - * pub SecurityOpt: Option<???>, - * pub Ulimits: Option<???> - * pub VolumesFrom: Option<??/> */ -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Config { - pub attach_stderr: bool, - pub attach_stdin: bool, - pub attach_stdout: bool, - pub cmd: Option<Vec<String>>, - pub domainname: String, - pub entrypoint: Option<Vec<String>>, - pub env: Option<Vec<String>>, - pub exposed_ports: Option<HashMap<String, HashMap<String, String>>>, - pub hostname: String, - pub image: String, - pub labels: Option<HashMap<String, String>>, - // pub MacAddress: String, - pub on_build: Option<Vec<String>>, - // pub NetworkDisabled: bool, - pub open_stdin: bool, - pub stdin_once: bool, - pub tty: bool, - pub user: String, - pub working_dir: String, -} - -impl Config { - pub fn env(&self) -> HashMap<String, String> { - let mut map = HashMap::new(); - if let Some(ref vars) = self.env { - for e in vars { - let pair: Vec<&str> = e.split('=').collect(); - map.insert(pair[0].to_owned(), pair[1].to_owned()); - } - } - map - } -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Port { - pub ip: Option<String>, - pub private_port: u64, - pub public_port: Option<u64>, - #[serde(rename = "Type")] - pub typ: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Stats { - pub read: String, - pub networks: HashMap<String, Network>, - pub memory_stats: MemoryStats, - pub blkio_stats: BlkioStats, - pub cpu_stats: CpuStats, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Network { - pub rx_dropped: u64, - pub rx_bytes: u64, - pub rx_errors: u64, - pub tx_packets: u64, - pub tx_dropped: u64, - pub rx_packets: u64, - pub tx_errors: u64, - pub tx_bytes: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct IPAM { - pub driver: String, - pub config: Vec<HashMap<String, String>>, - pub options: Option<HashMap<String, String>>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct NetworkDetails { - pub name: String, - pub id: String, - pub scope: String, - pub driver: String, - #[serde(rename = "EnableIPv6")] - pub enable_ipv6: bool, - #[serde(rename = "IPAM")] - pub ipam: IPAM, - pub internal: bool, - pub attachable: bool, - pub containers: HashMap<String, NetworkContainerDetails>, - pub options: Option<HashMap<String, String>>, - pub labels: Option<HashMap<String, String>>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct NetworkContainerDetails { - #[serde(rename = "EndpointID")] - pub endpoint_id: String, - pub mac_address: String, - #[serde(rename = "IPv4Address")] - pub ipv4_address: String, - #[serde(rename = "IPv6Address")] - pub ipv6_address: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct NetworkCreateInfo { - pub id: String, - pub warning: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct MemoryStats { - pub max_usage: u64, - pub usage: u64, - pub failcnt: Option<u64>, - pub limit: u64, - pub stats: MemoryStat, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct MemoryStat { - pub total_pgmajfault: u64, - pub cache: u64, - pub mapped_file: u64, - pub total_inactive_file: u64, - pub pgpgout: u64, - pub rss: u64, - pub total_mapped_file: u64, - pub writeback: u64, - pub unevictable: u64, - pub pgpgin: u64, - pub total_unevictable: u64, - pub pgmajfault: u64, - pub total_rss: u64, - pub total_rss_huge: u64, - pub total_writeback: u64, - pub total_inactive_anon: u64, - pub rss_huge: u64, - pub hierarchical_memory_limit: u64, - pub hierarchical_memsw_limit: u64, - pub total_pgfault: u64, - pub total_active_file: u64, - pub active_anon: u64, - pub total_active_anon: u64, - pub total_pgpgout: u64, - pub total_cache: u64, - pub inactive_anon: u64, - pub active_file: u64, - pub pgfault: u64, - pub inactive_file: u64, - pub total_pgpgin: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct CpuStats { - pub cpu_usage: CpuUsage, - pub system_cpu_usage: u64, - pub throttling_data: ThrottlingData, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct CpuUsage { - pub percpu_usage: Vec<u64>, - pub usage_in_usermode: u64, - pub total_usage: u64, - pub usage_in_kernelmode: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct ThrottlingData { - pub periods: u64, - pub throttled_periods: u64, - pub throttled_time: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct BlkioStats { - pub io_service_bytes_recursive: Vec<BlkioStat>, - pub io_serviced_recursive: Vec<BlkioStat>, - pub io_queue_recursive: Vec<BlkioStat>, - pub io_service_time_recursive: Vec<BlkioStat>, - pub io_wait_time_recursive: Vec<BlkioStat>, - pub io_merged_recursive: Vec<BlkioStat>, - pub io_time_recursive: Vec<BlkioStat>, - pub sectors_recursive: Vec<BlkioStat>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct BlkioStat { - pub major: u64, - pub minor: u64, - pub op: String, - pub value: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Change { - pub kind: u64, - pub path: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Top { - pub titles: Vec<String>, - pub processes: Vec<Vec<String>>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Version { - pub version: String, - pub api_version: String, - pub git_commit: String, - pub go_version: String, - pub os: String, - pub arch: String, - pub kernel_version: String, - #[cfg(feature = "chrono")] - pub build_time: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub build_time: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Info { - pub containers: u64, - pub images: u64, - pub driver: String, - pub docker_root_dir: String, - pub driver_status: Vec<Vec<String>>, - #[serde(rename = "ID")] - pub id: String, - pub kernel_version: String, - // pub Labels: Option<???>, - pub mem_total: u64, - pub memory_limit: bool, - #[serde(rename = "NCPU")] - pub n_cpu: u64, - pub n_events_listener: u64, - pub n_goroutines: u64, - pub name: String, - pub operating_system: String, - // pub RegistryConfig:??? - pub swap_limit: bool, - pub system_time: Option<String>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct ContainerCreateInfo { - pub id: String, - pub warnings: Option<Vec<String>>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct History { - pub id: String, - #[cfg(feature = "chrono")] - #[serde(deserialize_with = "datetime_from_unix_timestamp")] - pub created: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created: u64, - pub created_by: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Exit { - pub status_code: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Event { - #[serde(rename = "Type")] - pub typ: String, - #[serde(rename = "Action")] - pub action: String, - #[serde(rename = "Actor")] - pub actor: Actor, - pub status: Option<String>, - pub id: Option<String>, - pub from: Option<String>, - #[cfg(feature = "chrono")] - #[serde(deserialize_with = "datetime_from_unix_timestamp")] - pub time: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub time: u64, - #[cfg(feature = "chrono")] - #[serde(deserialize_with = "datetime_from_nano_timestamp", rename = "timeNano")] - pub time_nano: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - #[serde(rename = "timeNano")] - pub time_nano: u64, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Actor { - #[serde(rename = "ID")] - pub id: String, - #[serde(rename = "Attributes")] - pub attributes: HashMap<String, String>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub enum Status { - Untagged(String), - Deleted(String), -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct VolumeCreateInfo { - pub name: String, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Volumes { - pub volumes: Option<Vec<Volume>>, - pub warnings: Option<Vec<String>>, -} - -#[derive(Clone, Debug, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Volume { - #[cfg(feature = "chrono")] - pub created_at: DateTime<Utc>, - #[cfg(not(feature = "chrono"))] - pub created_at: String, - pub driver: String, - pub labels: Option<HashMap<String, String>>, - pub name: String, - pub mountpoint: String, - pub options: Option<HashMap<String, String>>, - pub scope: String, -} - -#[cfg(feature = "chrono")] -fn datetime_from_unix_timestamp<'de, D>(deserializer: D) -> Result<DateTime<Utc>, D::Error> -where - D: serde::Deserializer<'de>, -{ - let timestamp = chrono::NaiveDateTime::from_timestamp(i64::deserialize(deserializer)?, 0); - Ok(DateTime::<Utc>::from_utc(timestamp, Utc)) -} - -#[cfg(feature = "chrono")] -fn datetime_from_nano_timestamp<'de, D>(deserializer: D) -> Result<DateTime<Utc>, D::Error> -where - D: serde::Deserializer<'de>, -{ - let timestamp_nano = u64::deserialize(deserializer)?; - let timestamp = chrono::NaiveDateTime::from_timestamp( - (timestamp_nano / 1_000_000_000) as i64, - (timestamp_nano % 1_000_000_000) as u32, - ); - Ok(DateTime::<Utc>::from_utc(timestamp, Utc)) -} |