soma_infra/
docker_provider.rs1use std::sync::Arc;
2
3use async_trait::async_trait;
4use soma_fleet::HostRecord;
5use tokio_util::sync::CancellationToken;
6
7use crate::{
8 ContainerReader, DockerSystemReader, ImageReader, InfraResult, NetworkReader, VolumeReader,
9};
10
11#[async_trait]
13pub trait DockerClientProvider: Send + Sync {
14 async fn client(
16 &self,
17 host: &HostRecord,
18 cancellation: &CancellationToken,
19 ) -> InfraResult<Arc<dyn DockerReadClient>>;
20}
21
22pub trait DockerReadClient:
24 DockerSystemReader
25 + ContainerReader
26 + ImageReader
27 + NetworkReader
28 + VolumeReader
29 + crate::DockerTelemetryReader
30{
31}
32
33impl<T> DockerReadClient for T where
34 T: DockerSystemReader
35 + ContainerReader
36 + ImageReader
37 + NetworkReader
38 + VolumeReader
39 + crate::DockerTelemetryReader
40{
41}
42
43#[cfg(test)]
44#[path = "docker_provider_tests.rs"]
45mod tests;