summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMoritz Heiber <hello@heiber.im>2021-06-07 15:34:14 +0200
committerMoritz Heiber <hello@heiber.im>2021-06-07 15:34:14 +0200
commit30b9a2357a0d242062a43cd703e42e25631fe58b (patch)
tree6b7c2bcdbf327bc3429221b7a16b0439c21b9874 /src
parent8c614740a8c017135a70a7f16a21054df1bbbb59 (diff)
Added volume driver support
Diffstat (limited to 'src')
-rw-r--r--src/volume.rs56
1 files changed, 56 insertions, 0 deletions
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<HashMap<String, String>>,
pub scope: String,
}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[derive(Deserialize)]
+ #[serde(rename_all = "PascalCase")]
+ pub struct VolumeTestInfo {
+ pub driver: Option<String>,
+ pub name: Option<String>,
+ pub driver_opts: Option<HashMap<String, String>>,
+ }
+
+ #[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))
+ }
+}