diff --git a/harmony/src/domain/topology/oberservability/monitoring.rs b/harmony/src/domain/topology/oberservability/monitoring.rs index 35e8b33..6646c5a 100644 --- a/harmony/src/domain/topology/oberservability/monitoring.rs +++ b/harmony/src/domain/topology/oberservability/monitoring.rs @@ -1,6 +1,5 @@ use async_trait::async_trait; -use dyn_clone::DynClone; use std::fmt::Debug; use url::Url; @@ -9,7 +8,7 @@ use crate::interpret::InterpretError; use crate::{interpret::Outcome, topology::Topology}; /// Represents an entity responsible for collecting and organizing observability data -/// from various telemetry sources +/// from various telemetry sources /// A `Monitor` abstracts the logic required to scrape, aggregate, and structure /// monitoring data, enabling consistent processing regardless of the underlying data source. #[async_trait] @@ -17,23 +16,16 @@ pub trait Monitor: Debug + Send + Sync { async fn deploy_monitor( &self, topology: &T, - alert_receivers: Vec>>, + alert_receivers: Vec, ) -> Result; async fn delete_monitor( &self, topolgy: &T, - alert_receivers: Vec>>, + alert_receivers: Vec, ) -> Result; } -#[async_trait] -pub trait AlertReceiver: Debug + DynClone + Send + Sync { - fn get_alert_receiver_config(&self) -> AlertReceiverConfig; -} - -pub struct AlertReceiverConfig { +pub struct AlertReceiver { pub receiver_id: String, - pub receiver_webhook_url: Option, - pub send_resolved: bool, } diff --git a/harmony/src/modules/monitoring/discord_webhook_sender.rs b/harmony/src/modules/monitoring/discord_webhook_sender.rs index 28bdcb9..1b12fac 100644 --- a/harmony/src/modules/monitoring/discord_webhook_sender.rs +++ b/harmony/src/modules/monitoring/discord_webhook_sender.rs @@ -1,12 +1,12 @@ use async_trait::async_trait; +use serde_json::Value; use url::Url; use crate::{ interpret::{InterpretError, Outcome}, - topology::{ - K8sAnywhereTopology, Topology, - oberservability::monitoring::{AlertReceiver, AlertReceiverConfig}, - }, + topology:: + K8sAnywhereTopology + , }; #[derive(Debug, Clone)] @@ -28,14 +28,15 @@ pub trait DiscordWebhookReceiver { ) -> Result; } +// trait used to generate alert manager config values impl Monitor for KubePrometheus +pub trait AlertManagerConfig { + fn get_alert_manager_config(&self) -> Result; +} + #[async_trait] -impl AlertReceiver for DiscordWebhookConfig { - fn get_alert_receiver_config(&self) -> AlertReceiverConfig { - AlertReceiverConfig { - receiver_id: self.name.clone(), - receiver_webhook_url: Some(self.webhook_url.clone()), - send_resolved: self.send_resolved_notifications.clone(), - } +impl AlertManagerConfig for DiscordWebhookConfig { + fn get_alert_manager_config(&self) -> Result{ + todo!() } } @@ -54,3 +55,4 @@ impl DiscordWebhookReceiver for K8sAnywhereTopology { todo!() } } +