From eb8a8a2e0493a846993e86936fda7cb83911b996 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 15 May 2025 15:19:40 -0400 Subject: [PATCH] chore: modified build config to be able to pass namespace to the config --- examples/lamp/src/main.rs | 4 +- .../src/modules/monitoring/kube_prometheus.rs | 2 +- .../modules/monitoring/monitoring_alerting.rs | 41 ++++++++----------- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/examples/lamp/src/main.rs b/examples/lamp/src/main.rs index 06d8534..14180cc 100644 --- a/examples/lamp/src/main.rs +++ b/examples/lamp/src/main.rs @@ -43,8 +43,8 @@ async fn main() { .await .unwrap(); - let monitoring_stack_score = - MonitoringAlertingStackScore::new_with_ns(&lamp_stack.config.namespace); + let mut monitoring_stack_score = MonitoringAlertingStackScore::new(); + monitoring_stack_score.namespace = Some(lamp_stack.config.namespace.clone()); maestro.register_all(vec![Box::new(lamp_stack), Box::new(monitoring_stack_score)]); // Here we bootstrap the CLI, this gives some nice features if you need them diff --git a/harmony/src/modules/monitoring/kube_prometheus.rs b/harmony/src/modules/monitoring/kube_prometheus.rs index 0289d8a..296891e 100644 --- a/harmony/src/modules/monitoring/kube_prometheus.rs +++ b/harmony/src/modules/monitoring/kube_prometheus.rs @@ -4,7 +4,7 @@ use std::{collections::HashMap, str::FromStr}; use crate::modules::helm::chart::HelmChartScore; -pub fn kube_prometheus_score(config: &KubePrometheusConfig) -> HelmChartScore { +pub fn kube_prometheus_helm_chart_score(config: &KubePrometheusConfig) -> HelmChartScore { //TODO this should be make into a rule with default formatting that can be easily passed as a vec //to the overrides or something leaving the user to deal with formatting here seems bad let values = r#" diff --git a/harmony/src/modules/monitoring/monitoring_alerting.rs b/harmony/src/modules/monitoring/monitoring_alerting.rs index f969d7a..0ec6adf 100644 --- a/harmony/src/modules/monitoring/monitoring_alerting.rs +++ b/harmony/src/modules/monitoring/monitoring_alerting.rs @@ -9,7 +9,7 @@ use crate::{ topology::{HelmCommand, Topology}, }; -use super::{config::KubePrometheusConfig, kube_prometheus::kube_prometheus_score}; +use super::{config::KubePrometheusConfig, kube_prometheus::kube_prometheus_helm_chart_score}; #[derive(Debug, Clone, Serialize)] pub enum AlertChannel { @@ -33,9 +33,17 @@ pub enum Stack { pub struct MonitoringAlertingStackScore { pub alert_channel: Option, pub monitoring_stack: Stack, + pub namespace: Option, } impl MonitoringAlertingStackScore { + pub fn new() -> Self { + Self { + alert_channel: None, + monitoring_stack: Stack::KubePrometheusStack, + namespace: None, + } + } fn match_alert_channel(&self, config: &mut KubePrometheusConfig) { if let Some(alert_channel) = &self.alert_channel { match alert_channel { @@ -55,25 +63,13 @@ impl MonitoringAlertingStackScore { } } } -} -// pub fn new_with_ns(ns: &str) -> Self { -// let mut config = KubePrometheusConfig::default(); -// let namespace = ns.to_string(); -// config.namespace = namespace; -// let score = kube_prometheus_score(&config); -// Self { -// alert_channel: None, -// monitoring_stack: Some(Stack::KubePrometheusStack), -// } -// } -//} - -impl Default for MonitoringAlertingStackScore { - fn default() -> Self { - Self { - alert_channel: None, - monitoring_stack: Stack::KubePrometheusStack, + fn build_kube_prometheus_helm_chart_config(&self) -> KubePrometheusConfig { + let mut config = KubePrometheusConfig::new(); + self.match_alert_channel(&mut config); + if let Some(ns) = &self.namespace { + config.namespace = ns.clone(); } + config } } @@ -81,10 +77,9 @@ impl Score for MonitoringAlertingStackScore { fn create_interpret(&self) -> Box> { match &self.monitoring_stack { Stack::KubePrometheusStack => { - let mut config = KubePrometheusConfig::new(); - self.match_alert_channel(&mut config); - let score = kube_prometheus_score(&config); - score.create_interpret() + let config = self.build_kube_prometheus_helm_chart_config(); + let helm_chart = kube_prometheus_helm_chart_score(&config); + helm_chart.create_interpret() } Stack::OtherStack => { todo!()