Implement find_enabled_services method in DockerAdapter; update Docker struct and main function to retrieve and display enabled services.
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user