Skip to main content

ciab_core/traits/
image_builder.rs

1use async_trait::async_trait;
2use uuid::Uuid;
3
4use crate::error::CiabResult;
5use crate::types::image::{BuiltImage, ImageBuildRequest, ImageBuildResult, ImageBuildStatus};
6
7/// Trait for building machine images (e.g., AMIs via Packer).
8#[async_trait]
9pub trait ImageBuilder: Send + Sync {
10    async fn build_image(&self, request: &ImageBuildRequest) -> CiabResult<ImageBuildResult>;
11    async fn list_images(&self) -> CiabResult<Vec<BuiltImage>>;
12    async fn delete_image(&self, image_id: &str) -> CiabResult<()>;
13    async fn build_status(&self, build_id: &Uuid) -> CiabResult<ImageBuildStatus>;
14}