fix/connected_alert_receivers #150
| @ -4,7 +4,9 @@ use kube::CustomResource; | ||||
| use schemars::JsonSchema; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| 
 | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::LabelSelector; | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::{ | ||||
|     LabelSelector, PrometheusSpec, | ||||
| }; | ||||
| 
 | ||||
| /// MonitoringStack CRD for monitoring.rhobs/v1alpha1
 | ||||
| #[derive(CustomResource, Serialize, Deserialize, Debug, Clone, JsonSchema)] | ||||
| @ -28,6 +30,7 @@ pub struct MonitoringStackSpec { | ||||
|     /// Resource selector for workloads monitored by this stack.
 | ||||
|     #[serde(default, skip_serializing_if = "Option::is_none")] | ||||
|     pub resource_selector: Option<LabelSelector>, | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| impl Default for MonitoringStackSpec { | ||||
|  | ||||
| @ -25,8 +25,13 @@ use crate::modules::monitoring::kube_prometheus::crd::rhob_monitoring_stack::{ | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheus_rules::{ | ||||
|     PrometheusRule, PrometheusRuleSpec, RuleGroup, | ||||
| }; | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::LabelSelector; | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheuses::{ | ||||
|     AlertmanagerEndpoints, LabelSelector, PrometheusSpec, PrometheusSpecAlerting, | ||||
| }; | ||||
| 
 | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_role::{ | ||||
|     build_prom_role, build_prom_rolebinding, build_prom_service_account, | ||||
| }; | ||||
| use crate::modules::monitoring::kube_prometheus::crd::rhob_service_monitor::{ | ||||
|     ServiceMonitor, ServiceMonitorSpec, | ||||
| }; | ||||
| @ -252,21 +257,29 @@ impl RHOBAlertingInterpret { | ||||
|             "installing crd-prometheuses in namespace {}", | ||||
|             self.sender.namespace.clone() | ||||
|         ); | ||||
|         debug!("building role/rolebinding/serviceaccount for crd-prometheus"); | ||||
| 
 | ||||
|         let stack = MonitoringStack { | ||||
|             metadata: ObjectMeta { | ||||
| 
 | ||||
|                 name: Some(format!("{}-monitoring", self.sender.namespace.clone()).into()), | ||||
|                 namespace: Some(self.sender.namespace.clone()), | ||||
|                 labels: Some([("coo".into(), "example".into())].into()), | ||||
|                 labels: Some( | ||||
|                     [ | ||||
|                         ("monitoring-stack".into(), "true".into()), | ||||
|                     ] | ||||
|                     .into(), | ||||
|                 ), | ||||
|                 ..Default::default() | ||||
|             }, | ||||
|             spec: MonitoringStackSpec { | ||||
|                 log_level: Some("debug".into()), | ||||
|                 retention: Some("1d".into()), | ||||
|                 resource_selector: Some(LabelSelector { | ||||
|                     match_labels: [("app".into(), "demo".into())].into(), | ||||
|                     ..Default::default() | ||||
|                     match_labels: Default::default(), | ||||
|                     match_expressions: vec![], | ||||
|                 }), | ||||
| 
 | ||||
|             }, | ||||
|         }; | ||||
| 
 | ||||
| @ -275,6 +288,7 @@ impl RHOBAlertingInterpret { | ||||
|             .await | ||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||
| 
 | ||||
|         
 | ||||
|         let alert_manager_domain = topology | ||||
|             .get_domain(format!("alert-manager-{}", self.sender.namespace.clone())) | ||||
|             .await?; | ||||
| @ -317,31 +331,6 @@ impl RHOBAlertingInterpret { | ||||
|         ))) | ||||
|     } | ||||
| 
 | ||||
|     async fn install_alert_manager( | ||||
|         &self, | ||||
|         client: &Arc<K8sClient>, | ||||
|     ) -> Result<Outcome, InterpretError> { | ||||
|         let am = Alertmanager { | ||||
|             metadata: ObjectMeta { | ||||
|                 name: Some(self.sender.namespace.clone()), | ||||
|                 labels: Some(std::collections::BTreeMap::from([( | ||||
|                     "alertmanagerConfig".to_string(), | ||||
|                     "enabled".to_string(), | ||||
|                 )])), | ||||
|                 namespace: Some(self.sender.namespace.clone()), | ||||
|                 ..Default::default() | ||||
|             }, | ||||
|             spec: AlertmanagerSpec::default(), | ||||
|         }; | ||||
|         client | ||||
|             .apply(&am, Some(&self.sender.namespace.clone())) | ||||
|             .await | ||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||
|         Ok(Outcome::success(format!( | ||||
|             "successfully deployed service monitor {:#?}", | ||||
|             am.metadata.name | ||||
|         ))) | ||||
|     } | ||||
|     async fn install_monitors( | ||||
|         &self, | ||||
|         mut monitors: Vec<ServiceMonitor>, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user