From a5ad3c7f62891111ac98803d7fa33c15ffbd4040 Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Fri, 26 Jan 2024 18:02:32 +0100 Subject: [PATCH 1/2] Make it possible to check the logs without passing uuid This commit make it possible to check the logs as follows: ```bash dora logs object_detection ``` If more than one dataflow is running, we will inquire for which dataflow to use. --- binaries/cli/src/main.rs | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/binaries/cli/src/main.rs b/binaries/cli/src/main.rs index ab6383bfe..4b25cbddd 100644 --- a/binaries/cli/src/main.rs +++ b/binaries/cli/src/main.rs @@ -90,7 +90,10 @@ enum Command { // Planned for future releases: // Dashboard, /// Show logs of a given dataflow and node. - Logs { dataflow: String, node: String }, + Logs { + dataflow_or_node: String, + node: Option, + }, // Metrics, // Stats, // Get, @@ -191,12 +194,29 @@ fn run() -> eyre::Result<()> { internal_create_with_path_dependencies, } => template::create(args, internal_create_with_path_dependencies)?, Command::Up { config } => up::up(config.as_deref())?, - Command::Logs { dataflow, node } => { - let uuid = Uuid::parse_str(&dataflow).ok(); - let name = if uuid.is_some() { None } else { Some(dataflow) }; + + Command::Logs { + dataflow_or_node, + node, + } => { let mut session = connect_to_coordinator().wrap_err("failed to connect to dora coordinator")?; - logs::logs(&mut *session, uuid, name, node)? + let uuids = query_running_dataflows(&mut *session) + .wrap_err("failed to query running dataflows")?; + if let Some(node) = node { + let dataflow = dataflow_or_node; + let uuid = Uuid::parse_str(&dataflow).ok(); + let name = if uuid.is_some() { None } else { Some(dataflow) }; + logs::logs(&mut *session, uuid, name, node)? + } else { + let uuid = match &uuids[..] { + [] => bail!("No dataflows are running"), + [uuid] => uuid.clone(), + _ => inquire::Select::new("Choose dataflow to show logs:", uuids).prompt()?, + }; + let node = dataflow_or_node; + logs::logs(&mut *session, Some(uuid.uuid), None, node)? + } } Command::Start { dataflow, From 4b6e6a38ff4d77ce0d2102155d66f9ca0e0b8d87 Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Mon, 29 Jan 2024 10:29:58 +0100 Subject: [PATCH 2/2] Make first positional argument optional --- binaries/cli/src/main.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/binaries/cli/src/main.rs b/binaries/cli/src/main.rs index 4b25cbddd..e6b5f757b 100644 --- a/binaries/cli/src/main.rs +++ b/binaries/cli/src/main.rs @@ -90,9 +90,10 @@ enum Command { // Planned for future releases: // Dashboard, /// Show logs of a given dataflow and node. + #[command(allow_missing_positional = true)] Logs { - dataflow_or_node: String, - node: Option, + dataflow: Option, + node: String, }, // Metrics, // Stats, @@ -195,16 +196,12 @@ fn run() -> eyre::Result<()> { } => template::create(args, internal_create_with_path_dependencies)?, Command::Up { config } => up::up(config.as_deref())?, - Command::Logs { - dataflow_or_node, - node, - } => { + Command::Logs { dataflow, node } => { let mut session = connect_to_coordinator().wrap_err("failed to connect to dora coordinator")?; let uuids = query_running_dataflows(&mut *session) .wrap_err("failed to query running dataflows")?; - if let Some(node) = node { - let dataflow = dataflow_or_node; + if let Some(dataflow) = dataflow { let uuid = Uuid::parse_str(&dataflow).ok(); let name = if uuid.is_some() { None } else { Some(dataflow) }; logs::logs(&mut *session, uuid, name, node)? @@ -214,7 +211,6 @@ fn run() -> eyre::Result<()> { [uuid] => uuid.clone(), _ => inquire::Select::new("Choose dataflow to show logs:", uuids).prompt()?, }; - let node = dataflow_or_node; logs::logs(&mut *session, Some(uuid.uuid), None, node)? } }