docker-client-async 0.1.0

A modern async/await Docker client written in Rust.
Documentation
/*
 * Copyright 2020 Damian Peckett <damian@pecke.tt>.
 * Copyright 2013-2018 Docker, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

use serde::Deserialize;
use std::collections::HashMap;

#[derive(Clone, Debug, Deserialize)]
pub struct PidsStats {
    pub current: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct ThrottlingDataStats {
    pub periods: Option<u64>,
    pub throttled_periods: Option<u64>,
    pub throttled_time: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct CpuUsageStats {
    pub total_usage: Option<u64>,
    pub percpu_usage: Option<Vec<u64>>,
    pub usage_in_kernelmode: Option<u64>,
    pub usage_in_usermode: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct CpuStats {
    pub cpu_usage: Option<CpuUsageStats>,
    pub system_cpu_usage: Option<u64>,
    pub online_cpus: Option<u64>,
    pub throttling_data: Option<ThrottlingDataStats>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct BlkioStatEntry {
    pub major: Option<u64>,
    pub minor: Option<u64>,
    pub op: Option<String>,
    pub value: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct BlkioStats {
    pub io_service_bytes_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_serviced_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_queue_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_service_time_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_wait_time_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_merged_recursive: Option<Vec<BlkioStatEntry>>,
    pub io_time_recursive: Option<Vec<BlkioStatEntry>>,
    pub sectors_recursive: Option<Vec<BlkioStatEntry>>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct DetailedMemoryStats {
    pub active_anon: Option<u64>,
    pub active_file: Option<u64>,
    pub cache: Option<u64>,
    pub dirty: Option<u64>,
    pub hierarchical_memory_limit: Option<u64>,
    pub hierarchical_memsw_limit: Option<u64>,
    pub inactive_anon: Option<u64>,
    pub inactive_file: Option<u64>,
    pub mapped_file: Option<u64>,
    pub pgfault: Option<u64>,
    pub pgmajfault: Option<u64>,
    pub pgpgin: Option<u64>,
    pub pgpgout: Option<u64>,
    pub rss: Option<u64>,
    pub rss_huge: Option<u64>,
    pub swap: Option<u64>,
    pub total_active_anon: Option<u64>,
    pub total_active_file: Option<u64>,
    pub total_cache: Option<u64>,
    pub total_dirty: Option<u64>,
    pub total_inactive_anon: Option<u64>,
    pub total_inactive_file: Option<u64>,
    pub total_mapped_file: Option<u64>,
    pub total_pgfault: Option<u64>,
    pub total_pgmajfault: Option<u64>,
    pub total_pgpgin: Option<u64>,
    pub total_pgpgout: Option<u64>,
    pub total_rss: Option<u64>,
    pub total_rss_huge: Option<u64>,
    pub total_swap: Option<u64>,
    pub total_unevictable: Option<u64>,
    pub total_writeback: Option<u64>,
    pub unevictable: Option<u64>,
    pub writeback: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct MemoryStats {
    pub usage: Option<u64>,
    pub max_usage: Option<u64>,
    pub failcnt: Option<u64>,
    pub limit: Option<u64>,
    pub stats: Option<DetailedMemoryStats>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct NetworkStats {
    pub rx_bytes: Option<u64>,
    pub rx_packets: Option<u64>,
    pub rx_errors: Option<u64>,
    pub rx_dropped: Option<u64>,
    pub tx_bytes: Option<u64>,
    pub tx_packets: Option<u64>,
    pub tx_errors: Option<u64>,
    pub tx_dropped: Option<u64>,
}

#[derive(Clone, Debug, Deserialize)]
pub struct Stats {
    pub read: Option<String>,
    pub preread: Option<String>,
    pub networks: Option<HashMap<String, NetworkStats>>,
    pub memory_stats: Option<MemoryStats>,
    pub blkio_stats: Option<BlkioStats>,
    pub cpu_stats: Option<CpuStats>,
    pub num_procs: Option<u64>,
    pub precpu_stats: Option<CpuStats>,
    pub pids_stats: Option<PidsStats>,
}