aboutsummaryrefslogtreecommitdiff
path: root/src/garage/cli_v2/node.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/garage/cli_v2/node.rs')
-rw-r--r--src/garage/cli_v2/node.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/garage/cli_v2/node.rs b/src/garage/cli_v2/node.rs
new file mode 100644
index 00000000..c5f28300
--- /dev/null
+++ b/src/garage/cli_v2/node.rs
@@ -0,0 +1,36 @@
+use format_table::format_table;
+
+use garage_util::error::*;
+
+use garage_api_admin::api::*;
+
+use crate::cli::structs::*;
+use crate::cli_v2::*;
+
+impl Cli {
+ pub async fn cmd_meta(&self, cmd: MetaOperation) -> Result<(), Error> {
+ let MetaOperation::Snapshot { all } = cmd;
+
+ let res = self
+ .api_request(CreateMetadataSnapshotRequest {
+ node: if all {
+ "*".to_string()
+ } else {
+ hex::encode(self.rpc_host)
+ },
+ body: LocalCreateMetadataSnapshotRequest,
+ })
+ .await?;
+
+ let mut table = vec![];
+ for (node, err) in res.error.iter() {
+ table.push(format!("{:.16}\tError: {}", node, err));
+ }
+ for (node, _) in res.success.iter() {
+ table.push(format!("{:.16}\tOk", node));
+ }
+ format_table(table);
+
+ Ok(())
+ }
+}