podman_rest_client/v4/apis/
volumes.rs1use 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    fn volume_delete_libpod<'a>(
12        &'a self,
13        name: &'a str,
14        params: Option<crate::v4::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) = ¶ms {
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    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    fn volume_inspect_libpod<'a>(
71        &'a self,
72        name: &'a str,
73    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
74        Box::pin(request::execute_request_unit(
75            self.get_config(),
76            move |mut req_builder: Builder| {
77                req_builder = req_builder.method("GET");
78                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
79                let mut request_path = request_url.path().to_owned();
80                if request_path.ends_with('/') {
81                    request_path.pop();
82                }
83                request_path.push_str("/libpod/volumes/{name}/json");
84                request_path = request_path.replace("{name}", name);
85                request_url.set_path(&request_path);
86                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
87                req_builder = req_builder.uri(hyper_uri);
88                Ok(req_builder.body(String::new())?)
89            },
90        ))
91    }
92    fn volume_create_libpod<'a>(
96        &'a self,
97        create: crate::v4::models::VolumeCreateOptions,
98    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
99        Box::pin(request::execute_request_unit(
100            self.get_config(),
101            move |mut req_builder: Builder| {
102                req_builder = req_builder.method("POST");
103                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
104                let mut request_path = request_url.path().to_owned();
105                if request_path.ends_with('/') {
106                    request_path.pop();
107                }
108                request_path.push_str("/libpod/volumes/create");
109                request_url.set_path(&request_path);
110                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
111                req_builder = req_builder.uri(hyper_uri);
112                let body = serde_json::to_string(&create)?;
113                req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
114                req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
115                Ok(req_builder.body(body)?)
116            },
117        ))
118    }
119    fn volume_list_libpod<'a>(
125        &'a self,
126        params: Option<crate::v4::params::VolumeListLibpod<'a>>,
127    ) -> Pin<Box<dyn Future<Output = Result<Vec<()>, Error>> + Send + 'a>> {
128        Box::pin(request::execute_request_json(
129            self.get_config(),
130            move |mut req_builder: Builder| {
131                req_builder = req_builder.method("GET");
132                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
133                let mut request_path = request_url.path().to_owned();
134                if request_path.ends_with('/') {
135                    request_path.pop();
136                }
137                request_path.push_str("/libpod/volumes/json");
138                request_url.set_path(&request_path);
139                if let Some(params) = ¶ms {
140                    let mut query_pairs = request_url.query_pairs_mut();
141                    if let Some(filters) = params.filters {
142                        query_pairs.append_pair("filters", filters);
143                    }
144                }
145                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
146                req_builder = req_builder.uri(hyper_uri);
147                Ok(req_builder.body(String::new())?)
148            },
149        ))
150    }
151    fn volume_prune_libpod<'a>(
155        &'a self,
156        params: Option<crate::v4::params::VolumePruneLibpod<'a>>,
157    ) -> Pin<Box<dyn Future<Output = Result<Vec<()>, Error>> + Send + 'a>> {
158        Box::pin(request::execute_request_json(
159            self.get_config(),
160            move |mut req_builder: Builder| {
161                req_builder = req_builder.method("POST");
162                let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
163                let mut request_path = request_url.path().to_owned();
164                if request_path.ends_with('/') {
165                    request_path.pop();
166                }
167                request_path.push_str("/libpod/volumes/prune");
168                request_url.set_path(&request_path);
169                if let Some(params) = ¶ms {
170                    let mut query_pairs = request_url.query_pairs_mut();
171                    if let Some(filters) = params.filters {
172                        query_pairs.append_pair("filters", filters);
173                    }
174                }
175                let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
176                req_builder = req_builder.uri(hyper_uri);
177                Ok(req_builder.body(String::new())?)
178            },
179        ))
180    }
181}