From 683c49564d88d5dce9fdfd242f4f098ce6e58f6a Mon Sep 17 00:00:00 2001 From: Noor Date: Fri, 21 Mar 2025 20:38:28 +0530 Subject: [PATCH] refactor: move report_node grpc call to general module and update CLI handler --- src/general/grpc.rs | 26 +++++++++++++++++++------- src/general/mod.rs | 12 ++++++++++++ src/snp/cli_handler.rs | 3 ++- src/snp/grpc.rs | 21 +-------------------- src/snp/mod.rs | 9 --------- 5 files changed, 34 insertions(+), 37 deletions(-) diff --git a/src/general/grpc.rs b/src/general/grpc.rs index 4a8653d..5ec43ca 100644 --- a/src/general/grpc.rs +++ b/src/general/grpc.rs @@ -1,9 +1,9 @@ use crate::config::Config; use crate::snp::grpc::proto::VmContract; use crate::utils::sign_request; +use detee_shared::general_proto::ReportNodeReq; use log::{debug, info, warn}; use tokio_stream::StreamExt; -// use tonic::metadata::errors::InvalidMetadataValue; pub mod proto { pub use detee_shared::common_proto::*; @@ -23,12 +23,6 @@ pub enum Error { #[error("Received error from brain: status: {}, message: {}", _0.code().to_string(), _0.message())] ResponseStatus(#[from] tonic::Status), - // #[error(transparent)] - // ConfigError(#[from] crate::config::Error), - // #[error("Could not find contract {0}")] - // VmContractNotFound(String), - // #[error(transparent)] - // InternalError(#[from] InvalidMetadataValue), #[error(transparent)] InternalError(#[from] crate::utils::Error), #[error(transparent)] @@ -107,6 +101,24 @@ pub async fn ban_user(user_wallet: String) -> Result<(), Error> { Ok(()) } +pub async fn report_node( + node_pubkey: String, + contract: String, + reason: String, +) -> Result<(), Error> { + debug!("Getting contracts from brain..."); + let mut client = BrainGeneralCliClient::connect(Config::get_brain_url()).await?; + client + .report_node(sign_request(ReportNodeReq { + admin_pubkey: Config::get_detee_wallet()?, + node_pubkey, + contract, + reason, + })?) + .await?; + Ok(()) +} + // super admin pub async fn admin_list_accounts() -> Result, Error> { diff --git a/src/general/mod.rs b/src/general/mod.rs index cfd66e5..50abfc6 100644 --- a/src/general/mod.rs +++ b/src/general/mod.rs @@ -2,3 +2,15 @@ pub mod cli_handler; pub mod grpc; pub mod operators; pub mod packagers; + +use crate::utils::block_on; +use crate::SimpleOutput; + +pub fn report_node( + node_pubkey: String, + contract: String, + reason: String, +) -> Result { + block_on(grpc::report_node(node_pubkey, contract, reason))?; + Ok(SimpleOutput::from("The node got reported.")) +} diff --git a/src/snp/cli_handler.rs b/src/snp/cli_handler.rs index 66b2cf7..f1592da 100644 --- a/src/snp/cli_handler.rs +++ b/src/snp/cli_handler.rs @@ -1,3 +1,4 @@ +use crate::general; use crate::name_generator; use crate::snp; use crate::{cli_print, SimpleOutput}; @@ -37,7 +38,7 @@ pub fn handle_vm_nodes(matches: &ArgMatches) { let contract_uuid: String = path_subcommand.get_one::("contract").unwrap().clone(); let reason: String = path_subcommand.get_one::("reason").unwrap().clone(); - cli_print(snp::report_node(node_pubkey, contract_uuid, reason).map_err(Into::into)) + cli_print(general::report_node(node_pubkey, contract_uuid, reason).map_err(Into::into)) } _ => { println!("Available commands are search and report. Use --help for more information.") diff --git a/src/snp/grpc.rs b/src/snp/grpc.rs index 5d0ebf3..06f9ac0 100644 --- a/src/snp/grpc.rs +++ b/src/snp/grpc.rs @@ -4,12 +4,11 @@ pub mod proto { } use crate::config::Config; -use detee_shared::general_proto::brain_general_cli_client::BrainGeneralCliClient; use lazy_static::lazy_static; use log::{debug, info, warn}; use proto::{ brain_vm_cli_client::BrainVmCliClient, DeleteVmReq, ExtendVmReq, ListVmContractsReq, NewVmReq, - NewVmResp, ReportNodeReq, UpdateVmReq, UpdateVmResp, VmContract, VmNodeFilters, VmNodeListResp, + NewVmResp, UpdateVmReq, UpdateVmResp, VmContract, VmNodeFilters, VmNodeListResp, }; use tokio_stream::StreamExt; use tonic::metadata::errors::InvalidMetadataValue; @@ -128,24 +127,6 @@ pub async fn create_vm(req: NewVmReq) -> Result { } } -pub async fn report_node( - node_pubkey: String, - contract: String, - reason: String, -) -> Result<(), Error> { - debug!("Getting contracts from brain..."); - let mut client = BrainGeneralCliClient::connect(Config::get_brain_url()).await?; - client - .report_node(sign_request(ReportNodeReq { - admin_pubkey: Config::get_detee_wallet()?, - node_pubkey, - contract, - reason, - })?) - .await?; - Ok(()) -} - pub async fn list_contracts(req: ListVmContractsReq) -> Result, Error> { debug!("Getting contracts from brain..."); let mut client = BrainVmCliClient::connect(Config::get_brain_url()).await?; diff --git a/src/snp/mod.rs b/src/snp/mod.rs index 1ed51d5..4ae1aa7 100644 --- a/src/snp/mod.rs +++ b/src/snp/mod.rs @@ -367,15 +367,6 @@ pub fn inspect_node(ip: String) -> Result { Ok(block_on(grpc::get_one_node(req))?) } -pub fn report_node( - node_pubkey: String, - contract: String, - reason: String, -) -> Result { - block_on(grpc::report_node(node_pubkey, contract, reason))?; - Ok(super::SimpleOutput::from("The node got reported.")) -} - pub fn calculate_nanolp( vcpus: u32, memory_mb: u32,