metrics #3
							
								
								
									
										29
									
								
								src/data.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										29
									
								
								src/data.rs
									
									
									
									
									
								
							| @ -1733,3 +1733,32 @@ impl BrainData { | ||||
|         self.app_contracts.write().unwrap().push(app_contracts); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl BrainData { | ||||
|     pub fn metrics(&self) -> Result<String, Error> { | ||||
|         let app_nodes_read = self.app_nodes.read().unwrap(); | ||||
|         let app_node_no = app_nodes_read.len(); | ||||
|         drop(app_nodes_read); | ||||
|         let vm_nodes_read = self.vm_nodes.read().unwrap(); | ||||
|         let vm_node_no = vm_nodes_read.len(); | ||||
|         drop(vm_nodes_read); | ||||
|         let app_contract_no = self.list_all_app_contracts().len(); | ||||
|         let vm_contract_no = self.list_all_contracts().len(); | ||||
|         let account_no = self.list_accounts().len(); | ||||
|         let operator_no = self.list_operators().len(); | ||||
|         let locations = String::from("wip"); | ||||
| 
 | ||||
|         let metrics = vec![ | ||||
|             format!("app_nodes {app_node_no}"), | ||||
|             format!("vm_nodes {vm_node_no}"), | ||||
|             format!("app_contracts {app_contract_no}"), | ||||
|             format!("vm_contracts {vm_contract_no}"), | ||||
|             format!("operators {operator_no}"), | ||||
|             format!("accounts {account_no}"), | ||||
|             format!("locations {locations}"), | ||||
|         ] | ||||
|         .join("\n"); | ||||
| 
 | ||||
|         Ok(metrics) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -20,11 +20,7 @@ pub async fn http_metrics_server(listen_address: SocketAddr, state: Arc<BrainDat | ||||
| 
 | ||||
| #[get("/metrics")] | ||||
| async fn homepage(data: web::Data<Arc<BrainData>>) -> impl Responder { | ||||
|     let vm_contracts = data.get_ref().list_all_contracts(); | ||||
|     let app_contracts = data.get_ref().list_all_app_contracts(); | ||||
|     let text = format!( | ||||
|         "App contracts: {:#?}\n\nVM contracts: {:#?}", | ||||
|         app_contracts, vm_contracts | ||||
|     ); | ||||
|     HttpResponse::Ok().body(text) | ||||
|     let metrics_data = data.get_ref().metrics().unwrap_or_default(); | ||||
| 
 | ||||
|     HttpResponse::Ok().body(metrics_data) | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user