fix/connected_alert_receivers #150
| @ -4,7 +4,9 @@ use kube::CustomResource; | |||||||
| use schemars::JsonSchema; | use schemars::JsonSchema; | ||||||
| use serde::{Deserialize, Serialize}; | 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
 | /// MonitoringStack CRD for monitoring.rhobs/v1alpha1
 | ||||||
| #[derive(CustomResource, Serialize, Deserialize, Debug, Clone, JsonSchema)] | #[derive(CustomResource, Serialize, Deserialize, Debug, Clone, JsonSchema)] | ||||||
| @ -28,6 +30,7 @@ pub struct MonitoringStackSpec { | |||||||
|     /// Resource selector for workloads monitored by this stack.
 |     /// Resource selector for workloads monitored by this stack.
 | ||||||
|     #[serde(default, skip_serializing_if = "Option::is_none")] |     #[serde(default, skip_serializing_if = "Option::is_none")] | ||||||
|     pub resource_selector: Option<LabelSelector>, |     pub resource_selector: Option<LabelSelector>, | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Default for MonitoringStackSpec { | 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::{ | use crate::modules::monitoring::kube_prometheus::crd::rhob_prometheus_rules::{ | ||||||
|     PrometheusRule, PrometheusRuleSpec, RuleGroup, |     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::{ | use crate::modules::monitoring::kube_prometheus::crd::rhob_service_monitor::{ | ||||||
|     ServiceMonitor, ServiceMonitorSpec, |     ServiceMonitor, ServiceMonitorSpec, | ||||||
| }; | }; | ||||||
| @ -252,21 +257,29 @@ impl RHOBAlertingInterpret { | |||||||
|             "installing crd-prometheuses in namespace {}", |             "installing crd-prometheuses in namespace {}", | ||||||
|             self.sender.namespace.clone() |             self.sender.namespace.clone() | ||||||
|         ); |         ); | ||||||
|  |         debug!("building role/rolebinding/serviceaccount for crd-prometheus"); | ||||||
| 
 | 
 | ||||||
|         let stack = MonitoringStack { |         let stack = MonitoringStack { | ||||||
|             metadata: ObjectMeta { |             metadata: ObjectMeta { | ||||||
|  | 
 | ||||||
|                 name: Some(format!("{}-monitoring", self.sender.namespace.clone()).into()), |                 name: Some(format!("{}-monitoring", self.sender.namespace.clone()).into()), | ||||||
|                 namespace: Some(self.sender.namespace.clone()), |                 namespace: Some(self.sender.namespace.clone()), | ||||||
|                 labels: Some([("coo".into(), "example".into())].into()), |                 labels: Some( | ||||||
|  |                     [ | ||||||
|  |                         ("monitoring-stack".into(), "true".into()), | ||||||
|  |                     ] | ||||||
|  |                     .into(), | ||||||
|  |                 ), | ||||||
|                 ..Default::default() |                 ..Default::default() | ||||||
|             }, |             }, | ||||||
|             spec: MonitoringStackSpec { |             spec: MonitoringStackSpec { | ||||||
|                 log_level: Some("debug".into()), |                 log_level: Some("debug".into()), | ||||||
|                 retention: Some("1d".into()), |                 retention: Some("1d".into()), | ||||||
|                 resource_selector: Some(LabelSelector { |                 resource_selector: Some(LabelSelector { | ||||||
|                     match_labels: [("app".into(), "demo".into())].into(), |                     match_labels: Default::default(), | ||||||
|                     ..Default::default() |                     match_expressions: vec![], | ||||||
|                 }), |                 }), | ||||||
|  | 
 | ||||||
|             }, |             }, | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
| @ -275,6 +288,7 @@ impl RHOBAlertingInterpret { | |||||||
|             .await |             .await | ||||||
|             .map_err(|e| InterpretError::new(e.to_string()))?; |             .map_err(|e| InterpretError::new(e.to_string()))?; | ||||||
| 
 | 
 | ||||||
|  |         
 | ||||||
|         let alert_manager_domain = topology |         let alert_manager_domain = topology | ||||||
|             .get_domain(format!("alert-manager-{}", self.sender.namespace.clone())) |             .get_domain(format!("alert-manager-{}", self.sender.namespace.clone())) | ||||||
|             .await?; |             .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( |     async fn install_monitors( | ||||||
|         &self, |         &self, | ||||||
|         mut monitors: Vec<ServiceMonitor>, |         mut monitors: Vec<ServiceMonitor>, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user