Skip to main content

mobius_gateway/telemetry/
policy.rs

1//! Operator-selected telemetry transport policy.
2
3use crate::Result;
4
5mobius::embedded_config! {
6    copy;
7/// HTTP policy for explicitly configured collectors.
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub struct TelemetryPolicy {
10    /// Permit cleartext HTTP beyond loopback for an operator-managed private network.
11    pub allow_insecure_http: bool,
12    /// Deadline for each collector HTTP request.
13    pub request_timeout_seconds: u64,
14    /// Deadline for the full fresh measurement and upload admission operation.
15    pub upload_admission_timeout_seconds: u64,
16}
17    defaults = include_str!("policy.toml");
18}
19impl TelemetryPolicy {
20    /// Validates telemetry deadlines.
21    /// # Errors
22    /// Returns an error for zero or unbounded request deadlines.
23    pub fn validate(&self) -> Result<()> {
24        crate::config::bounded(
25            "telemetry.request_timeout_seconds",
26            self.request_timeout_seconds,
27            1..=3_600,
28        )?;
29        crate::config::bounded(
30            "telemetry.upload_admission_timeout_seconds",
31            self.upload_admission_timeout_seconds,
32            1..=3_600,
33        )?;
34        Ok(())
35    }
36}