podman_rest_client/v4/apis/
volumes_compat.rs

1use crate::api_common::config::HasConfig;
2use crate::api_common::request;
3use crate::api_common::Error;
4use http::request::Builder;
5use std::future::Future;
6use std::pin::Pin;
7pub trait VolumesCompat: HasConfig + Send + Sync {
8    /// GET /volumes
9    ///
10    /// List volumes
11    ///
12    /// Returns a list of volume
13    fn volume_list<'a>(
14        &'a self,
15        params: Option<crate::v4::params::VolumeList<'a>>,
16    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
17        Box::pin(request::execute_request_unit(
18            self.get_config(),
19            move |mut req_builder: Builder| {
20                req_builder = req_builder.method("GET");
21                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
22                let mut request_path = request_url.path().to_owned();
23                if request_path.ends_with('/') {
24                    request_path.pop();
25                }
26                request_path.push_str("/volumes");
27                request_url.set_path(&request_path);
28                if let Some(params) = &params {
29                    let mut query_pairs = request_url.query_pairs_mut();
30                    if let Some(filters) = params.filters {
31                        query_pairs.append_pair("filters", filters);
32                    }
33                }
34                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
35                req_builder = req_builder.uri(hyper_uri);
36                Ok(req_builder.body(String::new())?)
37            },
38        ))
39    }
40    /// DELETE /volumes/{name}
41    ///
42    /// Remove volume
43    fn volume_delete<'a>(
44        &'a self,
45        name: &'a str,
46        params: Option<crate::v4::params::VolumeDelete>,
47    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
48        Box::pin(request::execute_request_unit(
49            self.get_config(),
50            move |mut req_builder: Builder| {
51                req_builder = req_builder.method("DELETE");
52                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
53                let mut request_path = request_url.path().to_owned();
54                if request_path.ends_with('/') {
55                    request_path.pop();
56                }
57                request_path.push_str("/volumes/{name}");
58                request_path = request_path.replace("{name}", name);
59                request_url.set_path(&request_path);
60                if let Some(params) = &params {
61                    let mut query_pairs = request_url.query_pairs_mut();
62                    if let Some(force) = params.force {
63                        query_pairs.append_pair("force", &force.to_string());
64                    }
65                }
66                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
67                req_builder = req_builder.uri(hyper_uri);
68                Ok(req_builder.body(String::new())?)
69            },
70        ))
71    }
72    /// GET /volumes/{name}
73    ///
74    /// Inspect volume
75    fn volume_inspect<'a>(
76        &'a self,
77        name: &'a str,
78    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
79        Box::pin(request::execute_request_unit(
80            self.get_config(),
81            move |mut req_builder: Builder| {
82                req_builder = req_builder.method("GET");
83                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
84                let mut request_path = request_url.path().to_owned();
85                if request_path.ends_with('/') {
86                    request_path.pop();
87                }
88                request_path.push_str("/volumes/{name}");
89                request_path = request_path.replace("{name}", name);
90                request_url.set_path(&request_path);
91                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
92                req_builder = req_builder.uri(hyper_uri);
93                Ok(req_builder.body(String::new())?)
94            },
95        ))
96    }
97    /// POST /volumes/create
98    ///
99    /// Create a volume
100    fn volume_create<'a>(
101        &'a self,
102        create: (),
103    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
104        Box::pin(request::execute_request_unit(
105            self.get_config(),
106            move |mut req_builder: Builder| {
107                req_builder = req_builder.method("POST");
108                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
109                let mut request_path = request_url.path().to_owned();
110                if request_path.ends_with('/') {
111                    request_path.pop();
112                }
113                request_path.push_str("/volumes/create");
114                request_url.set_path(&request_path);
115                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
116                req_builder = req_builder.uri(hyper_uri);
117                let body = serde_json::to_string(&create)?;
118                req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
119                req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
120                Ok(req_builder.body(body)?)
121            },
122        ))
123    }
124    /// POST /volumes/prune
125    ///
126    /// Prune volumes
127    fn volume_prune<'a>(
128        &'a self,
129        params: Option<crate::v4::params::VolumePrune<'a>>,
130    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
131        Box::pin(request::execute_request_unit(
132            self.get_config(),
133            move |mut req_builder: Builder| {
134                req_builder = req_builder.method("POST");
135                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
136                let mut request_path = request_url.path().to_owned();
137                if request_path.ends_with('/') {
138                    request_path.pop();
139                }
140                request_path.push_str("/volumes/prune");
141                request_url.set_path(&request_path);
142                if let Some(params) = &params {
143                    let mut query_pairs = request_url.query_pairs_mut();
144                    if let Some(filters) = params.filters {
145                        query_pairs.append_pair("filters", filters);
146                    }
147                }
148                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
149                req_builder = req_builder.uri(hyper_uri);
150                Ok(req_builder.body(String::new())?)
151            },
152        ))
153    }
154}