From 30b9a2357a0d242062a43cd703e42e25631fe58b Mon Sep 17 00:00:00 2001 From: Moritz Heiber Date: Mon, 7 Jun 2021 15:34:14 +0200 Subject: Added volume driver support --- src/volume.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src') diff --git a/src/volume.rs b/src/volume.rs index 50f0f7a..1a95626 100644 --- a/src/volume.rs +++ b/src/volume.rs @@ -149,6 +149,18 @@ impl VolumeCreateOptionsBuilder { VolumeCreateOptionsBuilder { params } } + pub fn driver( + &mut self, + driver_name: &str, + driver_opts: Option<&HashMap<&str, &str>>, + ) -> &mut Self { + self.params.insert("Driver", json!(driver_name)); + if let Some(opts) = driver_opts { + self.params.insert("DriverOpts", json!(opts)); + } + self + } + pub fn name( &mut self, name: &str, @@ -199,3 +211,47 @@ pub struct VolumeInfo { pub options: Option>, pub scope: String, } + +#[cfg(test)] +mod test { + use super::*; + + #[derive(Deserialize)] + #[serde(rename_all = "PascalCase")] + pub struct VolumeTestInfo { + pub driver: Option, + pub name: Option, + pub driver_opts: Option>, + } + + #[test] + fn test_volumecreateoptionsbuilder_driver() { + let volume = VolumeCreateOptions::builder() + .driver("my_driver", None) + .build(); + + let serialized = volume.serialize().unwrap(); + let volume_info: VolumeTestInfo = serde_json::from_str(&serialized).unwrap(); + + assert_eq!(volume_info.driver, Some("my_driver".to_string())); + assert_eq!(volume_info.name, None); + assert_eq!(volume_info.driver_opts, None) + } + + #[test] + fn test_volumecreateoptionsbuilder_driver_opts() { + let opts: HashMap<&str, &str> = [("option", "value")].iter().cloned().collect(); + let volume = VolumeCreateOptions::builder() + .driver("my_driver", Some(&opts)) + .build(); + + let serialized = volume.serialize().unwrap(); + let volume_info: VolumeTestInfo = serde_json::from_str(&serialized).unwrap(); + let mut driver_options = HashMap::new(); + driver_options.insert("option".to_string(), "value".to_string()); + + assert_eq!(volume_info.driver, Some("my_driver".to_string())); + assert_eq!(volume_info.name, None); + assert_eq!(volume_info.driver_opts, Some(driver_options)) + } +} -- cgit v1.2.3