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}