firecracker_http_client/
network.rs1use 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}