diff options
Diffstat (limited to 'src/volume.rs')
-rw-r--r-- | src/volume.rs | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/volume.rs b/src/volume.rs index 8290e2b..cbd4d91 100644 --- a/src/volume.rs +++ b/src/volume.rs @@ -8,15 +8,17 @@ use std::{ }; use hyper::Body; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; use crate::{ errors::{Error, Result}, - rep::{Volume as VolumeRep, VolumeCreateInfo, Volumes as VolumesRep}, Docker, }; +#[cfg(feature = "chrono")] +use chrono::{DateTime, Utc}; + /// Interface for docker volumes pub struct Volumes<'docker> { docker: &'docker Docker, @@ -41,10 +43,10 @@ impl<'docker> Volumes<'docker> { } /// Lists the docker volumes on the current docker host - pub async fn list(&self) -> Result<Vec<VolumeRep>> { + pub async fn list(&self) -> Result<Vec<VolumeInfo>> { let path = vec!["/volumes".to_owned()]; - let volumes_rep = self.docker.get_json::<VolumesRep>(&path.join("?")).await?; + let volumes_rep = self.docker.get_json::<VolumesInfo>(&path.join("?")).await?; Ok(match volumes_rep.volumes { Some(volumes) => volumes, None => vec![], @@ -158,3 +160,31 @@ impl VolumeCreateOptionsBuilder { } } } + +#[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 VolumesInfo { + pub volumes: Option<Vec<VolumeInfo>>, + pub warnings: Option<Vec<String>>, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct VolumeInfo { + #[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, +} |