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 ClusterMetricsCreateServerError {
22 Status400(models::PveError),
23 Status401(models::PveError),
24 Status403(models::PveError),
25 Status404(models::PveError),
26 Status500(models::PveError),
27 Status501(models::PveError),
28 Status503(models::PveError),
29 UnknownValue(serde_json::Value),
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum ClusterMetricsDeleteServerError {
36 Status400(models::PveError),
37 Status401(models::PveError),
38 Status403(models::PveError),
39 Status404(models::PveError),
40 Status500(models::PveError),
41 Status501(models::PveError),
42 Status503(models::PveError),
43 UnknownValue(serde_json::Value),
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum ClusterMetricsExportError {
50 Status400(models::PveError),
51 Status401(models::PveError),
52 Status403(models::PveError),
53 Status404(models::PveError),
54 Status500(models::PveError),
55 Status501(models::PveError),
56 Status503(models::PveError),
57 UnknownValue(serde_json::Value),
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum ClusterMetricsGetMetricsError {
64 Status400(models::PveError),
65 Status401(models::PveError),
66 Status403(models::PveError),
67 Status404(models::PveError),
68 Status500(models::PveError),
69 Status501(models::PveError),
70 Status503(models::PveError),
71 UnknownValue(serde_json::Value),
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum ClusterMetricsGetServerError {
78 Status400(models::PveError),
79 Status401(models::PveError),
80 Status403(models::PveError),
81 Status404(models::PveError),
82 Status500(models::PveError),
83 Status501(models::PveError),
84 Status503(models::PveError),
85 UnknownValue(serde_json::Value),
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum ClusterMetricsServerIndexError {
92 Status400(models::PveError),
93 Status401(models::PveError),
94 Status403(models::PveError),
95 Status404(models::PveError),
96 Status500(models::PveError),
97 Status501(models::PveError),
98 Status503(models::PveError),
99 UnknownValue(serde_json::Value),
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum ClusterMetricsUpdateServerError {
106 Status400(models::PveError),
107 Status401(models::PveError),
108 Status403(models::PveError),
109 Status404(models::PveError),
110 Status500(models::PveError),
111 Status501(models::PveError),
112 Status503(models::PveError),
113 UnknownValue(serde_json::Value),
114}
115
116
117pub async fn cluster_metrics_create_server(configuration: &configuration::Configuration, id: &str, cluster_metrics_create_server_request: models::ClusterMetricsCreateServerRequest) -> Result<models::ClusterMetricsCreateServerResponse, Error<ClusterMetricsCreateServerError>> {
119 let p_path_id = id;
121 let p_body_cluster_metrics_create_server_request = cluster_metrics_create_server_request;
122
123 let uri_str = format!("{}/cluster/metrics/server/{id}", configuration.base_path, id=crate::apis::urlencode(p_path_id));
124 let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
125
126 if let Some(ref user_agent) = configuration.user_agent {
127 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
128 }
129 if let Some(ref apikey) = configuration.api_key {
130 let key = apikey.key.clone();
131 let value = match apikey.prefix {
132 Some(ref prefix) => format!("{} {}", prefix, key),
133 None => key,
134 };
135 req_builder = req_builder.header("Authorization", value);
136 };
137 if let Some(ref apikey) = configuration.api_key {
138 let key = apikey.key.clone();
139 let value = match apikey.prefix {
140 Some(ref prefix) => format!("{} {}", prefix, key),
141 None => key,
142 };
143 req_builder = req_builder.header("CSRFPreventionToken", value);
144 };
145 req_builder = req_builder.json(&p_body_cluster_metrics_create_server_request);
146
147 let req = req_builder.build()?;
148 let resp = configuration.client.execute(req).await?;
149
150 let status = resp.status();
151 let content_type = resp
152 .headers()
153 .get("content-type")
154 .and_then(|v| v.to_str().ok())
155 .unwrap_or("application/octet-stream");
156 let content_type = super::ContentType::from(content_type);
157
158 if !status.is_client_error() && !status.is_server_error() {
159 let content = resp.text().await?;
160 match content_type {
161 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
162 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsCreateServerResponse`"))),
163 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::ClusterMetricsCreateServerResponse`")))),
164 }
165 } else {
166 let content = resp.text().await?;
167 let entity: Option<ClusterMetricsCreateServerError> = serde_json::from_str(&content).ok();
168 Err(Error::ResponseError(ResponseContent { status, content, entity }))
169 }
170}
171
172pub async fn cluster_metrics_delete_server(configuration: &configuration::Configuration, id: &str) -> Result<models::ClusterMetricsDeleteServerResponse, Error<ClusterMetricsDeleteServerError>> {
174 let p_path_id = id;
176
177 let uri_str = format!("{}/cluster/metrics/server/{id}", configuration.base_path, id=crate::apis::urlencode(p_path_id));
178 let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
179
180 if let Some(ref user_agent) = configuration.user_agent {
181 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
182 }
183 if let Some(ref apikey) = configuration.api_key {
184 let key = apikey.key.clone();
185 let value = match apikey.prefix {
186 Some(ref prefix) => format!("{} {}", prefix, key),
187 None => key,
188 };
189 req_builder = req_builder.header("Authorization", value);
190 };
191 if let Some(ref apikey) = configuration.api_key {
192 let key = apikey.key.clone();
193 let value = match apikey.prefix {
194 Some(ref prefix) => format!("{} {}", prefix, key),
195 None => key,
196 };
197 req_builder = req_builder.header("CSRFPreventionToken", value);
198 };
199
200 let req = req_builder.build()?;
201 let resp = configuration.client.execute(req).await?;
202
203 let status = resp.status();
204 let content_type = resp
205 .headers()
206 .get("content-type")
207 .and_then(|v| v.to_str().ok())
208 .unwrap_or("application/octet-stream");
209 let content_type = super::ContentType::from(content_type);
210
211 if !status.is_client_error() && !status.is_server_error() {
212 let content = resp.text().await?;
213 match content_type {
214 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
215 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsDeleteServerResponse`"))),
216 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::ClusterMetricsDeleteServerResponse`")))),
217 }
218 } else {
219 let content = resp.text().await?;
220 let entity: Option<ClusterMetricsDeleteServerError> = serde_json::from_str(&content).ok();
221 Err(Error::ResponseError(ResponseContent { status, content, entity }))
222 }
223}
224
225pub async fn cluster_metrics_export(configuration: &configuration::Configuration, history: Option<models::PveBoolean>, local_only: Option<models::PveBoolean>, node_list: Option<&str>, start_time: Option<i64>) -> Result<models::ClusterMetricsExportResponse, Error<ClusterMetricsExportError>> {
227 let p_query_history = history;
229 let p_query_local_only = local_only;
230 let p_query_node_list = node_list;
231 let p_query_start_time = start_time;
232
233 let uri_str = format!("{}/cluster/metrics/export", configuration.base_path);
234 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
235
236 if let Some(ref param_value) = p_query_history {
237 req_builder = req_builder.query(&[("history", ¶m_value.to_string())]);
238 }
239 if let Some(ref param_value) = p_query_local_only {
240 req_builder = req_builder.query(&[("local-only", ¶m_value.to_string())]);
241 }
242 if let Some(ref param_value) = p_query_node_list {
243 req_builder = req_builder.query(&[("node-list", ¶m_value.to_string())]);
244 }
245 if let Some(ref param_value) = p_query_start_time {
246 req_builder = req_builder.query(&[("start-time", ¶m_value.to_string())]);
247 }
248 if let Some(ref user_agent) = configuration.user_agent {
249 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
250 }
251 if let Some(ref apikey) = configuration.api_key {
252 let key = apikey.key.clone();
253 let value = match apikey.prefix {
254 Some(ref prefix) => format!("{} {}", prefix, key),
255 None => key,
256 };
257 req_builder = req_builder.header("Authorization", value);
258 };
259 if let Some(ref apikey) = configuration.api_key {
260 let key = apikey.key.clone();
261 let value = match apikey.prefix {
262 Some(ref prefix) => format!("{} {}", prefix, key),
263 None => key,
264 };
265 req_builder = req_builder.header("CSRFPreventionToken", value);
266 };
267
268 let req = req_builder.build()?;
269 let resp = configuration.client.execute(req).await?;
270
271 let status = resp.status();
272 let content_type = resp
273 .headers()
274 .get("content-type")
275 .and_then(|v| v.to_str().ok())
276 .unwrap_or("application/octet-stream");
277 let content_type = super::ContentType::from(content_type);
278
279 if !status.is_client_error() && !status.is_server_error() {
280 let content = resp.text().await?;
281 match content_type {
282 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
283 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsExportResponse`"))),
284 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::ClusterMetricsExportResponse`")))),
285 }
286 } else {
287 let content = resp.text().await?;
288 let entity: Option<ClusterMetricsExportError> = serde_json::from_str(&content).ok();
289 Err(Error::ResponseError(ResponseContent { status, content, entity }))
290 }
291}
292
293pub async fn cluster_metrics_get_metrics(configuration: &configuration::Configuration, ) -> Result<models::ClusterMetricsGetMetricsResponse, Error<ClusterMetricsGetMetricsError>> {
295
296 let uri_str = format!("{}/cluster/metrics", configuration.base_path);
297 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
298
299 if let Some(ref user_agent) = configuration.user_agent {
300 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
301 }
302 if let Some(ref apikey) = configuration.api_key {
303 let key = apikey.key.clone();
304 let value = match apikey.prefix {
305 Some(ref prefix) => format!("{} {}", prefix, key),
306 None => key,
307 };
308 req_builder = req_builder.header("Authorization", value);
309 };
310 if let Some(ref apikey) = configuration.api_key {
311 let key = apikey.key.clone();
312 let value = match apikey.prefix {
313 Some(ref prefix) => format!("{} {}", prefix, key),
314 None => key,
315 };
316 req_builder = req_builder.header("CSRFPreventionToken", value);
317 };
318
319 let req = req_builder.build()?;
320 let resp = configuration.client.execute(req).await?;
321
322 let status = resp.status();
323 let content_type = resp
324 .headers()
325 .get("content-type")
326 .and_then(|v| v.to_str().ok())
327 .unwrap_or("application/octet-stream");
328 let content_type = super::ContentType::from(content_type);
329
330 if !status.is_client_error() && !status.is_server_error() {
331 let content = resp.text().await?;
332 match content_type {
333 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
334 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsGetMetricsResponse`"))),
335 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::ClusterMetricsGetMetricsResponse`")))),
336 }
337 } else {
338 let content = resp.text().await?;
339 let entity: Option<ClusterMetricsGetMetricsError> = serde_json::from_str(&content).ok();
340 Err(Error::ResponseError(ResponseContent { status, content, entity }))
341 }
342}
343
344pub async fn cluster_metrics_get_server(configuration: &configuration::Configuration, id: &str) -> Result<models::ClusterMetricsGetServerResponse, Error<ClusterMetricsGetServerError>> {
346 let p_path_id = id;
348
349 let uri_str = format!("{}/cluster/metrics/server/{id}", configuration.base_path, id=crate::apis::urlencode(p_path_id));
350 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
351
352 if let Some(ref user_agent) = configuration.user_agent {
353 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
354 }
355 if let Some(ref apikey) = configuration.api_key {
356 let key = apikey.key.clone();
357 let value = match apikey.prefix {
358 Some(ref prefix) => format!("{} {}", prefix, key),
359 None => key,
360 };
361 req_builder = req_builder.header("Authorization", value);
362 };
363 if let Some(ref apikey) = configuration.api_key {
364 let key = apikey.key.clone();
365 let value = match apikey.prefix {
366 Some(ref prefix) => format!("{} {}", prefix, key),
367 None => key,
368 };
369 req_builder = req_builder.header("CSRFPreventionToken", value);
370 };
371
372 let req = req_builder.build()?;
373 let resp = configuration.client.execute(req).await?;
374
375 let status = resp.status();
376 let content_type = resp
377 .headers()
378 .get("content-type")
379 .and_then(|v| v.to_str().ok())
380 .unwrap_or("application/octet-stream");
381 let content_type = super::ContentType::from(content_type);
382
383 if !status.is_client_error() && !status.is_server_error() {
384 let content = resp.text().await?;
385 match content_type {
386 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
387 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsGetServerResponse`"))),
388 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::ClusterMetricsGetServerResponse`")))),
389 }
390 } else {
391 let content = resp.text().await?;
392 let entity: Option<ClusterMetricsGetServerError> = serde_json::from_str(&content).ok();
393 Err(Error::ResponseError(ResponseContent { status, content, entity }))
394 }
395}
396
397pub async fn cluster_metrics_server_index(configuration: &configuration::Configuration, ) -> Result<models::ClusterMetricsServerIndexResponse, Error<ClusterMetricsServerIndexError>> {
399
400 let uri_str = format!("{}/cluster/metrics/server", configuration.base_path);
401 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
402
403 if let Some(ref user_agent) = configuration.user_agent {
404 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
405 }
406 if let Some(ref apikey) = configuration.api_key {
407 let key = apikey.key.clone();
408 let value = match apikey.prefix {
409 Some(ref prefix) => format!("{} {}", prefix, key),
410 None => key,
411 };
412 req_builder = req_builder.header("Authorization", value);
413 };
414 if let Some(ref apikey) = configuration.api_key {
415 let key = apikey.key.clone();
416 let value = match apikey.prefix {
417 Some(ref prefix) => format!("{} {}", prefix, key),
418 None => key,
419 };
420 req_builder = req_builder.header("CSRFPreventionToken", value);
421 };
422
423 let req = req_builder.build()?;
424 let resp = configuration.client.execute(req).await?;
425
426 let status = resp.status();
427 let content_type = resp
428 .headers()
429 .get("content-type")
430 .and_then(|v| v.to_str().ok())
431 .unwrap_or("application/octet-stream");
432 let content_type = super::ContentType::from(content_type);
433
434 if !status.is_client_error() && !status.is_server_error() {
435 let content = resp.text().await?;
436 match content_type {
437 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
438 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsServerIndexResponse`"))),
439 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::ClusterMetricsServerIndexResponse`")))),
440 }
441 } else {
442 let content = resp.text().await?;
443 let entity: Option<ClusterMetricsServerIndexError> = serde_json::from_str(&content).ok();
444 Err(Error::ResponseError(ResponseContent { status, content, entity }))
445 }
446}
447
448pub async fn cluster_metrics_update_server(configuration: &configuration::Configuration, id: &str, cluster_metrics_update_server_request: models::ClusterMetricsUpdateServerRequest) -> Result<models::ClusterMetricsUpdateServerResponse, Error<ClusterMetricsUpdateServerError>> {
450 let p_path_id = id;
452 let p_body_cluster_metrics_update_server_request = cluster_metrics_update_server_request;
453
454 let uri_str = format!("{}/cluster/metrics/server/{id}", configuration.base_path, id=crate::apis::urlencode(p_path_id));
455 let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
456
457 if let Some(ref user_agent) = configuration.user_agent {
458 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
459 }
460 if let Some(ref apikey) = configuration.api_key {
461 let key = apikey.key.clone();
462 let value = match apikey.prefix {
463 Some(ref prefix) => format!("{} {}", prefix, key),
464 None => key,
465 };
466 req_builder = req_builder.header("Authorization", value);
467 };
468 if let Some(ref apikey) = configuration.api_key {
469 let key = apikey.key.clone();
470 let value = match apikey.prefix {
471 Some(ref prefix) => format!("{} {}", prefix, key),
472 None => key,
473 };
474 req_builder = req_builder.header("CSRFPreventionToken", value);
475 };
476 req_builder = req_builder.json(&p_body_cluster_metrics_update_server_request);
477
478 let req = req_builder.build()?;
479 let resp = configuration.client.execute(req).await?;
480
481 let status = resp.status();
482 let content_type = resp
483 .headers()
484 .get("content-type")
485 .and_then(|v| v.to_str().ok())
486 .unwrap_or("application/octet-stream");
487 let content_type = super::ContentType::from(content_type);
488
489 if !status.is_client_error() && !status.is_server_error() {
490 let content = resp.text().await?;
491 match content_type {
492 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
493 ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ClusterMetricsUpdateServerResponse`"))),
494 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::ClusterMetricsUpdateServerResponse`")))),
495 }
496 } else {
497 let content = resp.text().await?;
498 let entity: Option<ClusterMetricsUpdateServerError> = serde_json::from_str(&content).ok();
499 Err(Error::ResponseError(ResponseContent { status, content, entity }))
500 }
501}
502