summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-06-16 18:33:54 +0200
committerGitHub <noreply@github.com>2021-06-16 18:33:54 +0200
commitf5f6bc00abe2f29401e99d36286bdc48b5333c78 (patch)
tree00b23b7fbc5eb4341a0651c71e5bf8f49f79726c /src
parentf02d1531b5828bc3ed18bbf32358a185c70c5fa2 (diff)
parent30b9a2357a0d242062a43cd703e42e25631fe58b (diff)
Merge pull request #298 from moritzheiber/master
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))
+ }
+}