firecracker_http_client/
drive.rs

1use crate::models::Drive;
2use crate::FirecrackerError;
3use async_trait::async_trait;
4
5#[async_trait]
6pub trait DriveOperations {
7    async fn put_drive(&self, drive_id: &str, drive: &Drive) -> Result<(), FirecrackerError>;
8    async fn patch_drive(&self, drive_id: &str, drive: &Drive) -> Result<(), FirecrackerError>;
9}
10
11#[async_trait]
12impl DriveOperations for crate::FirecrackerClient {
13    async fn put_drive(&self, drive_id: &str, drive: &Drive) -> Result<(), FirecrackerError> {
14        let url = self.url(&format!("drives/{}", drive_id))?;
15        let response = self.client.put(url).json(drive).send().await?;
16
17        if !response.status().is_success() {
18            return Err(FirecrackerError::Api {
19                status_code: response.status().as_u16(),
20                message: response.text().await?,
21            });
22        }
23
24        Ok(())
25    }
26
27    async fn patch_drive(&self, drive_id: &str, drive: &Drive) -> Result<(), FirecrackerError> {
28        let url = self.url(&format!("drives/{}", drive_id))?;
29        let response = self.client.patch(url).json(drive).send().await?;
30
31        if !response.status().is_success() {
32            return Err(FirecrackerError::Api {
33                status_code: response.status().as_u16(),
34                message: response.text().await?,
35            });
36        }
37
38        Ok(())
39    }
40}