1use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum NodesTasksDeleteTasksError {
22 Status400(models::PbsError),
23 Status401(models::PbsError),
24 Status403(models::PbsError),
25 Status404(models::PbsError),
26 Status500(models::PbsError),
27 Status501(models::PbsError),
28 Status503(models::PbsError),
29 UnknownValue(serde_json::Value),
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum NodesTasksGetLogError {
36 Status400(models::PbsError),
37 Status401(models::PbsError),
38 Status403(models::PbsError),
39 Status404(models::PbsError),
40 Status500(models::PbsError),
41 Status501(models::PbsError),
42 Status503(models::PbsError),
43 UnknownValue(serde_json::Value),
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum NodesTasksGetNodesByNodeTasksByUpidError {
50 Status400(models::PbsError),
51 Status401(models::PbsError),
52 Status403(models::PbsError),
53 Status404(models::PbsError),
54 Status500(models::PbsError),
55 Status501(models::PbsError),
56 Status503(models::PbsError),
57 UnknownValue(serde_json::Value),
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum NodesTasksGetStatusError {
64 Status400(models::PbsError),
65 Status401(models::PbsError),
66 Status403(models::PbsError),
67 Status404(models::PbsError),
68 Status500(models::PbsError),
69 Status501(models::PbsError),
70 Status503(models::PbsError),
71 UnknownValue(serde_json::Value),
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum NodesTasksGetTasksError {
78 Status400(models::PbsError),
79 Status401(models::PbsError),
80 Status403(models::PbsError),
81 Status404(models::PbsError),
82 Status500(models::PbsError),
83 Status501(models::PbsError),
84 Status503(models::PbsError),
85 UnknownValue(serde_json::Value),
86}
87
88
89pub async fn nodes_tasks_delete_tasks(configuration: &configuration::Configuration, node: &str, upid: &str) -> Result<models::NodesTasksDeleteTasksResponse, Error<NodesTasksDeleteTasksError>> {
91 let p_path_node = node;
93 let p_path_upid = upid;
94
95 let uri_str = format!("{}/nodes/{node}/tasks/{upid}", configuration.base_path, node=crate::apis::urlencode(p_path_node), upid=crate::apis::urlencode(p_path_upid));
96 let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
97
98 if let Some(ref user_agent) = configuration.user_agent {
99 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
100 }
101 if let Some(ref apikey) = configuration.api_key {
102 let key = apikey.key.clone();
103 let value = match apikey.prefix {
104 Some(ref prefix) => format!("{} {}", prefix, key),
105 None => key,
106 };
107 req_builder = req_builder.header("Authorization", value);
108 };
109 if let Some(ref apikey) = configuration.api_key {
110 let key = apikey.key.clone();
111 let value = match apikey.prefix {
112 Some(ref prefix) => format!("{} {}", prefix, key),
113 None => key,
114 };
115 req_builder = req_builder.header("CSRFPreventionToken", value);
116 };
117
118 let req = req_builder.build()?;
119 let resp = configuration.client.execute(req).await?;
120
121 let status = resp.status();
122 let content_type = resp
123 .headers()
124 .get("content-type")
125 .and_then(|v| v.to_str().ok())
126 .unwrap_or("application/octet-stream");
127 let content_type = super::ContentType::from(content_type);
128
129 if !status.is_client_error() && !status.is_server_error() {
130 let content = resp.text().await?;
131 match content_type {
132 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
133 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesTasksDeleteTasksResponse`"))),
134 ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesTasksDeleteTasksResponse`")))),
135 }
136 } else {
137 let content = resp.text().await?;
138 let entity: Option<NodesTasksDeleteTasksError> = serde_json::from_str(&content).ok();
139 Err(Error::ResponseError(ResponseContent { status, content, entity }))
140 }
141}
142
143pub async fn nodes_tasks_get_log(configuration: &configuration::Configuration, node: &str, upid: &str, download: Option<bool>, limit: Option<i64>, start: Option<i64>, test_status: Option<bool>) -> Result<models::NodesTasksGetLogResponse, Error<NodesTasksGetLogError>> {
145 let p_path_node = node;
147 let p_path_upid = upid;
148 let p_query_download = download;
149 let p_query_limit = limit;
150 let p_query_start = start;
151 let p_query_test_status = test_status;
152
153 let uri_str = format!("{}/nodes/{node}/tasks/{upid}/log", configuration.base_path, node=crate::apis::urlencode(p_path_node), upid=crate::apis::urlencode(p_path_upid));
154 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
155
156 if let Some(ref param_value) = p_query_download {
157 req_builder = req_builder.query(&[("download", ¶m_value.to_string())]);
158 }
159 if let Some(ref param_value) = p_query_limit {
160 req_builder = req_builder.query(&[("limit", ¶m_value.to_string())]);
161 }
162 if let Some(ref param_value) = p_query_start {
163 req_builder = req_builder.query(&[("start", ¶m_value.to_string())]);
164 }
165 if let Some(ref param_value) = p_query_test_status {
166 req_builder = req_builder.query(&[("test-status", ¶m_value.to_string())]);
167 }
168 if let Some(ref user_agent) = configuration.user_agent {
169 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
170 }
171 if let Some(ref apikey) = configuration.api_key {
172 let key = apikey.key.clone();
173 let value = match apikey.prefix {
174 Some(ref prefix) => format!("{} {}", prefix, key),
175 None => key,
176 };
177 req_builder = req_builder.header("Authorization", value);
178 };
179 if let Some(ref apikey) = configuration.api_key {
180 let key = apikey.key.clone();
181 let value = match apikey.prefix {
182 Some(ref prefix) => format!("{} {}", prefix, key),
183 None => key,
184 };
185 req_builder = req_builder.header("CSRFPreventionToken", value);
186 };
187
188 let req = req_builder.build()?;
189 let resp = configuration.client.execute(req).await?;
190
191 let status = resp.status();
192 let content_type = resp
193 .headers()
194 .get("content-type")
195 .and_then(|v| v.to_str().ok())
196 .unwrap_or("application/octet-stream");
197 let content_type = super::ContentType::from(content_type);
198
199 if !status.is_client_error() && !status.is_server_error() {
200 let content = resp.text().await?;
201 match content_type {
202 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
203 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesTasksGetLogResponse`"))),
204 ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesTasksGetLogResponse`")))),
205 }
206 } else {
207 let content = resp.text().await?;
208 let entity: Option<NodesTasksGetLogError> = serde_json::from_str(&content).ok();
209 Err(Error::ResponseError(ResponseContent { status, content, entity }))
210 }
211}
212
213pub async fn nodes_tasks_get_nodes_by_node_tasks_by_upid(configuration: &configuration::Configuration, node: &str, upid: &str) -> Result<models::NodesTasksGetNodesByNodeTasksByUpidResponse, Error<NodesTasksGetNodesByNodeTasksByUpidError>> {
215 let p_path_node = node;
217 let p_path_upid = upid;
218
219 let uri_str = format!("{}/nodes/{node}/tasks/{upid}", configuration.base_path, node=crate::apis::urlencode(p_path_node), upid=crate::apis::urlencode(p_path_upid));
220 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
221
222 if let Some(ref user_agent) = configuration.user_agent {
223 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
224 }
225 if let Some(ref apikey) = configuration.api_key {
226 let key = apikey.key.clone();
227 let value = match apikey.prefix {
228 Some(ref prefix) => format!("{} {}", prefix, key),
229 None => key,
230 };
231 req_builder = req_builder.header("Authorization", value);
232 };
233 if let Some(ref apikey) = configuration.api_key {
234 let key = apikey.key.clone();
235 let value = match apikey.prefix {
236 Some(ref prefix) => format!("{} {}", prefix, key),
237 None => key,
238 };
239 req_builder = req_builder.header("CSRFPreventionToken", value);
240 };
241
242 let req = req_builder.build()?;
243 let resp = configuration.client.execute(req).await?;
244
245 let status = resp.status();
246 let content_type = resp
247 .headers()
248 .get("content-type")
249 .and_then(|v| v.to_str().ok())
250 .unwrap_or("application/octet-stream");
251 let content_type = super::ContentType::from(content_type);
252
253 if !status.is_client_error() && !status.is_server_error() {
254 let content = resp.text().await?;
255 match content_type {
256 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
257 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesTasksGetNodesByNodeTasksByUpidResponse`"))),
258 ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesTasksGetNodesByNodeTasksByUpidResponse`")))),
259 }
260 } else {
261 let content = resp.text().await?;
262 let entity: Option<NodesTasksGetNodesByNodeTasksByUpidError> = serde_json::from_str(&content).ok();
263 Err(Error::ResponseError(ResponseContent { status, content, entity }))
264 }
265}
266
267pub async fn nodes_tasks_get_status(configuration: &configuration::Configuration, node: &str, upid: &str) -> Result<models::NodesTasksGetStatusResponse, Error<NodesTasksGetStatusError>> {
269 let p_path_node = node;
271 let p_path_upid = upid;
272
273 let uri_str = format!("{}/nodes/{node}/tasks/{upid}/status", configuration.base_path, node=crate::apis::urlencode(p_path_node), upid=crate::apis::urlencode(p_path_upid));
274 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
275
276 if let Some(ref user_agent) = configuration.user_agent {
277 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
278 }
279 if let Some(ref apikey) = configuration.api_key {
280 let key = apikey.key.clone();
281 let value = match apikey.prefix {
282 Some(ref prefix) => format!("{} {}", prefix, key),
283 None => key,
284 };
285 req_builder = req_builder.header("Authorization", value);
286 };
287 if let Some(ref apikey) = configuration.api_key {
288 let key = apikey.key.clone();
289 let value = match apikey.prefix {
290 Some(ref prefix) => format!("{} {}", prefix, key),
291 None => key,
292 };
293 req_builder = req_builder.header("CSRFPreventionToken", value);
294 };
295
296 let req = req_builder.build()?;
297 let resp = configuration.client.execute(req).await?;
298
299 let status = resp.status();
300 let content_type = resp
301 .headers()
302 .get("content-type")
303 .and_then(|v| v.to_str().ok())
304 .unwrap_or("application/octet-stream");
305 let content_type = super::ContentType::from(content_type);
306
307 if !status.is_client_error() && !status.is_server_error() {
308 let content = resp.text().await?;
309 match content_type {
310 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
311 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesTasksGetStatusResponse`"))),
312 ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesTasksGetStatusResponse`")))),
313 }
314 } else {
315 let content = resp.text().await?;
316 let entity: Option<NodesTasksGetStatusError> = serde_json::from_str(&content).ok();
317 Err(Error::ResponseError(ResponseContent { status, content, entity }))
318 }
319}
320
321pub async fn nodes_tasks_get_tasks(configuration: &configuration::Configuration, node: &str, errors: Option<bool>, limit: Option<i64>, running: Option<bool>, since: Option<i64>, start: Option<i64>, statusfilter: Option<Vec<models::PbsNodesTasksInlineEnum>>, store: Option<&str>, typefilter: Option<&str>, until: Option<i64>, userfilter: Option<&str>) -> Result<models::NodesTasksGetTasksResponse, Error<NodesTasksGetTasksError>> {
323 let p_path_node = node;
325 let p_query_errors = errors;
326 let p_query_limit = limit;
327 let p_query_running = running;
328 let p_query_since = since;
329 let p_query_start = start;
330 let p_query_statusfilter = statusfilter;
331 let p_query_store = store;
332 let p_query_typefilter = typefilter;
333 let p_query_until = until;
334 let p_query_userfilter = userfilter;
335
336 let uri_str = format!("{}/nodes/{node}/tasks", configuration.base_path, node=crate::apis::urlencode(p_path_node));
337 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
338
339 if let Some(ref param_value) = p_query_errors {
340 req_builder = req_builder.query(&[("errors", ¶m_value.to_string())]);
341 }
342 if let Some(ref param_value) = p_query_limit {
343 req_builder = req_builder.query(&[("limit", ¶m_value.to_string())]);
344 }
345 if let Some(ref param_value) = p_query_running {
346 req_builder = req_builder.query(&[("running", ¶m_value.to_string())]);
347 }
348 if let Some(ref param_value) = p_query_since {
349 req_builder = req_builder.query(&[("since", ¶m_value.to_string())]);
350 }
351 if let Some(ref param_value) = p_query_start {
352 req_builder = req_builder.query(&[("start", ¶m_value.to_string())]);
353 }
354 if let Some(ref param_value) = p_query_statusfilter {
355 req_builder = match "multi" {
356 "multi" => req_builder.query(¶m_value.into_iter().map(|p| ("statusfilter".to_owned(), p.to_string())).collect::<Vec<(std::string::String, std::string::String)>>()),
357 _ => req_builder.query(&[("statusfilter", ¶m_value.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string())]),
358 };
359 }
360 if let Some(ref param_value) = p_query_store {
361 req_builder = req_builder.query(&[("store", ¶m_value.to_string())]);
362 }
363 if let Some(ref param_value) = p_query_typefilter {
364 req_builder = req_builder.query(&[("typefilter", ¶m_value.to_string())]);
365 }
366 if let Some(ref param_value) = p_query_until {
367 req_builder = req_builder.query(&[("until", ¶m_value.to_string())]);
368 }
369 if let Some(ref param_value) = p_query_userfilter {
370 req_builder = req_builder.query(&[("userfilter", ¶m_value.to_string())]);
371 }
372 if let Some(ref user_agent) = configuration.user_agent {
373 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
374 }
375 if let Some(ref apikey) = configuration.api_key {
376 let key = apikey.key.clone();
377 let value = match apikey.prefix {
378 Some(ref prefix) => format!("{} {}", prefix, key),
379 None => key,
380 };
381 req_builder = req_builder.header("Authorization", value);
382 };
383 if let Some(ref apikey) = configuration.api_key {
384 let key = apikey.key.clone();
385 let value = match apikey.prefix {
386 Some(ref prefix) => format!("{} {}", prefix, key),
387 None => key,
388 };
389 req_builder = req_builder.header("CSRFPreventionToken", value);
390 };
391
392 let req = req_builder.build()?;
393 let resp = configuration.client.execute(req).await?;
394
395 let status = resp.status();
396 let content_type = resp
397 .headers()
398 .get("content-type")
399 .and_then(|v| v.to_str().ok())
400 .unwrap_or("application/octet-stream");
401 let content_type = super::ContentType::from(content_type);
402
403 if !status.is_client_error() && !status.is_server_error() {
404 let content = resp.text().await?;
405 match content_type {
406 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
407 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesTasksGetTasksResponse`"))),
408 ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::NodesTasksGetTasksResponse`")))),
409 }
410 } else {
411 let content = resp.text().await?;
412 let entity: Option<NodesTasksGetTasksError> = serde_json::from_str(&content).ok();
413 Err(Error::ResponseError(ResponseContent { status, content, entity }))
414 }
415}
416