refactor: Migrate configuration to new UCI path prefix and boolean helper

This commit is contained in:
Nils Andreas Svee committed 2026-04-22 16:55:05 +07:00
1 parent 7d5c2f0275
commit 3ec53a1224
1 file changed
+44 -40
+44 -40
View File
@@ -159,24 +159,24 @@ impl Config {
// Network section // Network section
download_base_kbits: Self::get::<f64>( download_base_kbits: Self::get::<f64>(
"SQMA_DOWNLOAD_BASE_KBITS", "SQMA_DOWNLOAD_BASE_KBITS",
"sqm-autorate.@network[0].download_base_kbits", "sqm-autorate-rust.@network[0].download_base_kbits",
None, None,
)?, )?,
download_interface: Self::get::<String>( download_interface: Self::get::<String>(
"SQMA_DOWNLOAD_INTERFACE", "SQMA_DOWNLOAD_INTERFACE",
"sqm-autorate.@network[0].download_interface", "sqm-autorate-rust.@network[0].download_interface",
None, None,
)?, )?,
download_min_percent: 0.0, // placeholder, computed below download_min_percent: 0.0, // placeholder, computed below
download_min_kbits: 0.0, // placeholder, computed below download_min_kbits: 0.0, // placeholder, computed below
upload_base_kbits: Self::get::<f64>( upload_base_kbits: Self::get::<f64>(
"SQMA_UPLOAD_BASE_KBITS", "SQMA_UPLOAD_BASE_KBITS",
"sqm-autorate.@network[0].upload_base_kbits", "sqm-autorate-rust.@network[0].upload_base_kbits",
None, None,
)?, )?,
upload_interface: Self::get::<String>( upload_interface: Self::get::<String>(
"SQMA_UPLOAD_INTERFACE", "SQMA_UPLOAD_INTERFACE",
"sqm-autorate.@network[0].upload_interface", "sqm-autorate-rust.@network[0].upload_interface",
None, None,
)?, )?,
upload_min_percent: 0.0, // placeholder, computed below upload_min_percent: 0.0, // placeholder, computed below
@@ -184,131 +184,135 @@ impl Config {
// Output section // Output section
log_level: Self::get::<Level>( log_level: Self::get::<Level>(
"SQMA_LOG_LEVEL", "SQMA_LOG_LEVEL",
"sqm-autorate.@output[0].log_level", "sqm-autorate-rust.@output[0].log_level",
Some(Level::Error), Some(Level::Error),
)?, )?,
speed_hist_file: Self::get::<String>( speed_hist_file: Self::get::<String>(
"SQMA_SPEED_HIST_FILE", "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()?), Some("/tmp/sqm-speedhist.csv".parse()?),
)?, )?,
stats_file: Self::get::<String>( stats_file: Self::get::<String>(
"SQMA_STATS_FILE", "SQMA_STATS_FILE",
"sqm-autorate.@output[0].stats_file", "sqm-autorate-rust.@output[0].stats_file",
Some("/tmp/sqm-autorate.csv".parse()?), Some("/tmp/sqm-autorate-rust.csv".parse()?),
)?, )?,
suppress_statistics: Self::get::<bool>( suppress_statistics: Self::get_bool(
"SQMA_SUPPRESS_STATISTICS", "SQMA_SUPPRESS_STATISTICS",
"sqm-autorate.@output[0].suppress_statistics", "sqm-autorate-rust.@output[0].suppress_statistics",
Some(false), Some(false),
)?, )?,
// Observability section // Observability section
observability_enabled: Self::get::<bool>( observability_enabled: Self::get_bool(
"SQMA_OBSERVABILITY_ENABLED", "SQMA_OBSERVABILITY_ENABLED",
"sqm-autorate.@observability[0].enabled", "sqm-autorate-rust.@observability[0].enabled",
Some(false), Some(false),
)?, )?,
observability_protocol: Self::get::<ObservabilityProtocol>( observability_protocol: Self::get::<ObservabilityProtocol>(
"SQMA_OBSERVABILITY_PROTOCOL", "SQMA_OBSERVABILITY_PROTOCOL",
"sqm-autorate.@observability[0].protocol", "sqm-autorate-rust.@observability[0].protocol",
Some(ObservabilityProtocol::Udp), Some(ObservabilityProtocol::Udp),
)?, )?,
observability_host: Self::get_optional::<String>( observability_host: Self::get_optional::<String>(
"SQMA_OBSERVABILITY_HOST", "SQMA_OBSERVABILITY_HOST",
"sqm-autorate.@observability[0].host", "sqm-autorate-rust.@observability[0].host",
), ),
observability_port: Self::get::<u16>( observability_port: Self::get::<u16>(
"SQMA_OBSERVABILITY_PORT", "SQMA_OBSERVABILITY_PORT",
"sqm-autorate.@observability[0].port", "sqm-autorate-rust.@observability[0].port",
Some(8089), Some(8089),
)?, )?,
observability_batch_size: Self::get::<usize>( observability_batch_size: Self::get::<usize>(
"SQMA_OBSERVABILITY_BATCH_SIZE", "SQMA_OBSERVABILITY_BATCH_SIZE",
"sqm-autorate.@observability[0].batch_size", "sqm-autorate-rust.@observability[0].batch_size",
Some(25), Some(25),
)?, )?,
observability_batch_timeout_ms: Self::get::<u64>( observability_batch_timeout_ms: Self::get::<u64>(
"SQMA_OBSERVABILITY_BATCH_TIMEOUT_MS", "SQMA_OBSERVABILITY_BATCH_TIMEOUT_MS",
"sqm-autorate.@observability[0].batch_timeout_ms", "sqm-autorate-rust.@observability[0].batch_timeout_ms",
Some(100), Some(100),
)?, )?,
observability_export_ping_metrics: Self::get::<bool>( observability_export_ping_metrics: Self::get_bool(
"SQMA_OBSERVABILITY_EXPORT_PING_METRICS", "SQMA_OBSERVABILITY_EXPORT_PING_METRICS",
"sqm-autorate.@observability[0].export_ping_metrics", "sqm-autorate-rust.@observability[0].export_ping_metrics",
Some(false), Some(false),
)?, )?,
observability_export_rate_metrics: Self::get::<bool>( observability_export_rate_metrics: Self::get_bool(
"SQMA_OBSERVABILITY_EXPORT_RATE_METRICS", "SQMA_OBSERVABILITY_EXPORT_RATE_METRICS",
"sqm-autorate.@observability[0].export_rate_metrics", "sqm-autorate-rust.@observability[0].export_rate_metrics",
Some(true), Some(true),
)?, )?,
observability_export_baseline_metrics: Self::get::<bool>( observability_export_baseline_metrics: Self::get_bool(
"SQMA_OBSERVABILITY_EXPORT_BASELINE_METRICS", "SQMA_OBSERVABILITY_EXPORT_BASELINE_METRICS",
"sqm-autorate.@observability[0].export_baseline_metrics", "sqm-autorate-rust.@observability[0].export_baseline_metrics",
Some(false), Some(false),
)?, )?,
observability_export_events: Self::get::<bool>( observability_export_events: Self::get_bool(
"SQMA_OBSERVABILITY_EXPORT_EVENTS", "SQMA_OBSERVABILITY_EXPORT_EVENTS",
"sqm-autorate.@observability[0].export_events", "sqm-autorate-rust.@observability[0].export_events",
Some(true), Some(true),
)?, )?,
observability_host_tag: Self::get_host_tag(), observability_host_tag: Self::get::<String>(
"SQMA_OBSERVABILITY_HOST_TAG",
"sqm-autorate-rust.@observability[0].host_tag",
Some(Self::get_host_tag()),
)?,
// Advanced section // Advanced section
download_delay_ms: Self::get::<f64>( download_delay_ms: Self::get::<f64>(
"SQMA_DOWNLOAD_DELAY_MS", "SQMA_DOWNLOAD_DELAY_MS",
"sqm-autorate.@advanced_settings[0].download_delay_ms", "sqm-autorate-rust.@advanced_settings[0].download_delay_ms",
Some(15.0), Some(15.0),
)?, )?,
high_load_level: Self::get::<f64>( high_load_level: Self::get::<f64>(
"SQMA_HIGH_LOAD_LEVEL", "SQMA_HIGH_LOAD_LEVEL",
"sqm-autorate.@advanced_settings[0].high_load_level", "sqm-autorate-rust.@advanced_settings[0].high_load_level",
Some(0.8), Some(0.8),
)?, )?,
measurement_type: Self::get::<MeasurementType>( measurement_type: Self::get::<MeasurementType>(
"SQMA_MEASUREMENT_TYPE", "SQMA_MEASUREMENT_TYPE",
"sqm-autorate.@advanced_settings[0].measurement_type", "sqm-autorate-rust.@advanced_settings[0].measurement_type",
Some(MeasurementType::IcmpTimestamps), Some(MeasurementType::IcmpTimestamps),
)?, )?,
min_change_interval: Self::get::<f64>( min_change_interval: Self::get::<f64>(
"SQMA_MIN_CHANGE_INTERVAL", "SQMA_MIN_CHANGE_INTERVAL",
"sqm-autorate.@advanced_settings[0].min_change_interval", "sqm-autorate-rust.@advanced_settings[0].min_change_interval",
Some(0.5), Some(0.5),
)?, )?,
num_reflectors: Self::get::<u8>( num_reflectors: Self::get::<u8>(
"SQMA_NUM_REFLECTORS", "SQMA_NUM_REFLECTORS",
"sqm-autorate.@advanced_settings[0].num_reflectors", "sqm-autorate-rust.@advanced_settings[0].num_reflectors",
Some(5), Some(5),
)?, )?,
peer_reselection_time: Self::get::<u64>( peer_reselection_time: Self::get::<u64>(
"SQMA_PEER_RESELECTION_TIME", "SQMA_PEER_RESELECTION_TIME",
"sqm-autorate.@advanced_settings[0].peer_reselection_time", "sqm-autorate-rust.@advanced_settings[0].peer_reselection_time",
Some(15), Some(15),
)?, )?,
reflector_list_file: Self::get::<String>( reflector_list_file: Self::get::<String>(
"SQMA_REFLECTOR_LIST_FILE", "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()?), Some("/etc/sqm-autorate/reflectors-icmp.csv".parse()?),
)?, )?,
speed_hist_size: Self::get::<u32>( speed_hist_size: Self::get::<u32>(
"SQMA_SPEED_HIST_SIZE", "SQMA_SPEED_HIST_SIZE",
"sqm-autorate.@advanced_settings[0].speed_hist_size", "sqm-autorate-rust.@advanced_settings[0].speed_hist_size",
Some(100), Some(100),
)?, )?,
tick_interval: Self::get::<f64>( tick_interval: Self::get::<f64>(
"SQMA_TICK_INTERVAL", "SQMA_TICK_INTERVAL",
"sqm-autorate.@advanced_settings[0].tick_interval", "sqm-autorate-rust.@advanced_settings[0].tick_interval",
Some(0.5), Some(0.5),
)?, )?,
upload_delay_ms: Self::get::<f64>( upload_delay_ms: Self::get::<f64>(
"SQMA_UPLOAD_DELAY_MS", "SQMA_UPLOAD_DELAY_MS",
"sqm-autorate.@advanced_settings[0].upload_delay_ms", "sqm-autorate-rust.@advanced_settings[0].upload_delay_ms",
Some(15.0), Some(15.0),
)?, )?,
dry_run: Self::get::<bool>( dry_run: Self::get_bool(
"SQMA_DRY_RUN", "SQMA_DRY_RUN",
"sqm-autorate.@advanced_settings[0].dry_run", "sqm-autorate-rust.@advanced_settings[0].dry_run",
Some(false), Some(false),
)?, )?,
}; };
@@ -317,14 +321,14 @@ impl Config {
config.download_min_percent = Self::get::<f64>( config.download_min_percent = Self::get::<f64>(
"SQMA_DOWNLOAD_MIN_PERCENT", "SQMA_DOWNLOAD_MIN_PERCENT",
"sqm-autorate.@network[0].download_min_percent", "sqm-autorate-rust.@network[0].download_min_percent",
Some(20.0), Some(20.0),
)? )?
.clamp(1.0, 80.0); .clamp(1.0, 80.0);
config.upload_min_percent = Self::get::<f64>( config.upload_min_percent = Self::get::<f64>(
"SQMA_UPLOAD_MIN_PERCENT", "SQMA_UPLOAD_MIN_PERCENT",
"sqm-autorate.@network[0].upload_min_percent", "sqm-autorate-rust.@network[0].upload_min_percent",
Some(20.0), Some(20.0),
)? )?
.clamp(1.0, 80.0); .clamp(1.0, 80.0);