podman_rest_client/v4/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::v4::params::VolumeList<'a>>,
16 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
17 Box::pin(request::execute_request_unit(
18 self.get_config(),
19 move |mut req_builder: Builder| {
20 req_builder = req_builder.method("GET");
21 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
22 let mut request_path = request_url.path().to_owned();
23 if request_path.ends_with('/') {
24 request_path.pop();
25 }
26 request_path.push_str("/volumes");
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(filters) = params.filters {
31 query_pairs.append_pair("filters", filters);
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_delete<'a>(
44 &'a self,
45 name: &'a str,
46 params: Option<crate::v4::params::VolumeDelete>,
47 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
48 Box::pin(request::execute_request_unit(
49 self.get_config(),
50 move |mut req_builder: Builder| {
51 req_builder = req_builder.method("DELETE");
52 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
53 let mut request_path = request_url.path().to_owned();
54 if request_path.ends_with('/') {
55 request_path.pop();
56 }
57 request_path.push_str("/volumes/{name}");
58 request_path = request_path.replace("{name}", name);
59 request_url.set_path(&request_path);
60 if let Some(params) = ¶ms {
61 let mut query_pairs = request_url.query_pairs_mut();
62 if let Some(force) = params.force {
63 query_pairs.append_pair("force", &force.to_string());
64 }
65 }
66 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
67 req_builder = req_builder.uri(hyper_uri);
68 Ok(req_builder.body(String::new())?)
69 },
70 ))
71 }
72 fn volume_inspect<'a>(
76 &'a self,
77 name: &'a str,
78 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
79 Box::pin(request::execute_request_unit(
80 self.get_config(),
81 move |mut req_builder: Builder| {
82 req_builder = req_builder.method("GET");
83 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
84 let mut request_path = request_url.path().to_owned();
85 if request_path.ends_with('/') {
86 request_path.pop();
87 }
88 request_path.push_str("/volumes/{name}");
89 request_path = request_path.replace("{name}", name);
90 request_url.set_path(&request_path);
91 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
92 req_builder = req_builder.uri(hyper_uri);
93 Ok(req_builder.body(String::new())?)
94 },
95 ))
96 }
97 fn volume_create<'a>(
101 &'a self,
102 create: (),
103 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
104 Box::pin(request::execute_request_unit(
105 self.get_config(),
106 move |mut req_builder: Builder| {
107 req_builder = req_builder.method("POST");
108 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
109 let mut request_path = request_url.path().to_owned();
110 if request_path.ends_with('/') {
111 request_path.pop();
112 }
113 request_path.push_str("/volumes/create");
114 request_url.set_path(&request_path);
115 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
116 req_builder = req_builder.uri(hyper_uri);
117 let body = serde_json::to_string(&create)?;
118 req_builder = req_builder.header(hyper::header::CONTENT_TYPE, "application/json");
119 req_builder = req_builder.header(hyper::header::CONTENT_LENGTH, body.len());
120 Ok(req_builder.body(body)?)
121 },
122 ))
123 }
124 fn volume_prune<'a>(
128 &'a self,
129 params: Option<crate::v4::params::VolumePrune<'a>>,
130 ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
131 Box::pin(request::execute_request_unit(
132 self.get_config(),
133 move |mut req_builder: Builder| {
134 req_builder = req_builder.method("POST");
135 let mut request_url = url::Url::parse(self.get_config().get_base_path())?;
136 let mut request_path = request_url.path().to_owned();
137 if request_path.ends_with('/') {
138 request_path.pop();
139 }
140 request_path.push_str("/volumes/prune");
141 request_url.set_path(&request_path);
142 if let Some(params) = ¶ms {
143 let mut query_pairs = request_url.query_pairs_mut();
144 if let Some(filters) = params.filters {
145 query_pairs.append_pair("filters", filters);
146 }
147 }
148 let hyper_uri: hyper::Uri = request_url.as_str().parse()?;
149 req_builder = req_builder.uri(hyper_uri);
150 Ok(req_builder.body(String::new())?)
151 },
152 ))
153 }
154}