podman_rest_client/v5/apis/
volumes_compat.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 VolumesCompat: HasConfig + Send + Sync {
8 fn volume_list<'a>(
14 &'a self,
15 params: Option<crate::v5::params::VolumeList<'a>>,
16 ) -> Pin<Box<dyn Future<Output = Result<crate::v5::models::ListResponse, Error>> + Send + 'a>>
17 {
18 Box::pin(request::execute_request_json(
19 self.get_config(),
20 move |mut req_builder: Builder| {
21 req_builder = req_builder.method("GET");
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("/volumes");
28 request_url.set_path(&request_path);
29 if let Some(params) = ¶ms {
30 let mut query_pairs = request_url.query_pairs_mut();
31 if let Some(filters) = params.filters {
32 query_pairs.append_pair("filters", filters);
33 }
34 }
35 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
36 req_builder = req_builder.uri(hyper_uri);
37 Ok(req_builder.body(String::new())?)
38 },
39 ))
40 }
41 fn volume_delete<'a>(
45 &'a self,
46 name: &'a str,
47 params: Option<crate::v5::params::VolumeDelete>,
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("DELETE");
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("/volumes/{name}");
59 request_path = request_path.replace("{name}", name);
60 request_url.set_path(&request_path);
61 if let Some(params) = ¶ms {
62 let mut query_pairs = request_url.query_pairs_mut();
63 if let Some(force) = params.force {
64 query_pairs.append_pair("force", &force.to_string());
65 }
66 }
67 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
68 req_builder = req_builder.uri(hyper_uri);
69 Ok(req_builder.body(String::new())?)
70 },
71 ))
72 }
73 fn volume_inspect<'a>(
77 &'a self,
78 name: &'a str,
79 ) -> Pin<Box<dyn Future<Output = Result<crate::v5::models::Volume, Error>> + Send + 'a>> {
80 Box::pin(request::execute_request_json(
81 self.get_config(),
82 move |mut req_builder: Builder| {
83 req_builder = req_builder.method("GET");
84 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
85 let mut request_path = request_url.path().to_owned();
86 if request_path.ends_with('/') {
87 request_path.pop();
88 }
89 request_path.push_str("/volumes/{name}");
90 request_path = request_path.replace("{name}", name);
91 request_url.set_path(&request_path);
92 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
93 req_builder = req_builder.uri(hyper_uri);
94 Ok(req_builder.body(String::new())?)
95 },
96 ))
97 }
98 fn volume_create<'a>(
102 &'a self,
103 create: crate::v5::models::VolumeCreate,
104 ) -> Pin<Box<dyn Future<Output = Result<crate::v5::models::Volume, Error>> + Send + 'a>> {
105 Box::pin(request::execute_request_json(
106 self.get_config(),
107 move |mut req_builder: Builder| {
108 req_builder = req_builder.method("POST");
109 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
110 let mut request_path = request_url.path().to_owned();
111 if request_path.ends_with('/') {
112 request_path.pop();
113 }
114 request_path.push_str("/volumes/create");
115 request_url.set_path(&request_path);
116 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
117 req_builder = req_builder.uri(hyper_uri);
118 let body = serde_json::to_string(&create)?;
119 req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
120 req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
121 Ok(req_builder.body(body)?)
122 },
123 ))
124 }
125 fn volume_prune<'a>(
129 &'a self,
130 params: Option<crate::v5::params::VolumePrune<'a>>,
131 ) -> Pin<
132 Box<dyn Future<Output = Result<crate::v5::models::VolumesPruneReport, Error>> + Send + 'a>,
133 > {
134 Box::pin(request::execute_request_json(
135 self.get_config(),
136 move |mut req_builder: Builder| {
137 req_builder = req_builder.method("POST");
138 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
139 let mut request_path = request_url.path().to_owned();
140 if request_path.ends_with('/') {
141 request_path.pop();
142 }
143 request_path.push_str("/volumes/prune");
144 request_url.set_path(&request_path);
145 if let Some(params) = ¶ms {
146 let mut query_pairs = request_url.query_pairs_mut();
147 if let Some(filters) = params.filters {
148 query_pairs.append_pair("filters", filters);
149 }
150 }
151 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
152 req_builder = req_builder.uri(hyper_uri);
153 Ok(req_builder.body(String::new())?)
154 },
155 ))
156 }
157}