diff --git a/src/data.rs b/src/data.rs index f9cc175..afa825a 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1733,3 +1733,32 @@ impl BrainData { self.app_contracts.write().unwrap().push(app_contracts); } } + +impl BrainData { + pub fn metrics(&self) -> Result { + 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) + } +} diff --git a/src/http_server.rs b/src/http_server.rs index 71c95bd..5d81585 100644 --- a/src/http_server.rs +++ b/src/http_server.rs @@ -20,11 +20,7 @@ pub async fn http_metrics_server(listen_address: SocketAddr, state: Arc>) -> 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) }