1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use crate::api::Filter; impl_json_opts_builder!(VolumeCreate); impl VolumeCreateOptsBuilder { impl_str_field!("The new volume's name. If not specified, Docker generates a name." name: N => "Name"); impl_str_field!("Name of the volume driver to use." driver: D => "Driver"); impl_map_field!( "A mapping of driver options and values." "These options are passed directly to the driver and are driver specific." driver_opts: O => "DriverOpts"); impl_map_field!("User-defined key/value metadata." labels: L => "Labels"); } impl_url_opts_builder!(derives = Default | VolumePrune); impl_url_opts_builder!(derives = Default | VolumeList); pub enum VolumeFilter { Dangling(bool), Driver(String), LabelKey(String), LabelKeyVal(String, String), Name(String), } impl Filter for VolumeFilter { fn query_key_val(&self) -> (&'static str, String) { use VolumeFilter::*; match &self { Dangling(dangling) => ("dangling", dangling.to_string()), Driver(driver) => ("driver", driver.to_owned()), LabelKey(label) => ("label", label.to_owned()), LabelKeyVal(key, val) => ("label", format!("{}:{}", key, val)), Name(name) => ("name", name.to_owned()), } } } impl VolumePruneOptsBuilder { impl_filter_func!(VolumeFilter); } impl VolumeListOptsBuilder { impl_filter_func!(VolumeFilter); }