podman_rest_client/v4/apis/
manifests.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 Manifests: HasConfig + Send + Sync {
8 fn manifest_create_libpod<'a>(
14 &'a self,
15 params: Option<crate::v4::params::ManifestCreateLibpod<'a>>,
16 options: (),
17 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
18 Box::pin(request::execute_request_unit(
19 self.get_config(),
20 move |mut req_builder: Builder| {
21 req_builder = req_builder.method("POST");
22 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
23 let mut request_path = request_url.path().to_owned();
24 if request_path.ends_with('/') {
25 request_path.pop();
26 }
27 request_path.push_str("/libpod/manifests");
28 request_url.set_path(&request_path);
29 if let Some(params) = ¶ms {
30 let mut query_pairs = request_url.query_pairs_mut();
31 query_pairs.append_pair("name", params.name);
32 query_pairs.append_pair("images", params.images);
33 if let Some(all) = params.all {
34 query_pairs.append_pair("all", &all.to_string());
35 }
36 if let Some(amend) = params.amend {
37 query_pairs.append_pair("amend", &amend.to_string());
38 }
39 }
40 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
41 req_builder = req_builder.uri(hyper_uri);
42 let body = serde_json::to_string(&options)?;
43 req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
44 req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
45 Ok(req_builder.body(body)?)
46 },
47 ))
48 }
49 fn manifest_delete_libpod<'a>(
57 &'a self,
58 name: &'a str,
59 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
60 Box::pin(request::execute_request_unit(
61 self.get_config(),
62 move |mut req_builder: Builder| {
63 req_builder = req_builder.method("DELETE");
64 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
65 let mut request_path = request_url.path().to_owned();
66 if request_path.ends_with('/') {
67 request_path.pop();
68 }
69 request_path.push_str("/libpod/manifests/{name}");
70 request_path = request_path.replace("{name}", name);
71 request_url.set_path(&request_path);
72 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
73 req_builder = req_builder.uri(hyper_uri);
74 Ok(req_builder.body(String::new())?)
75 },
76 ))
77 }
78 fn manifest_modify_libpod<'a>(
88 &'a self,
89 name: &'a str,
90 params: Option<crate::v4::params::ManifestModifyLibpod>,
91 options: (),
92 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
93 Box::pin(request::execute_request_unit(
94 self.get_config(),
95 move |mut req_builder: Builder| {
96 req_builder = req_builder.method("GET");
97 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
98 let mut request_path = request_url.path().to_owned();
99 if request_path.ends_with('/') {
100 request_path.pop();
101 }
102 request_path.push_str("/libpod/manifests/{name}");
103 request_path = request_path.replace("{name}", name);
104 request_url.set_path(&request_path);
105 if let Some(params) = ¶ms {
106 let mut query_pairs = request_url.query_pairs_mut();
107 if let Some(tls_verify) = params.tls_verify {
108 query_pairs.append_pair("tlsVerify", &tls_verify.to_string());
109 }
110 }
111 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
112 req_builder = req_builder.uri(hyper_uri);
113 let body = serde_json::to_string(&options)?;
114 req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
115 req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
116 Ok(req_builder.body(body)?)
117 },
118 ))
119 }
120 fn manifest_add_libpod<'a>(
128 &'a self,
129 name: &'a str,
130 options: (),
131 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
132 Box::pin(request::execute_request_unit(
133 self.get_config(),
134 move |mut req_builder: Builder| {
135 req_builder = req_builder.method("POST");
136 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
137 let mut request_path = request_url.path().to_owned();
138 if request_path.ends_with('/') {
139 request_path.pop();
140 }
141 request_path.push_str("/libpod/manifests/{name}/add");
142 request_path = request_path.replace("{name}", name);
143 request_url.set_path(&request_path);
144 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
145 req_builder = req_builder.uri(hyper_uri);
146 let body = serde_json::to_string(&options)?;
147 req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
148 req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
149 Ok(req_builder.body(body)?)
150 },
151 ))
152 }
153 fn manifest_exists_libpod<'a>(
161 &'a self,
162 name: &'a str,
163 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
164 Box::pin(request::execute_request_unit(
165 self.get_config(),
166 move |mut req_builder: Builder| {
167 req_builder = req_builder.method("GET");
168 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
169 let mut request_path = request_url.path().to_owned();
170 if request_path.ends_with('/') {
171 request_path.pop();
172 }
173 request_path.push_str("/libpod/manifests/{name}/exists");
174 request_path = request_path.replace("{name}", name);
175 request_url.set_path(&request_path);
176 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
177 req_builder = req_builder.uri(hyper_uri);
178 Ok(req_builder.body(String::new())?)
179 },
180 ))
181 }
182 fn manifest_inspect_libpod<'a>(
188 &'a self,
189 name: &'a str,
190 params: Option<crate::v4::params::ManifestInspectLibpod>,
191 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
192 Box::pin(request::execute_request_unit(
193 self.get_config(),
194 move |mut req_builder: Builder| {
195 req_builder = req_builder.method("GET");
196 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
197 let mut request_path = request_url.path().to_owned();
198 if request_path.ends_with('/') {
199 request_path.pop();
200 }
201 request_path.push_str("/libpod/manifests/{name}/json");
202 request_path = request_path.replace("{name}", name);
203 request_url.set_path(&request_path);
204 if let Some(params) = ¶ms {
205 let mut query_pairs = request_url.query_pairs_mut();
206 if let Some(tls_verify) = params.tls_verify {
207 query_pairs.append_pair("tlsVerify", &tls_verify.to_string());
208 }
209 }
210 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
211 req_builder = req_builder.uri(hyper_uri);
212 Ok(req_builder.body(String::new())?)
213 },
214 ))
215 }
216 fn manifest_push_v_3_libpod<'a>(
224 &'a self,
225 name: &'a str,
226 params: Option<crate::v4::params::ManifestPushV3Libpod<'a>>,
227 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
228 Box::pin(request::execute_request_unit(
229 self.get_config(),
230 move |mut req_builder: Builder| {
231 req_builder = req_builder.method("POST");
232 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
233 let mut request_path = request_url.path().to_owned();
234 if request_path.ends_with('/') {
235 request_path.pop();
236 }
237 request_path.push_str("/libpod/manifests/{name}/push");
238 request_path = request_path.replace("{name}", name);
239 request_url.set_path(&request_path);
240 if let Some(params) = ¶ms {
241 let mut query_pairs = request_url.query_pairs_mut();
242 query_pairs.append_pair("destination", params.destination);
243 if let Some(all) = params.all {
244 query_pairs.append_pair("all", &all.to_string());
245 }
246 }
247 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
248 req_builder = req_builder.uri(hyper_uri);
249 Ok(req_builder.body(String::new())?)
250 },
251 ))
252 }
253 fn manifest_push_libpod<'a>(
261 &'a self,
262 name: &'a str,
263 destination: &'a str,
264 params: Option<crate::v4::params::ManifestPushLibpod<'a>>,
265 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
266 Box::pin(request::execute_request_unit(
267 self.get_config(),
268 move |mut req_builder: Builder| {
269 req_builder = req_builder.method("POST");
270 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
271 let mut request_path = request_url.path().to_owned();
272 if request_path.ends_with('/') {
273 request_path.pop();
274 }
275 request_path.push_str("/libpod/manifests/{name}/registry/{destination}");
276 request_path = request_path.replace("{name}", name);
277 request_path = request_path.replace("{destination}", destination);
278 request_url.set_path(&request_path);
279 if let Some(params) = ¶ms {
280 let mut query_pairs = request_url.query_pairs_mut();
281 if let Some(add_compression) = ¶ms.add_compression {
282 for value in add_compression {
283 query_pairs.append_pair("addCompression", &value.to_string());
284 }
285 }
286 if let Some(force_compression_format) = params.force_compression_format {
287 query_pairs.append_pair(
288 "forceCompressionFormat",
289 &force_compression_format.to_string(),
290 );
291 }
292 if let Some(all) = params.all {
293 query_pairs.append_pair("all", &all.to_string());
294 }
295 if let Some(tls_verify) = params.tls_verify {
296 query_pairs.append_pair("tlsVerify", &tls_verify.to_string());
297 }
298 if let Some(quiet) = params.quiet {
299 query_pairs.append_pair("quiet", &quiet.to_string());
300 }
301 }
302 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
303 req_builder = req_builder.uri(hyper_uri);
304 Ok(req_builder.body(String::new())?)
305 },
306 ))
307 }
308}