From 4e5a24b07ad01a695bb6e087775b8009ff3f1457 Mon Sep 17 00:00:00 2001 From: wjro Date: Wed, 7 Jan 2026 13:22:41 -0500 Subject: [PATCH 1/2] fix: added missing functions to impl SwitchClient for unmanagedSwitch --- harmony/src/infra/brocade.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/harmony/src/infra/brocade.rs b/harmony/src/infra/brocade.rs index 58a1241d..2bc90d2b 100644 --- a/harmony/src/infra/brocade.rs +++ b/harmony/src/infra/brocade.rs @@ -139,7 +139,7 @@ impl SwitchClient for BrocadeSwitchClient { pub struct UnmanagedSwitch; impl UnmanagedSwitch { - pub async fn init( ) -> Result { + pub async fn init() -> Result { Ok(Self) } } @@ -162,7 +162,14 @@ impl SwitchClient for UnmanagedSwitch { channel_name: &str, switch_ports: Vec, ) -> Result { - todo!("unmanaged switch. Nothing to do.") + todo!("unmanaged switch. Nothing to do.") + } + + async fn clear_port_channel(&self, ids: &Vec) -> Result<(), SwitchError> { + todo!("unmanged switch. Nothing to do.") + } + async fn configure_interface(&self, ports: &Vec) -> Result<(), SwitchError> { + todo!("unmanged switch. Nothing to do.") } } -- 2.39.5 From ad5abe1748eeac8015d567a784eb22085a06e18a Mon Sep 17 00:00:00 2001 From: Jean-Gabriel Gill-Couture Date: Wed, 7 Jan 2026 14:13:28 -0500 Subject: [PATCH 2/2] fix(test): Use a mutex to prevent race conditions between tests relying on KUBECONFIG env var --- harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs b/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs index 5b691cc9..76280d86 100644 --- a/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs +++ b/harmony/src/domain/topology/k8s_anywhere/k8s_anywhere.rs @@ -1222,9 +1222,11 @@ fn extract_base_domain(host: &str) -> Option { #[cfg(test)] mod tests { use super::*; + use std::sync::Mutex; use std::sync::atomic::{AtomicUsize, Ordering}; static TEST_COUNTER: AtomicUsize = AtomicUsize::new(0); + static ENV_LOCK: Mutex<()> = Mutex::new(()); /// Sets environment variables with unique names to avoid concurrency issues between tests. /// Returns the names of the (config_var, profile_var) used. @@ -1289,6 +1291,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_only_context() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1305,6 +1308,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_unknown_key_trim() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1324,6 +1328,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_empty_malformed() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::remove_var("KUBECONFIG"); @@ -1341,6 +1346,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_kubeconfig_fallback() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::set_var("KUBECONFIG", "/fallback/path"); @@ -1357,6 +1363,7 @@ mod tests { #[test] fn test_remote_k8s_from_env_var_kubeconfig_no_fallback_if_provided() { + let _lock = ENV_LOCK.lock().unwrap_or_else(|e| e.into_inner()); run_in_isolated_env(|| { unsafe { std::env::set_var("KUBECONFIG", "/fallback/path"); -- 2.39.5