aboutsummaryrefslogtreecommitdiff
path: root/src/garage/cli_v2/node.rs
diff options
context:
space:
mode:
authorAlex Auvolat <lx@deuxfleurs.fr>2025-02-05 15:06:10 +0100
committerAlex Auvolat <lx@deuxfleurs.fr>2025-02-05 15:06:10 +0100
commit406b6da1634a38c1b8176ff468d964e42ce5ce5d (patch)
tree47eea7e97b51c735b16fb255669e905b3536f256 /src/garage/cli_v2/node.rs
parent9f468b4439bdd5e2e67a6215f941556310877155 (diff)
downloadgarage-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.rs31
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(())
+ }
}