Skip to main content

clientapi_pbs/apis/
nodes_network_api.rs

1/*
2 * Proxmox Backup Server API
3 *
4 * Generated from apidoc.js. NOT an official Proxmox specification. See https://pbs.proxmox.com/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::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/// 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::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/// struct for typed errors of method [`nodes_network_delete_nodes_by_node_network_by_iface`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum NodesNetworkDeleteNodesByNodeNetworkByIfaceError {
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/// struct for typed errors of method [`nodes_network_get_network`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum NodesNetworkGetNetworkError {
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/// struct for typed errors of method [`nodes_network_get_nodes_by_node_network_by_iface`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum NodesNetworkGetNodesByNodeNetworkByIfaceError {
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/// struct for typed errors of method [`nodes_network_update_network`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum NodesNetworkUpdateNetworkError {
92    Status400(models::PbsError),
93    Status401(models::PbsError),
94    Status403(models::PbsError),
95    Status404(models::PbsError),
96    Status500(models::PbsError),
97    Status501(models::PbsError),
98    Status503(models::PbsError),
99    UnknownValue(serde_json::Value),
100}
101
102/// struct for typed errors of method [`nodes_network_update_nodes_by_node_network_by_iface`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum NodesNetworkUpdateNodesByNodeNetworkByIfaceError {
106    Status400(models::PbsError),
107    Status401(models::PbsError),
108    Status403(models::PbsError),
109    Status404(models::PbsError),
110    Status500(models::PbsError),
111    Status501(models::PbsError),
112    Status503(models::PbsError),
113    UnknownValue(serde_json::Value),
114}
115
116
117/// Create network interface 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/// Revert network configuration (rm /etc/network/interfaces.new).
173pub async fn nodes_network_delete_network(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesNetworkDeleteNetworkResponse, Error<NodesNetworkDeleteNetworkError>> {
174    // add a prefix to parameters to efficiently prevent name collisions
175    let p_path_node = node;
176
177    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
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::NodesNetworkDeleteNetworkResponse`"))),
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::NodesNetworkDeleteNetworkResponse`")))),
217        }
218    } else {
219        let content = resp.text().await?;
220        let entity: Option<NodesNetworkDeleteNetworkError> = serde_json::from_str(&content).ok();
221        Err(Error::ResponseError(ResponseContent { status, content, entity }))
222    }
223}
224
225/// Remove network interface configuration.
226pub async fn nodes_network_delete_nodes_by_node_network_by_iface(configuration: &configuration::Configuration, iface: &str, node: &str, digest: Option<&str>) -> Result<models::NodesNetworkDeleteNodesByNodeNetworkByIfaceResponse, Error<NodesNetworkDeleteNodesByNodeNetworkByIfaceError>> {
227    // add a prefix to parameters to efficiently prevent name collisions
228    let p_path_iface = iface;
229    let p_path_node = node;
230    let p_query_digest = digest;
231
232    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));
233    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
234
235    if let Some(ref param_value) = p_query_digest {
236        req_builder = req_builder.query(&[("digest", &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::NodesNetworkDeleteNodesByNodeNetworkByIfaceResponse`"))),
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::NodesNetworkDeleteNodesByNodeNetworkByIfaceResponse`")))),
275        }
276    } else {
277        let content = resp.text().await?;
278        let entity: Option<NodesNetworkDeleteNodesByNodeNetworkByIfaceError> = serde_json::from_str(&content).ok();
279        Err(Error::ResponseError(ResponseContent { status, content, entity }))
280    }
281}
282
283/// List all datastores
284pub async fn nodes_network_get_network(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesNetworkGetNetworkResponse, Error<NodesNetworkGetNetworkError>> {
285    // add a prefix to parameters to efficiently prevent name collisions
286    let p_path_node = node;
287
288    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
289    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
290
291    if let Some(ref user_agent) = configuration.user_agent {
292        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
293    }
294    if let Some(ref apikey) = configuration.api_key {
295        let key = apikey.key.clone();
296        let value = match apikey.prefix {
297            Some(ref prefix) => format!("{} {}", prefix, key),
298            None => key,
299        };
300        req_builder = req_builder.header("Authorization", value);
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("CSRFPreventionToken", value);
309    };
310
311    let req = req_builder.build()?;
312    let resp = configuration.client.execute(req).await?;
313
314    let status = resp.status();
315    let content_type = resp
316        .headers()
317        .get("content-type")
318        .and_then(|v| v.to_str().ok())
319        .unwrap_or("application/octet-stream");
320    let content_type = super::ContentType::from(content_type);
321
322    if !status.is_client_error() && !status.is_server_error() {
323        let content = resp.text().await?;
324        match content_type {
325            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
326            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkGetNetworkResponse`"))),
327            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`")))),
328        }
329    } else {
330        let content = resp.text().await?;
331        let entity: Option<NodesNetworkGetNetworkError> = serde_json::from_str(&content).ok();
332        Err(Error::ResponseError(ResponseContent { status, content, entity }))
333    }
334}
335
336/// Read a network interface configuration.
337pub async fn nodes_network_get_nodes_by_node_network_by_iface(configuration: &configuration::Configuration, iface: &str, node: &str) -> Result<models::NodesNetworkGetNodesByNodeNetworkByIfaceResponse, Error<NodesNetworkGetNodesByNodeNetworkByIfaceError>> {
338    // add a prefix to parameters to efficiently prevent name collisions
339    let p_path_iface = iface;
340    let p_path_node = node;
341
342    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));
343    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
344
345    if let Some(ref user_agent) = configuration.user_agent {
346        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
347    }
348    if let Some(ref apikey) = configuration.api_key {
349        let key = apikey.key.clone();
350        let value = match apikey.prefix {
351            Some(ref prefix) => format!("{} {}", prefix, key),
352            None => key,
353        };
354        req_builder = req_builder.header("Authorization", value);
355    };
356    if let Some(ref apikey) = configuration.api_key {
357        let key = apikey.key.clone();
358        let value = match apikey.prefix {
359            Some(ref prefix) => format!("{} {}", prefix, key),
360            None => key,
361        };
362        req_builder = req_builder.header("CSRFPreventionToken", value);
363    };
364
365    let req = req_builder.build()?;
366    let resp = configuration.client.execute(req).await?;
367
368    let status = resp.status();
369    let content_type = resp
370        .headers()
371        .get("content-type")
372        .and_then(|v| v.to_str().ok())
373        .unwrap_or("application/octet-stream");
374    let content_type = super::ContentType::from(content_type);
375
376    if !status.is_client_error() && !status.is_server_error() {
377        let content = resp.text().await?;
378        match content_type {
379            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
380            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkGetNodesByNodeNetworkByIfaceResponse`"))),
381            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::NodesNetworkGetNodesByNodeNetworkByIfaceResponse`")))),
382        }
383    } else {
384        let content = resp.text().await?;
385        let entity: Option<NodesNetworkGetNodesByNodeNetworkByIfaceError> = serde_json::from_str(&content).ok();
386        Err(Error::ResponseError(ResponseContent { status, content, entity }))
387    }
388}
389
390/// Reload network configuration (requires ifupdown2).
391pub async fn nodes_network_update_network(configuration: &configuration::Configuration, node: &str) -> Result<models::NodesNetworkUpdateNetworkResponse, Error<NodesNetworkUpdateNetworkError>> {
392    // add a prefix to parameters to efficiently prevent name collisions
393    let p_path_node = node;
394
395    let uri_str = format!("{}/nodes/{node}/network", configuration.base_path, node=crate::apis::urlencode(p_path_node));
396    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
397
398    if let Some(ref user_agent) = configuration.user_agent {
399        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
400    }
401    if let Some(ref apikey) = configuration.api_key {
402        let key = apikey.key.clone();
403        let value = match apikey.prefix {
404            Some(ref prefix) => format!("{} {}", prefix, key),
405            None => key,
406        };
407        req_builder = req_builder.header("Authorization", value);
408    };
409    if let Some(ref apikey) = configuration.api_key {
410        let key = apikey.key.clone();
411        let value = match apikey.prefix {
412            Some(ref prefix) => format!("{} {}", prefix, key),
413            None => key,
414        };
415        req_builder = req_builder.header("CSRFPreventionToken", value);
416    };
417
418    let req = req_builder.build()?;
419    let resp = configuration.client.execute(req).await?;
420
421    let status = resp.status();
422    let content_type = resp
423        .headers()
424        .get("content-type")
425        .and_then(|v| v.to_str().ok())
426        .unwrap_or("application/octet-stream");
427    let content_type = super::ContentType::from(content_type);
428
429    if !status.is_client_error() && !status.is_server_error() {
430        let content = resp.text().await?;
431        match content_type {
432            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
433            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkUpdateNetworkResponse`"))),
434            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`")))),
435        }
436    } else {
437        let content = resp.text().await?;
438        let entity: Option<NodesNetworkUpdateNetworkError> = serde_json::from_str(&content).ok();
439        Err(Error::ResponseError(ResponseContent { status, content, entity }))
440    }
441}
442
443/// Update network interface config.
444pub async fn nodes_network_update_nodes_by_node_network_by_iface(configuration: &configuration::Configuration, iface: &str, node: &str, nodes_network_update_nodes_by_node_network_by_iface_request: Option<models::NodesNetworkUpdateNodesByNodeNetworkByIfaceRequest>) -> Result<models::NodesNetworkUpdateNodesByNodeNetworkByIfaceResponse, Error<NodesNetworkUpdateNodesByNodeNetworkByIfaceError>> {
445    // add a prefix to parameters to efficiently prevent name collisions
446    let p_path_iface = iface;
447    let p_path_node = node;
448    let p_body_nodes_network_update_nodes_by_node_network_by_iface_request = nodes_network_update_nodes_by_node_network_by_iface_request;
449
450    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));
451    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
452
453    if let Some(ref user_agent) = configuration.user_agent {
454        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
455    }
456    if let Some(ref apikey) = configuration.api_key {
457        let key = apikey.key.clone();
458        let value = match apikey.prefix {
459            Some(ref prefix) => format!("{} {}", prefix, key),
460            None => key,
461        };
462        req_builder = req_builder.header("Authorization", value);
463    };
464    if let Some(ref apikey) = configuration.api_key {
465        let key = apikey.key.clone();
466        let value = match apikey.prefix {
467            Some(ref prefix) => format!("{} {}", prefix, key),
468            None => key,
469        };
470        req_builder = req_builder.header("CSRFPreventionToken", value);
471    };
472    req_builder = req_builder.json(&p_body_nodes_network_update_nodes_by_node_network_by_iface_request);
473
474    let req = req_builder.build()?;
475    let resp = configuration.client.execute(req).await?;
476
477    let status = resp.status();
478    let content_type = resp
479        .headers()
480        .get("content-type")
481        .and_then(|v| v.to_str().ok())
482        .unwrap_or("application/octet-stream");
483    let content_type = super::ContentType::from(content_type);
484
485    if !status.is_client_error() && !status.is_server_error() {
486        let content = resp.text().await?;
487        match content_type {
488            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
489            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::NodesNetworkUpdateNodesByNodeNetworkByIfaceResponse`"))),
490            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::NodesNetworkUpdateNodesByNodeNetworkByIfaceResponse`")))),
491        }
492    } else {
493        let content = resp.text().await?;
494        let entity: Option<NodesNetworkUpdateNodesByNodeNetworkByIfaceError> = serde_json::from_str(&content).ok();
495        Err(Error::ResponseError(ResponseContent { status, content, entity }))
496    }
497}
498