aboutsummaryrefslogtreecommitdiff
path: root/src/garage/cli_v2/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/garage/cli_v2/mod.rs')
-rw-r--r--src/garage/cli_v2/mod.rs72
1 files changed, 64 insertions, 8 deletions
diff --git a/src/garage/cli_v2/mod.rs b/src/garage/cli_v2/mod.rs
index 6cf068c6..2fe45e29 100644
--- a/src/garage/cli_v2/mod.rs
+++ b/src/garage/cli_v2/mod.rs
@@ -1,12 +1,15 @@
+pub mod util;
+
+pub mod cluster;
+pub mod layout;
+
use std::collections::{HashMap, HashSet};
use std::convert::TryFrom;
use std::sync::Arc;
use std::time::Duration;
-use format_table::format_table;
use garage_util::error::*;
-use garage_rpc::layout::*;
use garage_rpc::system::*;
use garage_rpc::*;
@@ -14,7 +17,9 @@ use garage_api::admin::api::*;
use garage_api::admin::EndpointHandler as AdminApiEndpoint;
use crate::admin::*;
-use crate::cli::*;
+use crate::cli as cli_v1;
+use crate::cli::structs::*;
+use crate::cli::Command;
pub struct Cli {
pub system_rpc_endpoint: Arc<Endpoint<SystemRpc, ()>>,
@@ -24,13 +29,64 @@ pub struct Cli {
impl Cli {
pub async fn handle(&self, cmd: Command) -> Result<(), Error> {
- println!("{:?}", self.api_request(GetClusterStatusRequest).await?);
- Ok(())
- /*
match cmd {
- _ => todo!(),
+ Command::Status => self.cmd_status().await,
+ Command::Node(NodeOperation::Connect(connect_opt)) => {
+ self.cmd_connect(connect_opt).await
+ }
+ Command::Layout(layout_opt) => self.layout_command_dispatch(layout_opt).await,
+
+ // TODO
+ Command::Bucket(bo) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::BucketOperation(bo),
+ )
+ .await
+ .ok_or_message("xoxo"),
+ Command::Key(ko) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::KeyOperation(ko),
+ )
+ .await
+ .ok_or_message("xoxo"),
+ Command::Repair(ro) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::LaunchRepair(ro),
+ )
+ .await
+ .ok_or_message("xoxo"),
+ Command::Stats(so) => {
+ cli_v1::cmd_admin(&self.admin_rpc_endpoint, self.rpc_host, AdminRpc::Stats(so))
+ .await
+ .ok_or_message("xoxo")
+ }
+ Command::Worker(wo) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::Worker(wo),
+ )
+ .await
+ .ok_or_message("xoxo"),
+ Command::Block(bo) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::BlockOperation(bo),
+ )
+ .await
+ .ok_or_message("xoxo"),
+ Command::Meta(mo) => cli_v1::cmd_admin(
+ &self.admin_rpc_endpoint,
+ self.rpc_host,
+ AdminRpc::MetaOperation(mo),
+ )
+ .await
+ .ok_or_message("xoxo"),
+
+ _ => unreachable!(),
}
- */
}
pub async fn api_request<T>(&self, req: T) -> Result<<T as AdminApiEndpoint>::Response, Error>