diff --git a/harmony/src/domain/topology/oberservability/monitoring.rs b/harmony/src/domain/topology/oberservability/monitoring.rs index 951d061..6d7411c 100644 --- a/harmony/src/domain/topology/oberservability/monitoring.rs +++ b/harmony/src/domain/topology/oberservability/monitoring.rs @@ -87,4 +87,5 @@ pub trait AlertRule: std::fmt::Debug + Send + Sync { #[async_trait] pub trait ScrapeTarget: std::fmt::Debug + Send + Sync { async fn install(&self, sender: &S) -> Result; + fn clone_box(&self) -> Box>; } diff --git a/harmony/src/modules/monitoring/application_monitoring/application_monitoring_score.rs b/harmony/src/modules/monitoring/application_monitoring/application_monitoring_score.rs index 0f6e0ec..a5ffc0c 100644 --- a/harmony/src/modules/monitoring/application_monitoring/application_monitoring_score.rs +++ b/harmony/src/modules/monitoring/application_monitoring/application_monitoring_score.rs @@ -14,8 +14,7 @@ use crate::{ }, score::Score, topology::{ - K8sclient, Topology, - oberservability::monitoring::{AlertReceiver, AlertingInterpret}, + oberservability::monitoring::{AlertReceiver, AlertingInterpret, ScrapeTarget}, K8sclient, Topology }, }; @@ -35,6 +34,7 @@ impl + K8sclient + Grafana> Sc sender: self.sender.clone(), receivers: self.receivers.clone(), rules: vec![], + scrape_targets: None, }) } diff --git a/harmony/src/modules/monitoring/kube_prometheus/crd/crd_alertmanager_config.rs b/harmony/src/modules/monitoring/kube_prometheus/crd/crd_alertmanager_config.rs index ceeca41..fd0c6bc 100644 --- a/harmony/src/modules/monitoring/kube_prometheus/crd/crd_alertmanager_config.rs +++ b/harmony/src/modules/monitoring/kube_prometheus/crd/crd_alertmanager_config.rs @@ -15,10 +15,7 @@ use crate::{ prometheus::prometheus::PrometheusMonitoring, }, topology::{ - K8sclient, Topology, - installable::Installable, - k8s::K8sClient, - oberservability::monitoring::{AlertReceiver, AlertSender}, + installable::Installable, k8s::K8sClient, oberservability::monitoring::{AlertReceiver, AlertSender, ScrapeTarget}, K8sclient, Topology }, }; @@ -54,6 +51,12 @@ impl Clone for Box> { } } +impl Clone for Box> { + fn clone(&self) -> Self { + self.clone_box() + } +} + impl Serialize for Box> { fn serialize(&self, _serializer: S) -> Result where diff --git a/harmony/src/modules/monitoring/scrape_target/server.rs b/harmony/src/modules/monitoring/scrape_target/server.rs index ba41f49..178e914 100644 --- a/harmony/src/modules/monitoring/scrape_target/server.rs +++ b/harmony/src/modules/monitoring/scrape_target/server.rs @@ -73,4 +73,8 @@ impl ScrapeTarget for Server { self.name.clone() ))) } + + fn clone_box(&self) -> Box> { + Box::new(self.clone()) + } }