podman_client/containers/
restore.rs1use http_body_util::Empty;
2use hyper::body::Bytes;
3use url::form_urlencoded;
4
5use crate::{
6 client::Client,
7 models::{
8 connection::SendRequestOptions, lib::Error,
9 podman::containers::restore::ContainerRestoreOptions,
10 },
11 utils::bool_to_str::bool_to_str,
12};
13
14impl Client {
15 pub async fn container_restore(
16 &self,
17 options: ContainerRestoreOptions<'_>,
18 ) -> Result<(), Error> {
19 let mut path = ["/libpod/containers/", options.name, "/restore"].concat();
20
21 let mut query = form_urlencoded::Serializer::new(String::new());
22 if let Some(file_locks) = options.file_locks {
23 query.append_pair("fileLocks", bool_to_str(file_locks));
24 }
25 if let Some(ignore_root_fs) = options.ignore_root_fs {
26 query.append_pair("ignoreRootFS", bool_to_str(ignore_root_fs));
27 }
28 if let Some(ignore_static_ip) = options.ignore_static_ip {
29 query.append_pair("ignoreStaticIP", bool_to_str(ignore_static_ip));
30 }
31 if let Some(ignore_static_mac) = options.ignore_static_mac {
32 query.append_pair("ignoreStaticMAC", bool_to_str(ignore_static_mac));
33 }
34 if let Some(ignore_volumes) = options.ignore_volumes {
35 query.append_pair("ignore_volumes", bool_to_str(ignore_volumes));
36 }
37 if let Some(import) = options.import {
38 query.append_pair("import", bool_to_str(import));
39 }
40 if let Some(keep) = options.keep {
41 query.append_pair("keep", bool_to_str(keep));
42 }
43 if let Some(name) = options.name_import {
44 query.append_pair("name", name);
45 }
46 if let Some(pod) = options.pod {
47 query.append_pair("pod", pod);
48 }
49 if let Some(print_stats) = options.print_stats {
50 query.append_pair("printStats", bool_to_str(print_stats));
51 }
52 if let Some(tcp_established) = options.tcp_established {
53 query.append_pair("tcpEstablished", bool_to_str(tcp_established));
54 }
55 let query_string = query.finish();
56 if !query_string.is_empty() {
57 path += &["?", &query_string].concat();
58 }
59
60 let (_, data) = self
61 .send_request::<_, (), _>(SendRequestOptions {
62 method: "POST",
63 path: &path,
64 header: None,
65 body: Empty::<Bytes>::new(),
66 })
67 .await?;
68
69 Ok(data)
70 }
71}