forked from NationTech/harmony
		
	added file
This commit is contained in:
		
							parent
							
								
									2f8e150f41
								
							
						
					
					
						commit
						fbd466a85c
					
				
							
								
								
									
										59
									
								
								harmony/src/domain/topology/monitoring_alerting.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								harmony/src/domain/topology/monitoring_alerting.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| use serde::Serialize; | ||||
| use tokio::sync::OnceCell; | ||||
| 
 | ||||
| use async_trait::async_trait; | ||||
| 
 | ||||
| use crate::interpret::{InterpretError, Outcome}; | ||||
| 
 | ||||
| use super::{HelmCommand, Topology}; | ||||
| 
 | ||||
| #[derive(Clone, Debug)] | ||||
| struct MonitoringState { | ||||
|     message: String, | ||||
| } | ||||
| 
 | ||||
| #[derive(Clone, Debug)] | ||||
| pub struct MonitoringAlertingTopology { | ||||
|     monitoring_state: OnceCell<Option<MonitoringState>>, | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| impl MonitoringAlertingTopology { | ||||
|     pub fn new() -> Self { | ||||
|         Self { | ||||
|             monitoring_state: OnceCell::new(), | ||||
|         } | ||||
|     } | ||||
|     fn get_monitoring_state(&self) -> Result<Option<MonitoringState>, InterpretError> { | ||||
|         let state = MonitoringState { | ||||
|             message: "monitoring stack not installed".to_string(), | ||||
|         }; | ||||
|         Ok(Some(state)) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[async_trait] | ||||
| impl Topology for MonitoringAlertingTopology { | ||||
|     fn name(&self) -> &str { | ||||
|         "MonitoringAlertingTopology" | ||||
|     } | ||||
| 
 | ||||
|     async fn ensure_ready(&self) -> Result<Outcome, InterpretError> { | ||||
|         let monitoring_state = self | ||||
|             .monitoring_state | ||||
|             .get_or_try_init(|| async { self.get_monitoring_state() }) | ||||
|             .await?; | ||||
| 
 | ||||
|         if monitoring_state.is_some() { | ||||
|             Ok(Outcome::success( | ||||
|                 "Monitoring stack already installed".to_string(), | ||||
|             )) | ||||
|         } else { | ||||
|             Ok(Outcome::success( | ||||
|                 "Monitoring stack not installed".to_string(), | ||||
|             )) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl HelmCommand for MonitoringAlertingTopology {} | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user