diff options
author | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-05 15:06:10 +0100 |
---|---|---|
committer | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-05 15:06:10 +0100 |
commit | 406b6da1634a38c1b8176ff468d964e42ce5ce5d (patch) | |
tree | 47eea7e97b51c735b16fb255669e905b3536f256 /src/garage/cli_v2/node.rs | |
parent | 9f468b4439bdd5e2e67a6215f941556310877155 (diff) | |
download | garage-406b6da1634a38c1b8176ff468d964e42ce5ce5d.tar.gz garage-406b6da1634a38c1b8176ff468d964e42ce5ce5d.zip |
cli_v2: implement Get{Node,Cluster}Statistics
Diffstat (limited to 'src/garage/cli_v2/node.rs')
-rw-r--r-- | src/garage/cli_v2/node.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/garage/cli_v2/node.rs b/src/garage/cli_v2/node.rs index c5f28300..b1915dc4 100644 --- a/src/garage/cli_v2/node.rs +++ b/src/garage/cli_v2/node.rs @@ -33,4 +33,35 @@ impl Cli { Ok(()) } + + pub async fn cmd_stats(&self, cmd: StatsOpt) -> Result<(), Error> { + let res = self + .api_request(GetNodeStatisticsRequest { + node: if cmd.all_nodes { + "*".to_string() + } else { + hex::encode(self.rpc_host) + }, + body: LocalGetNodeStatisticsRequest, + }) + .await?; + + for (node, res) in res.success.iter() { + println!("======================"); + println!("Stats for node {:.16}:\n", node); + println!("{}\n", res.freeform); + } + + for (node, err) in res.error.iter() { + println!("======================"); + println!("Node {:.16}: error: {}\n", node, err); + } + + let res = self.api_request(GetClusterStatisticsRequest).await?; + println!("======================"); + println!("Cluster statistics:\n"); + println!("{}\n", res.freeform); + + Ok(()) + } } |