1use crate::{
4 conn::{Headers, Payload},
5 models,
6 opts::{ClusterVolumeUpdateOpts, VolumeCreateOpts, VolumeListOpts, VolumePruneOpts},
7 Result,
8};
9use containers_api::url;
10
11impl_api_ty!(Volume => name);
12
13impl Volume {
14 impl_api_ep! {vol: Volume, resp
15 Inspect -> &format!("/volumes/{}", vol.name), models::Volume
16 Delete -> &format!("/volumes/{}", vol.name), ()
17 }
18
19 api_doc! { Volume => Update
20 |
21 pub async fn update(&self, opts: &ClusterVolumeUpdateOpts) -> Result<()> {
23 let mut ep = format!("/volumes/{}", self.name());
24 url::append_query(&mut ep, url::encoded_pair("version", opts.version()));
25 self.docker.put(&ep, Payload::Json(opts.serialize_vec()?)).await.map(|_| ())
26 }}
27}
28
29impl Volumes {
30 impl_api_ep! {__: Volume, resp
31 Prune -> "/volumes/prune", models::VolumePrune200Response
32 }
33
34 api_doc! { Volume => List
35 |
36 pub async fn list(&self, opts: &VolumeListOpts) -> Result<models::VolumeListResponse> {
38 let ep = url::construct_ep("/volumes", opts.serialize());
39 self.docker.get_json(&ep).await
40 }}
41
42 api_doc! { Volume => Create
43 |
44 pub async fn create(&self, opts: &VolumeCreateOpts) -> Result<models::Volume> {
46 self.docker
48 .post_json(
49 "/volumes/create",
50 Payload::Json(opts.serialize_vec()?),
51 Headers::none(),
52 )
53 .await
54 }}
55}