omni_orchestrator/app_autoscaler/
metrics.rs1use std::collections::HashMap;
2use async_trait::async_trait;
3use serde::{Serialize, Deserialize};
4
5use super::error::AutoscalerError;
6
7#[async_trait]
9pub trait MetricsCollector: Send + Sync + std::fmt::Debug {
10 async fn collect_instance_metrics(&self, instance_id: &str) -> Result<HashMap<String, f32>, AutoscalerError>;
12
13 async fn collect_node_metrics(&self, node_id: &str) -> Result<HashMap<String, f32>, AutoscalerError>;
15
16 async fn collect_aggregate_metrics(&self) -> Result<HashMap<String, f32>, AutoscalerError>;
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
22pub enum MetricThreshold {
23 Float(f32),
24 Integer(i64),
25 Boolean(bool),
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq)]
30pub enum ScalingAction {
31 ScaleUp,
32 ScaleDown,
33 NoAction,
34}