Skip to main content

coil_observability/
runtime.rs

1use crate::ObservabilityError;
2use crate::feature_flags::FeatureFlagRegistry;
3use crate::health::{HealthProbeKind, HealthReport, MaintenanceMode};
4use crate::telemetry::TelemetryCatalog;
5use coil_config::{Environment, ObservabilityConfig};
6
7#[derive(Debug, Clone, PartialEq, Eq)]
8pub struct ObservabilityRuntime {
9    pub telemetry: TelemetryCatalog,
10    pub liveness: HealthReport,
11    pub readiness: HealthReport,
12    pub maintenance: MaintenanceMode,
13    pub flags: FeatureFlagRegistry,
14}
15
16impl ObservabilityRuntime {
17    pub fn baseline(
18        config: &ObservabilityConfig,
19        environment: Environment,
20    ) -> Result<Self, ObservabilityError> {
21        Ok(Self {
22            telemetry: TelemetryCatalog::baseline(config, environment)?,
23            liveness: HealthReport::new(HealthProbeKind::Liveness),
24            readiness: HealthReport::new(HealthProbeKind::Readiness),
25            maintenance: MaintenanceMode::disabled(),
26            flags: FeatureFlagRegistry::new(),
27        })
28    }
29}