firecracker_http_client/
network.rs

1use crate::models::NetworkInterface;
2use crate::FirecrackerError;
3use async_trait::async_trait;
4
5#[async_trait]
6pub trait NetworkInterfaceOperations {
7    async fn put_network_interface(
8        &self,
9        iface_id: &str,
10        interface: &NetworkInterface,
11    ) -> Result<(), FirecrackerError>;
12    async fn patch_network_interface(
13        &self,
14        iface_id: &str,
15        interface: &NetworkInterface,
16    ) -> Result<(), FirecrackerError>;
17}
18
19#[async_trait]
20impl NetworkInterfaceOperations for crate::FirecrackerClient {
21    async fn put_network_interface(
22        &self,
23        iface_id: &str,
24        interface: &NetworkInterface,
25    ) -> Result<(), FirecrackerError> {
26        let url = self.url(&format!("network-interfaces/{}", iface_id))?;
27        let response = self.client.put(url).json(interface).send().await?;
28
29        if !response.status().is_success() {
30            return Err(FirecrackerError::Api {
31                status_code: response.status().as_u16(),
32                message: response.text().await?,
33            });
34        }
35
36        Ok(())
37    }
38
39    async fn patch_network_interface(
40        &self,
41        iface_id: &str,
42        interface: &NetworkInterface,
43    ) -> Result<(), FirecrackerError> {
44        let url = self.url(&format!("network-interfaces/{}", iface_id))?;
45        let response = self.client.patch(url).json(interface).send().await?;
46
47        if !response.status().is_success() {
48            return Err(FirecrackerError::Api {
49                status_code: response.status().as_u16(),
50                message: response.text().await?,
51            });
52        }
53
54        Ok(())
55    }
56}