podman_rest_client/v5/apis/
volumes_compat.rs

1use 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    /// GET /volumes
9    ///
10    /// List volumes
11    ///
12    /// Returns a list of volume
13    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) = &params {
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    /// DELETE /volumes/{name}
42    ///
43    /// Remove volume
44    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) = &params {
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    /// GET /volumes/{name}
74    ///
75    /// Inspect volume
76    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    /// POST /volumes/create
99    ///
100    /// Create a volume
101    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    /// POST /volumes/prune
126    ///
127    /// Prune volumes
128    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) = &params {
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}