Implement find_enabled_services method in DockerAdapter; update Docker struct and main function to retrieve and display enabled services.
All checks were successful
ci/woodpecker/push/test/1 Pipeline was successful
ci/woodpecker/push/test/2 Pipeline was successful

This commit is contained in:
2025-11-13 22:19:42 +00:00
parent 05a839044c
commit 9b7d07cdae
4 changed files with 36 additions and 3 deletions

View File

@@ -1,4 +1,4 @@
use bollard::Docker;
use bollard::{Docker, query_parameters::ListServicesOptions};
use std::sync::Arc;
use tokio::sync::Mutex;
@@ -40,6 +40,28 @@ impl crate::docker::DockerAdapter for BollardAdapter {
Err(anyhow::anyhow!("Docker client is not connected"))
}
}
async fn find_enabled_services(&self) -> anyhow::Result<Vec<String>> {
let client = self.client.lock().await;
let docker = client.as_ref().ok_or_else(|| anyhow::anyhow!("Docker client is not connected"))?;
let services = docker.list_services(None::<ListServicesOptions>).await?;
let mut enabled_services = Vec::new();
for service in services {
if let Some(spec) = service.spec {
let enabled = spec.labels
.map(|hash| hash.contains_key("beekeper.enable"))
.is_some();
if enabled && let Some(name) = spec.name {
enabled_services.push(name);
}
}
}
Ok(enabled_services)
}
}
impl Default for BollardAdapter {