diff --git a/harmony/src/modules/application/mod.rs b/harmony/src/modules/application/mod.rs index 3e70e78..4ca9c54 100644 --- a/harmony/src/modules/application/mod.rs +++ b/harmony/src/modules/application/mod.rs @@ -60,7 +60,7 @@ impl Interpret for Application } }; } - Ok(Outcome::success("successfully created app".to_string())) + Ok(Outcome::success("Application created".to_string())) } fn get_name(&self) -> InterpretName { diff --git a/harmony/src/modules/helm/chart.rs b/harmony/src/modules/helm/chart.rs index 6bff93a..dd94678 100644 --- a/harmony/src/modules/helm/chart.rs +++ b/harmony/src/modules/helm/chart.rs @@ -225,19 +225,20 @@ impl Interpret for HelmChartInterpret { match status { helm_wrapper_rs::HelmDeployStatus::Deployed => Ok(Outcome::new( InterpretStatus::SUCCESS, - "Helm Chart deployed".to_string(), + format!("Helm Chart {} deployed", self.score.release_name), )), helm_wrapper_rs::HelmDeployStatus::PendingInstall => Ok(Outcome::new( InterpretStatus::RUNNING, - "Helm Chart Pending install".to_string(), + format!("Helm Chart {} pending install...", self.score.release_name), )), helm_wrapper_rs::HelmDeployStatus::PendingUpgrade => Ok(Outcome::new( InterpretStatus::RUNNING, - "Helm Chart pending upgrade".to_string(), - )), - helm_wrapper_rs::HelmDeployStatus::Failed => Err(InterpretError::new( - "Failed to install helm chart".to_string(), + format!("Helm Chart {} pending upgrade...", self.score.release_name), )), + helm_wrapper_rs::HelmDeployStatus::Failed => Err(InterpretError::new(format!( + "Helm Chart {} installation failed", + self.score.release_name + ))), } } diff --git a/harmony/src/modules/prometheus/k8s_prometheus_alerting_score.rs b/harmony/src/modules/prometheus/k8s_prometheus_alerting_score.rs index 1258675..c70f5e5 100644 --- a/harmony/src/modules/prometheus/k8s_prometheus_alerting_score.rs +++ b/harmony/src/modules/prometheus/k8s_prometheus_alerting_score.rs @@ -93,7 +93,9 @@ impl> I self.install_rules(&self.prometheus_rules, &client).await?; self.install_monitors(self.service_monitors.clone(), &client) .await?; - Ok(Outcome::success("K8s components installed".to_string())) + Ok(Outcome::success( + "K8s monitoring components installed".to_string(), + )) } fn get_name(&self) -> InterpretName { diff --git a/harmony_cli/src/cli_logger.rs b/harmony_cli/src/cli_logger.rs index 201c689..c2ed79d 100644 --- a/harmony_cli/src/cli_logger.rs +++ b/harmony_cli/src/cli_logger.rs @@ -38,14 +38,17 @@ fn configure_logger() -> MultiProgress { async fn handle_events(base_progress: MultiProgress) { let progress_tracker = Arc::new(IndicatifProgressTracker::new(base_progress.clone())); let preparing_topology = Arc::new(Mutex::new(false)); + let current_score: Arc>> = Arc::new(Mutex::new(None)); instrumentation::subscribe("Harmony CLI Logger", { move |event| { let progress_tracker = Arc::clone(&progress_tracker); let preparing_topology = Arc::clone(&preparing_topology); + let current_score = Arc::clone(¤t_score); async move { let mut preparing_topology = preparing_topology.lock().unwrap(); + let mut current_score = current_score.lock().unwrap(); match event { HarmonyEvent::HarmonyStarted => {} @@ -103,13 +106,21 @@ async fn handle_events(base_progress: MultiProgress) { score, message, } => { - let section_key = if (*preparing_topology) - && progress_tracker.contains_section(&topology_key(&topology)) - { + let is_key_topology = (*preparing_topology) + && progress_tracker.contains_section(&topology_key(&topology)); + let is_key_current_score = current_score.is_some() + && progress_tracker + .contains_section(&score_key(¤t_score.clone().unwrap())); + let is_key_score = progress_tracker.contains_section(&score_key(&score)); + + let section_key = if is_key_topology { topology_key(&topology) - } else if progress_tracker.contains_section(&score_key(&score)) { + } else if is_key_current_score { + score_key(¤t_score.clone().unwrap()) + } else if is_key_score { score_key(&score) } else { + (*current_score) = Some(score.clone()); let key = score_key(&score); progress_tracker.add_section( &key, @@ -127,22 +138,28 @@ async fn handle_events(base_progress: MultiProgress) { execution_id: task_key, topology: _, interpret: _, - score: _, + score, outcome, - } => match outcome { - Ok(outcome) => match outcome.status { - harmony::interpret::InterpretStatus::SUCCESS => { - progress_tracker.finish_task(&task_key, &outcome.message); - } - harmony::interpret::InterpretStatus::NOOP => { - progress_tracker.skip_task(&task_key, &outcome.message); - } - _ => progress_tracker.fail_task(&task_key, &outcome.message), - }, - Err(err) => { - progress_tracker.fail_task(&task_key, &err.to_string()); + } => { + if current_score.is_some() && current_score.clone().unwrap() == score { + (*current_score) = None; } - }, + + match outcome { + Ok(outcome) => match outcome.status { + harmony::interpret::InterpretStatus::SUCCESS => { + progress_tracker.finish_task(&task_key, &outcome.message); + } + harmony::interpret::InterpretStatus::NOOP => { + progress_tracker.skip_task(&task_key, &outcome.message); + } + _ => progress_tracker.fail_task(&task_key, &outcome.message), + }, + Err(err) => { + progress_tracker.fail_task(&task_key, &err.to_string()); + } + } + } } true }