Skip to main content

clientapi_pve/apis/
nodes_network_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 [`nodes_network_create_network`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum NodesNetworkCreateNetworkError {
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 [`nodes_network_delete_network`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum NodesNetworkDeleteNetworkError {
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 [`nodes_network_get_network`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum NodesNetworkGetNetworkError {
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 [`nodes_network_network_config`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum NodesNetworkNetworkConfigError {
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 [`nodes_network_reload_network_config`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum NodesNetworkReloadNetworkConfigError {
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 [`nodes_network_revert_network_changes`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum NodesNetworkRevertNetworkChangesError {
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 [`nodes_network_update_network`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum NodesNetworkUpdateNetworkError {
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 network device configuration
118pub async fn nodes_network_create_network(configuration: &configuration::Configuration, node: &str, nodes_network_create_network_request: models::NodesNetworkCreateNetworkRequest) -> Result<models::NodesNetworkCreateNetworkResponse, Error<NodesNetworkCreateNetworkError>> {
119    // add a prefix to parameters to efficiently prevent name collisions
120    let p_path_node = node;
121    let p_body_nodes_network_create_network_request = nodes_network_create_network_request;
122
123    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
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_nodes_network_create_network_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::NodesNetworkCreateNetworkResponse`"))),
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::NodesNetworkCreateNetworkResponse`")))),
164        }
165    } else {
166        let content = resp.text().await?;
167        let entity: Option<NodesNetworkCreateNetworkError> = serde_json::from_str(&content).ok();
168        Err(Error::ResponseError(ResponseContent { status, content, entity }))
169    }
170}
171
172/// Delete network device configuration
173pub async fn nodes_network_delete_network(configuration: &configuration::Configuration, iface: &str, node: &str) -> Result<models::NodesNetworkDeleteNetworkResponse, Error<NodesNetworkDeleteNetworkError>> {
174    // add a prefix to parameters to efficiently prevent name collisions
175    let p_path_iface = iface;
176    let p_path_node = node;
177
178    let uri_str = format!("{}/nodes/{node}/network/{iface}", configuration.base_path, iface=crate::apis::urlencode(p_path_iface), node=crate::apis::urlencode(p_path_node));
179    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
180
181    if let Some(ref user_agent) = configuration.user_agent {
182        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
183    }
184    if let Some(ref apikey) = configuration.api_key {
185        let key = apikey.key.clone();
186        let value = match apikey.prefix {
187            Some(ref prefix) => format!("{} {}", prefix, key),
188            None => key,
189        };
190        req_builder = req_builder.header("Authorization", value);
191    };
192    if let Some(ref apikey) = configuration.api_key {
193        let key = apikey.key.clone();
194        let value = match apikey.prefix {
195            Some(ref prefix) => format!("{} {}", prefix, key),
196            None => key,
197        };
198        req_builder = req_builder.header("CSRFPreventionToken", value);
199    };
200
201    let req = req_builder.build()?;
202    let resp = configuration.client.execute(req).await?;
203
204    let status = resp.status();
205    let content_type = resp
206        .headers()
207        .get("content-type")
208        .and_then(|v| v.to_str().ok())
209        .unwrap_or("application/octet-stream");
210    let content_type = super::ContentType::from(content_type);
211
212    if !status.is_client_error() && !status.is_server_error() {
213        let content = resp.text().await?;
214        match content_type {
215            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
216            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkDeleteNetworkResponse`"))),
217            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::NodesNetworkDeleteNetworkResponse`")))),
218        }
219    } else {
220        let content = resp.text().await?;
221        let entity: Option<NodesNetworkDeleteNetworkError> = serde_json::from_str(&content).ok();
222        Err(Error::ResponseError(ResponseContent { status, content, entity }))
223    }
224}
225
226/// List available networks
227pub async fn nodes_network_get_network(configuration: &configuration::Configuration, node: &str, r#type: Option<models::PveNodesNetworkTypeEnum>) -> Result<models::NodesNetworkGetNetworkResponse, Error<NodesNetworkGetNetworkError>> {
228    // add a prefix to parameters to efficiently prevent name collisions
229    let p_path_node = node;
230    let p_query_type = r#type;
231
232    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
233    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
234
235    if let Some(ref param_value) = p_query_type {
236        req_builder = req_builder.query(&[("type", &param_value.to_string())]);
237    }
238    if let Some(ref user_agent) = configuration.user_agent {
239        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
240    }
241    if let Some(ref apikey) = configuration.api_key {
242        let key = apikey.key.clone();
243        let value = match apikey.prefix {
244            Some(ref prefix) => format!("{} {}", prefix, key),
245            None => key,
246        };
247        req_builder = req_builder.header("Authorization", value);
248    };
249    if let Some(ref apikey) = configuration.api_key {
250        let key = apikey.key.clone();
251        let value = match apikey.prefix {
252            Some(ref prefix) => format!("{} {}", prefix, key),
253            None => key,
254        };
255        req_builder = req_builder.header("CSRFPreventionToken", value);
256    };
257
258    let req = req_builder.build()?;
259    let resp = configuration.client.execute(req).await?;
260
261    let status = resp.status();
262    let content_type = resp
263        .headers()
264        .get("content-type")
265        .and_then(|v| v.to_str().ok())
266        .unwrap_or("application/octet-stream");
267    let content_type = super::ContentType::from(content_type);
268
269    if !status.is_client_error() && !status.is_server_error() {
270        let content = resp.text().await?;
271        match content_type {
272            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
273            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkGetNetworkResponse`"))),
274            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::NodesNetworkGetNetworkResponse`")))),
275        }
276    } else {
277        let content = resp.text().await?;
278        let entity: Option<NodesNetworkGetNetworkError> = serde_json::from_str(&content).ok();
279        Err(Error::ResponseError(ResponseContent { status, content, entity }))
280    }
281}
282
283/// Read network device configuration
284pub async fn nodes_network_network_config(configuration: &configuration::Configuration, iface: &str, node: &str) -> Result<models::NodesNetworkNetworkConfigResponse, Error<NodesNetworkNetworkConfigError>> {
285    // add a prefix to parameters to efficiently prevent name collisions
286    let p_path_iface = iface;
287    let p_path_node = node;
288
289    let uri_str = format!("{}/nodes/{node}/network/{iface}", configuration.base_path, iface=crate::apis::urlencode(p_path_iface), node=crate::apis::urlencode(p_path_node));
290    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
291
292    if let Some(ref user_agent) = configuration.user_agent {
293        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
294    }
295    if let Some(ref apikey) = configuration.api_key {
296        let key = apikey.key.clone();
297        let value = match apikey.prefix {
298            Some(ref prefix) => format!("{} {}", prefix, key),
299            None => key,
300        };
301        req_builder = req_builder.header("Authorization", value);
302    };
303    if let Some(ref apikey) = configuration.api_key {
304        let key = apikey.key.clone();
305        let value = match apikey.prefix {
306            Some(ref prefix) => format!("{} {}", prefix, key),
307            None => key,
308        };
309        req_builder = req_builder.header("CSRFPreventionToken", value);
310    };
311
312    let req = req_builder.build()?;
313    let resp = configuration.client.execute(req).await?;
314
315    let status = resp.status();
316    let content_type = resp
317        .headers()
318        .get("content-type")
319        .and_then(|v| v.to_str().ok())
320        .unwrap_or("application/octet-stream");
321    let content_type = super::ContentType::from(content_type);
322
323    if !status.is_client_error() && !status.is_server_error() {
324        let content = resp.text().await?;
325        match content_type {
326            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
327            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkNetworkConfigResponse`"))),
328            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::NodesNetworkNetworkConfigResponse`")))),
329        }
330    } else {
331        let content = resp.text().await?;
332        let entity: Option<NodesNetworkNetworkConfigError> = serde_json::from_str(&content).ok();
333        Err(Error::ResponseError(ResponseContent { status, content, entity }))
334    }
335}
336
337/// Reload network configuration
338pub async fn nodes_network_reload_network_config(configuration: &configuration::Configuration, node: &str, nodes_network_reload_network_config_request: Option<models::NodesNetworkReloadNetworkConfigRequest>) -> Result<models::NodesNetworkReloadNetworkConfigResponse, Error<NodesNetworkReloadNetworkConfigError>> {
339    // add a prefix to parameters to efficiently prevent name collisions
340    let p_path_node = node;
341    let p_body_nodes_network_reload_network_config_request = nodes_network_reload_network_config_request;
342
343    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
344    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
345
346    if let Some(ref user_agent) = configuration.user_agent {
347        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
348    }
349    if let Some(ref apikey) = configuration.api_key {
350        let key = apikey.key.clone();
351        let value = match apikey.prefix {
352            Some(ref prefix) => format!("{} {}", prefix, key),
353            None => key,
354        };
355        req_builder = req_builder.header("Authorization", value);
356    };
357    if let Some(ref apikey) = configuration.api_key {
358        let key = apikey.key.clone();
359        let value = match apikey.prefix {
360            Some(ref prefix) => format!("{} {}", prefix, key),
361            None => key,
362        };
363        req_builder = req_builder.header("CSRFPreventionToken", value);
364    };
365    req_builder = req_builder.json(&p_body_nodes_network_reload_network_config_request);
366
367    let req = req_builder.build()?;
368    let resp = configuration.client.execute(req).await?;
369
370    let status = resp.status();
371    let content_type = resp
372        .headers()
373        .get("content-type")
374        .and_then(|v| v.to_str().ok())
375        .unwrap_or("application/octet-stream");
376    let content_type = super::ContentType::from(content_type);
377
378    if !status.is_client_error() && !status.is_server_error() {
379        let content = resp.text().await?;
380        match content_type {
381            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
382            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkReloadNetworkConfigResponse`"))),
383            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::NodesNetworkReloadNetworkConfigResponse`")))),
384        }
385    } else {
386        let content = resp.text().await?;
387        let entity: Option<NodesNetworkReloadNetworkConfigError> = serde_json::from_str(&content).ok();
388        Err(Error::ResponseError(ResponseContent { status, content, entity }))
389    }
390}
391
392/// Revert network configuration changes.
393pub async fn nodes_network_revert_network_changes(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesNetworkRevertNetworkChangesResponse, Error<NodesNetworkRevertNetworkChangesError>> {
394    // add a prefix to parameters to efficiently prevent name collisions
395    let p_path_node = node;
396
397    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
398    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
399
400    if let Some(ref user_agent) = configuration.user_agent {
401        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
402    }
403    if let Some(ref apikey) = configuration.api_key {
404        let key = apikey.key.clone();
405        let value = match apikey.prefix {
406            Some(ref prefix) => format!("{} {}", prefix, key),
407            None => key,
408        };
409        req_builder = req_builder.header("Authorization", value);
410    };
411    if let Some(ref apikey) = configuration.api_key {
412        let key = apikey.key.clone();
413        let value = match apikey.prefix {
414            Some(ref prefix) => format!("{} {}", prefix, key),
415            None => key,
416        };
417        req_builder = req_builder.header("CSRFPreventionToken", value);
418    };
419
420    let req = req_builder.build()?;
421    let resp = configuration.client.execute(req).await?;
422
423    let status = resp.status();
424    let content_type = resp
425        .headers()
426        .get("content-type")
427        .and_then(|v| v.to_str().ok())
428        .unwrap_or("application/octet-stream");
429    let content_type = super::ContentType::from(content_type);
430
431    if !status.is_client_error() && !status.is_server_error() {
432        let content = resp.text().await?;
433        match content_type {
434            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
435            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkRevertNetworkChangesResponse`"))),
436            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::NodesNetworkRevertNetworkChangesResponse`")))),
437        }
438    } else {
439        let content = resp.text().await?;
440        let entity: Option<NodesNetworkRevertNetworkChangesError> = serde_json::from_str(&content).ok();
441        Err(Error::ResponseError(ResponseContent { status, content, entity }))
442    }
443}
444
445/// Update network device configuration
446pub async fn nodes_network_update_network(configuration: &configuration::Configuration, iface: &str, node: &str, nodes_network_update_network_request: models::NodesNetworkUpdateNetworkRequest) -> Result<models::NodesNetworkUpdateNetworkResponse, Error<NodesNetworkUpdateNetworkError>> {
447    // add a prefix to parameters to efficiently prevent name collisions
448    let p_path_iface = iface;
449    let p_path_node = node;
450    let p_body_nodes_network_update_network_request = nodes_network_update_network_request;
451
452    let uri_str = format!("{}/nodes/{node}/network/{iface}", configuration.base_path, iface=crate::apis::urlencode(p_path_iface), node=crate::apis::urlencode(p_path_node));
453    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
454
455    if let Some(ref user_agent) = configuration.user_agent {
456        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
457    }
458    if let Some(ref apikey) = configuration.api_key {
459        let key = apikey.key.clone();
460        let value = match apikey.prefix {
461            Some(ref prefix) => format!("{} {}", prefix, key),
462            None => key,
463        };
464        req_builder = req_builder.header("Authorization", value);
465    };
466    if let Some(ref apikey) = configuration.api_key {
467        let key = apikey.key.clone();
468        let value = match apikey.prefix {
469            Some(ref prefix) => format!("{} {}", prefix, key),
470            None => key,
471        };
472        req_builder = req_builder.header("CSRFPreventionToken", value);
473    };
474    req_builder = req_builder.json(&p_body_nodes_network_update_network_request);
475
476    let req = req_builder.build()?;
477    let resp = configuration.client.execute(req).await?;
478
479    let status = resp.status();
480    let content_type = resp
481        .headers()
482        .get("content-type")
483        .and_then(|v| v.to_str().ok())
484        .unwrap_or("application/octet-stream");
485    let content_type = super::ContentType::from(content_type);
486
487    if !status.is_client_error() && !status.is_server_error() {
488        let content = resp.text().await?;
489        match content_type {
490            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
491            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkUpdateNetworkResponse`"))),
492            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::NodesNetworkUpdateNetworkResponse`")))),
493        }
494    } else {
495        let content = resp.text().await?;
496        let entity: Option<NodesNetworkUpdateNetworkError> = serde_json::from_str(&content).ok();
497        Err(Error::ResponseError(ResponseContent { status, content, entity }))
498    }
499}
500