podman_rest_client/v5/apis/
volumes.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 Volumes: HasConfig + Send + Sync {
8    /// DELETE /libpod/volumes/{name}
9    ///
10    /// Remove volume
11    fn volume_delete_libpod<'a>(
12        &'a self,
13        name: &'a str,
14        params: Option<crate::v5::params::VolumeDeleteLibpod>,
15    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
16        Box::pin(request::execute_request_unit(
17            self.get_config(),
18            move |mut req_builder: Builder| {
19                req_builder = req_builder.method("DELETE");
20                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
21                let mut request_path = request_url.path().to_owned();
22                if request_path.ends_with('/') {
23                    request_path.pop();
24                }
25                request_path.push_str("/libpod/volumes/{name}");
26                request_path = request_path.replace("{name}", name);
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(force) = params.force {
31                        query_pairs.append_pair("force", &force.to_string());
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    /// GET /libpod/volumes/{name}/exists
41    ///
42    /// Volume exists
43    ///
44    /// Check if a volume exists
45    fn volume_exists_libpod<'a>(
46        &'a self,
47        name: &'a str,
48    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
49        Box::pin(request::execute_request_unit(
50            self.get_config(),
51            move |mut req_builder: Builder| {
52                req_builder = req_builder.method("GET");
53                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
54                let mut request_path = request_url.path().to_owned();
55                if request_path.ends_with('/') {
56                    request_path.pop();
57                }
58                request_path.push_str("/libpod/volumes/{name}/exists");
59                request_path = request_path.replace("{name}", name);
60                request_url.set_path(&request_path);
61                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
62                req_builder = req_builder.uri(hyper_uri);
63                Ok(req_builder.body(String::new())?)
64            },
65        ))
66    }
67    /// GET /libpod/volumes/{name}/json
68    ///
69    /// Inspect volume
70    fn volume_inspect_libpod<'a>(
71        &'a self,
72        name: &'a str,
73    ) -> Pin<
74        Box<
75            dyn Future<Output = Result<crate::v5::models::VolumeConfigResponse, Error>> + Send + 'a,
76        >,
77    > {
78        Box::pin(request::execute_request_json(
79            self.get_config(),
80            move |mut req_builder: Builder| {
81                req_builder = req_builder.method("GET");
82                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
83                let mut request_path = request_url.path().to_owned();
84                if request_path.ends_with('/') {
85                    request_path.pop();
86                }
87                request_path.push_str("/libpod/volumes/{name}/json");
88                request_path = request_path.replace("{name}", name);
89                request_url.set_path(&request_path);
90                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
91                req_builder = req_builder.uri(hyper_uri);
92                Ok(req_builder.body(String::new())?)
93            },
94        ))
95    }
96    /// POST /libpod/volumes/create
97    ///
98    /// Create a volume
99    fn volume_create_libpod<'a>(
100        &'a self,
101        create: crate::v5::models::VolumeCreateOptions,
102    ) -> Pin<
103        Box<
104            dyn Future<Output = Result<crate::v5::models::VolumeConfigResponse, Error>> + Send + 'a,
105        >,
106    > {
107        Box::pin(request::execute_request_json(
108            self.get_config(),
109            move |mut req_builder: Builder| {
110                req_builder = req_builder.method("POST");
111                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
112                let mut request_path = request_url.path().to_owned();
113                if request_path.ends_with('/') {
114                    request_path.pop();
115                }
116                request_path.push_str("/libpod/volumes/create");
117                request_url.set_path(&request_path);
118                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
119                req_builder = req_builder.uri(hyper_uri);
120                let body = serde_json::to_string(&create)?;
121                req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
122                req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
123                Ok(req_builder.body(body)?)
124            },
125        ))
126    }
127    /// GET /libpod/volumes/json
128    ///
129    /// List volumes
130    ///
131    /// Returns a list of volumes
132    fn volume_list_libpod<'a>(
133        &'a self,
134        params: Option<crate::v5::params::VolumeListLibpod<'a>>,
135    ) -> Pin<
136        Box<
137            dyn Future<Output = Result<Vec<crate::v5::models::VolumeConfigResponse>, Error>>
138                + Send
139                + 'a,
140        >,
141    > {
142        Box::pin(request::execute_request_json(
143            self.get_config(),
144            move |mut req_builder: Builder| {
145                req_builder = req_builder.method("GET");
146                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
147                let mut request_path = request_url.path().to_owned();
148                if request_path.ends_with('/') {
149                    request_path.pop();
150                }
151                request_path.push_str("/libpod/volumes/json");
152                request_url.set_path(&request_path);
153                if let Some(params) = &params {
154                    let mut query_pairs = request_url.query_pairs_mut();
155                    if let Some(filters) = params.filters {
156                        query_pairs.append_pair("filters", filters);
157                    }
158                }
159                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
160                req_builder = req_builder.uri(hyper_uri);
161                Ok(req_builder.body(String::new())?)
162            },
163        ))
164    }
165    /// POST /libpod/volumes/prune
166    ///
167    /// Prune volumes
168    fn volume_prune_libpod<'a>(
169        &'a self,
170        params: Option<crate::v5::params::VolumePruneLibpod<'a>>,
171    ) -> Pin<Box<dyn Future<Output = Result<Vec<crate::v5::models::PruneReport>, Error>> + Send + 'a>>
172    {
173        Box::pin(request::execute_request_json(
174            self.get_config(),
175            move |mut req_builder: Builder| {
176                req_builder = req_builder.method("POST");
177                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
178                let mut request_path = request_url.path().to_owned();
179                if request_path.ends_with('/') {
180                    request_path.pop();
181                }
182                request_path.push_str("/libpod/volumes/prune");
183                request_url.set_path(&request_path);
184                if let Some(params) = &params {
185                    let mut query_pairs = request_url.query_pairs_mut();
186                    if let Some(filters) = params.filters {
187                        query_pairs.append_pair("filters", filters);
188                    }
189                }
190                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
191                req_builder = req_builder.uri(hyper_uri);
192                Ok(req_builder.body(String::new())?)
193            },
194        ))
195    }
196}