podman_rest_client/v5/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::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) = ¶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<
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 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 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) = ¶ms {
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 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) = ¶ms {
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}