From 3ec53a1224e1fc232dfdc92a94b727a31553fefd Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Wed, 22 Apr 2026 16:54:52 +0700 Subject: [PATCH] refactor: Migrate configuration to new UCI path prefix and boolean helper --- src/config.rs | 84 +++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/src/config.rs b/src/config.rs index 5ee5b83..b7b36e0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -159,24 +159,24 @@ impl Config { // Network section download_base_kbits: Self::get::( "SQMA_DOWNLOAD_BASE_KBITS", - "sqm-autorate.@network[0].download_base_kbits", + "sqm-autorate-rust.@network[0].download_base_kbits", None, )?, download_interface: Self::get::( "SQMA_DOWNLOAD_INTERFACE", - "sqm-autorate.@network[0].download_interface", + "sqm-autorate-rust.@network[0].download_interface", None, )?, download_min_percent: 0.0, // placeholder, computed below download_min_kbits: 0.0, // placeholder, computed below upload_base_kbits: Self::get::( "SQMA_UPLOAD_BASE_KBITS", - "sqm-autorate.@network[0].upload_base_kbits", + "sqm-autorate-rust.@network[0].upload_base_kbits", None, )?, upload_interface: Self::get::( "SQMA_UPLOAD_INTERFACE", - "sqm-autorate.@network[0].upload_interface", + "sqm-autorate-rust.@network[0].upload_interface", None, )?, upload_min_percent: 0.0, // placeholder, computed below @@ -184,131 +184,135 @@ impl Config { // Output section log_level: Self::get::( "SQMA_LOG_LEVEL", - "sqm-autorate.@output[0].log_level", + "sqm-autorate-rust.@output[0].log_level", Some(Level::Error), )?, speed_hist_file: Self::get::( "SQMA_SPEED_HIST_FILE", - "sqm-autorate.@output[0].speed_hist_file", + "sqm-autorate-rust.@output[0].speed_hist_file", Some("/tmp/sqm-speedhist.csv".parse()?), )?, stats_file: Self::get::( "SQMA_STATS_FILE", - "sqm-autorate.@output[0].stats_file", - Some("/tmp/sqm-autorate.csv".parse()?), + "sqm-autorate-rust.@output[0].stats_file", + Some("/tmp/sqm-autorate-rust.csv".parse()?), )?, - suppress_statistics: Self::get::( + suppress_statistics: Self::get_bool( "SQMA_SUPPRESS_STATISTICS", - "sqm-autorate.@output[0].suppress_statistics", + "sqm-autorate-rust.@output[0].suppress_statistics", Some(false), )?, // Observability section - observability_enabled: Self::get::( + observability_enabled: Self::get_bool( "SQMA_OBSERVABILITY_ENABLED", - "sqm-autorate.@observability[0].enabled", + "sqm-autorate-rust.@observability[0].enabled", Some(false), )?, observability_protocol: Self::get::( "SQMA_OBSERVABILITY_PROTOCOL", - "sqm-autorate.@observability[0].protocol", + "sqm-autorate-rust.@observability[0].protocol", Some(ObservabilityProtocol::Udp), )?, observability_host: Self::get_optional::( "SQMA_OBSERVABILITY_HOST", - "sqm-autorate.@observability[0].host", + "sqm-autorate-rust.@observability[0].host", ), observability_port: Self::get::( "SQMA_OBSERVABILITY_PORT", - "sqm-autorate.@observability[0].port", + "sqm-autorate-rust.@observability[0].port", Some(8089), )?, observability_batch_size: Self::get::( "SQMA_OBSERVABILITY_BATCH_SIZE", - "sqm-autorate.@observability[0].batch_size", + "sqm-autorate-rust.@observability[0].batch_size", Some(25), )?, observability_batch_timeout_ms: Self::get::( "SQMA_OBSERVABILITY_BATCH_TIMEOUT_MS", - "sqm-autorate.@observability[0].batch_timeout_ms", + "sqm-autorate-rust.@observability[0].batch_timeout_ms", Some(100), )?, - observability_export_ping_metrics: Self::get::( + observability_export_ping_metrics: Self::get_bool( "SQMA_OBSERVABILITY_EXPORT_PING_METRICS", - "sqm-autorate.@observability[0].export_ping_metrics", + "sqm-autorate-rust.@observability[0].export_ping_metrics", Some(false), )?, - observability_export_rate_metrics: Self::get::( + observability_export_rate_metrics: Self::get_bool( "SQMA_OBSERVABILITY_EXPORT_RATE_METRICS", - "sqm-autorate.@observability[0].export_rate_metrics", + "sqm-autorate-rust.@observability[0].export_rate_metrics", Some(true), )?, - observability_export_baseline_metrics: Self::get::( + observability_export_baseline_metrics: Self::get_bool( "SQMA_OBSERVABILITY_EXPORT_BASELINE_METRICS", - "sqm-autorate.@observability[0].export_baseline_metrics", + "sqm-autorate-rust.@observability[0].export_baseline_metrics", Some(false), )?, - observability_export_events: Self::get::( + observability_export_events: Self::get_bool( "SQMA_OBSERVABILITY_EXPORT_EVENTS", - "sqm-autorate.@observability[0].export_events", + "sqm-autorate-rust.@observability[0].export_events", Some(true), )?, - observability_host_tag: Self::get_host_tag(), + observability_host_tag: Self::get::( + "SQMA_OBSERVABILITY_HOST_TAG", + "sqm-autorate-rust.@observability[0].host_tag", + Some(Self::get_host_tag()), + )?, // Advanced section download_delay_ms: Self::get::( "SQMA_DOWNLOAD_DELAY_MS", - "sqm-autorate.@advanced_settings[0].download_delay_ms", + "sqm-autorate-rust.@advanced_settings[0].download_delay_ms", Some(15.0), )?, high_load_level: Self::get::( "SQMA_HIGH_LOAD_LEVEL", - "sqm-autorate.@advanced_settings[0].high_load_level", + "sqm-autorate-rust.@advanced_settings[0].high_load_level", Some(0.8), )?, measurement_type: Self::get::( "SQMA_MEASUREMENT_TYPE", - "sqm-autorate.@advanced_settings[0].measurement_type", + "sqm-autorate-rust.@advanced_settings[0].measurement_type", Some(MeasurementType::IcmpTimestamps), )?, min_change_interval: Self::get::( "SQMA_MIN_CHANGE_INTERVAL", - "sqm-autorate.@advanced_settings[0].min_change_interval", + "sqm-autorate-rust.@advanced_settings[0].min_change_interval", Some(0.5), )?, num_reflectors: Self::get::( "SQMA_NUM_REFLECTORS", - "sqm-autorate.@advanced_settings[0].num_reflectors", + "sqm-autorate-rust.@advanced_settings[0].num_reflectors", Some(5), )?, peer_reselection_time: Self::get::( "SQMA_PEER_RESELECTION_TIME", - "sqm-autorate.@advanced_settings[0].peer_reselection_time", + "sqm-autorate-rust.@advanced_settings[0].peer_reselection_time", Some(15), )?, reflector_list_file: Self::get::( "SQMA_REFLECTOR_LIST_FILE", - "sqm-autorate.@advanced_settings[0].reflector_list_file", + "sqm-autorate-rust.@advanced_settings[0].reflector_list_file", Some("/etc/sqm-autorate/reflectors-icmp.csv".parse()?), )?, speed_hist_size: Self::get::( "SQMA_SPEED_HIST_SIZE", - "sqm-autorate.@advanced_settings[0].speed_hist_size", + "sqm-autorate-rust.@advanced_settings[0].speed_hist_size", Some(100), )?, tick_interval: Self::get::( "SQMA_TICK_INTERVAL", - "sqm-autorate.@advanced_settings[0].tick_interval", + "sqm-autorate-rust.@advanced_settings[0].tick_interval", Some(0.5), )?, upload_delay_ms: Self::get::( "SQMA_UPLOAD_DELAY_MS", - "sqm-autorate.@advanced_settings[0].upload_delay_ms", + "sqm-autorate-rust.@advanced_settings[0].upload_delay_ms", Some(15.0), )?, - dry_run: Self::get::( + dry_run: Self::get_bool( "SQMA_DRY_RUN", - "sqm-autorate.@advanced_settings[0].dry_run", + "sqm-autorate-rust.@advanced_settings[0].dry_run", Some(false), )?, }; @@ -317,14 +321,14 @@ impl Config { config.download_min_percent = Self::get::( "SQMA_DOWNLOAD_MIN_PERCENT", - "sqm-autorate.@network[0].download_min_percent", + "sqm-autorate-rust.@network[0].download_min_percent", Some(20.0), )? .clamp(1.0, 80.0); config.upload_min_percent = Self::get::( "SQMA_UPLOAD_MIN_PERCENT", - "sqm-autorate.@network[0].upload_min_percent", + "sqm-autorate-rust.@network[0].upload_min_percent", Some(20.0), )? .clamp(1.0, 80.0);