From 7d8c8419811c6bb8af0969b1444eb1bf2b38f166 Mon Sep 17 00:00:00 2001 From: rchac Date: Sun, 5 Oct 2025 16:29:12 -0600 Subject: [PATCH] make netzur config optional --- .../lqos_config/src/etc/v15/top_config.rs | 7 ++-- src/rust/lqos_python/src/lib.rs | 32 ++++++++++++++++--- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/rust/lqos_config/src/etc/v15/top_config.rs b/src/rust/lqos_config/src/etc/v15/top_config.rs index f46d2598..0a1f7e14 100644 --- a/src/rust/lqos_config/src/etc/v15/top_config.rs +++ b/src/rust/lqos_config/src/etc/v15/top_config.rs @@ -58,8 +58,9 @@ pub struct Config { /// Spylnx Integration pub spylnx_integration: super::spylnx_integration::SplynxIntegration, - /// Netzur Integration - pub netzur_integration: super::netzur_integration::NetzurIntegration, + /// Netzur Integration configuration. Optional so older configs without this + /// section still deserialize cleanly. + pub netzur_integration: Option, /// UISP Integration pub uisp_integration: super::uisp_integration::UispIntegration, @@ -150,7 +151,7 @@ impl Default for Config { ip_ranges: super::ip_ranges::IpRanges::default(), integration_common: super::integration_common::IntegrationConfig::default(), spylnx_integration: super::spylnx_integration::SplynxIntegration::default(), - netzur_integration: super::netzur_integration::NetzurIntegration::default(), + netzur_integration: Some(super::netzur_integration::NetzurIntegration::default()), uisp_integration: super::uisp_integration::UispIntegration::default(), powercode_integration: super::powercode_integration::PowercodeIntegration::default(), sonar_integration: super::sonar_integration::SonarIntegration::default(), diff --git a/src/rust/lqos_python/src/lib.rs b/src/rust/lqos_python/src/lib.rs index ac5c0602..85f7cba7 100644 --- a/src/rust/lqos_python/src/lib.rs +++ b/src/rust/lqos_python/src/lib.rs @@ -595,19 +595,37 @@ fn splynx_strategy() -> PyResult { #[pyfunction] fn netzur_api_key() -> PyResult { let config = lqos_config::load_config().unwrap(); - Ok(config.netzur_integration.api_key.clone()) + Ok( + config + .netzur_integration + .as_ref() + .map(|cfg| cfg.api_key.clone()) + .unwrap_or_default(), + ) } #[pyfunction] fn netzur_api_url() -> PyResult { let config = lqos_config::load_config().unwrap(); - Ok(config.netzur_integration.api_url.clone()) + Ok( + config + .netzur_integration + .as_ref() + .map(|cfg| cfg.api_url.clone()) + .unwrap_or_default(), + ) } #[pyfunction] fn netzur_api_timeout() -> PyResult { let config = lqos_config::load_config().unwrap(); - Ok(config.netzur_integration.timeout_secs) + Ok( + config + .netzur_integration + .as_ref() + .map(|cfg| cfg.timeout_secs) + .unwrap_or(60), + ) } #[pyfunction] @@ -625,7 +643,13 @@ fn automatic_import_splynx() -> PyResult { #[pyfunction] fn automatic_import_netzur() -> PyResult { let config = lqos_config::load_config().unwrap(); - Ok(config.netzur_integration.enable_netzur) + Ok( + config + .netzur_integration + .as_ref() + .map(|cfg| cfg.enable_netzur) + .unwrap_or(false), + ) } #[pyfunction]