Skip to main content

clientapi_pve/apis/
cluster_metrics_api.rs

1/*
2 * Proxmox Virtual Environment API
3 *
4 * Generated from apidoc.js. NOT an official Proxmox specification. See https://pve.proxmox.com/pve-docs/api-viewer/ for the upstream documentation.
5 *
6 * The version of the OpenAPI document: 9.x
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`cluster_metrics_create_server`]
19#[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/// struct for typed errors of method [`cluster_metrics_delete_server`]
33#[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/// struct for typed errors of method [`cluster_metrics_export`]
47#[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/// struct for typed errors of method [`cluster_metrics_get_metrics`]
61#[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/// struct for typed errors of method [`cluster_metrics_get_server`]
75#[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/// struct for typed errors of method [`cluster_metrics_server_index`]
89#[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/// struct for typed errors of method [`cluster_metrics_update_server`]
103#[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
117/// Create a new external metric server config
118pub async fn cluster_metrics_create_server(configuration: &configuration::Configuration, id: &str, cluster_metrics_create_server_request: models::ClusterMetricsCreateServerRequest) -> Result<models::ClusterMetricsCreateServerResponse, Error<ClusterMetricsCreateServerError>> {
119    // add a prefix to parameters to efficiently prevent name collisions
120    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
172/// Remove Metric server.
173pub async fn cluster_metrics_delete_server(configuration: &configuration::Configuration, id: &str) -> Result<models::ClusterMetricsDeleteServerResponse, Error<ClusterMetricsDeleteServerError>> {
174    // add a prefix to parameters to efficiently prevent name collisions
175    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
225/// Retrieve metrics of the cluster.
226pub 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    // add a prefix to parameters to efficiently prevent name collisions
228    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", &param_value.to_string())]);
238    }
239    if let Some(ref param_value) = p_query_local_only {
240        req_builder = req_builder.query(&[("local-only", &param_value.to_string())]);
241    }
242    if let Some(ref param_value) = p_query_node_list {
243        req_builder = req_builder.query(&[("node-list", &param_value.to_string())]);
244    }
245    if let Some(ref param_value) = p_query_start_time {
246        req_builder = req_builder.query(&[("start-time", &param_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
293/// Metrics index.
294pub 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
344/// Read metric server configuration.
345pub async fn cluster_metrics_get_server(configuration: &configuration::Configuration, id: &str) -> Result<models::ClusterMetricsGetServerResponse, Error<ClusterMetricsGetServerError>> {
346    // add a prefix to parameters to efficiently prevent name collisions
347    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
397/// List configured metric servers.
398pub 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
448/// Update metric server configuration.
449pub async fn cluster_metrics_update_server(configuration: &configuration::Configuration, id: &str, cluster_metrics_update_server_request: models::ClusterMetricsUpdateServerRequest) -> Result<models::ClusterMetricsUpdateServerResponse, Error<ClusterMetricsUpdateServerError>> {
450    // add a prefix to parameters to efficiently prevent name collisions
451    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