podman-client 0.0.2

A native Rust client for the Podman REST API over Unix sockets
Documentation
use core::fmt;

use serde::{Deserialize, Serialize};

#[derive(Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
pub struct SystemDiskUsage {
    pub images_size: u64,
    pub images: Vec<SystemDiskUsageImage>,
    pub containers: Vec<SystemDiskUsageContainer>,
    pub volumes: Vec<SystemDiskUsageVolume>,
}

impl fmt::Debug for SystemDiskUsage {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
        f.write_str(&json)
    }
}

#[derive(Deserialize, Serialize)]
pub struct SystemDiskUsageImage {
    #[serde(rename = "Repository")]
    pub repository: String,

    #[serde(rename = "Tag")]
    pub tag: String,

    #[serde(rename = "ImageID")]
    pub image_id: String,

    #[serde(rename = "Created")]
    pub created: String,

    #[serde(rename = "Size")]
    pub size: u64,

    #[serde(rename = "SharedSize")]
    pub shared_size: u64,

    #[serde(rename = "UniqueSize")]
    pub unique_size: u64,

    #[serde(rename = "Containers")]
    pub containers: u64,
}

#[derive(Deserialize, Serialize)]
pub struct SystemDiskUsageContainer {
    #[serde(rename = "ContainerID")]
    pub container_id: String,

    #[serde(rename = "Image")]
    pub image: String,

    #[serde(rename = "Command")]
    pub command: Vec<String>,

    #[serde(rename = "LocalVolumes")]
    pub local_volumes: u64,

    #[serde(rename = "Size")]
    pub size: u64,

    #[serde(rename = "RWSize")]
    pub rw_size: u64,

    #[serde(rename = "Created")]
    pub created: String,

    #[serde(rename = "Status")]
    pub status: String,

    #[serde(rename = "Names")]
    pub names: String,
}

#[derive(Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
pub struct SystemDiskUsageVolume {
    pub links: u64,
    pub reclaimable_size: u64,
    pub size: u64,
    pub volume_name: String,
}