use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone)]
pub enum ServiceCloudConfig {
InstanceType {
provider: Option<String>,
instance_type: String,
cpu_query: Option<String>,
},
ManualWatts {
idle_watts: f64,
max_watts: f64,
cpu_query: Option<String>,
},
}
#[derive(Debug, Clone)]
pub struct CloudEnergyConfig {
pub prometheus_endpoint: String,
pub scrape_interval: Duration,
pub default_provider: Option<String>,
pub default_instance_type: Option<String>,
pub cpu_metric: Option<String>,
pub services: HashMap<String, ServiceCloudConfig>,
}
impl ServiceCloudConfig {
#[must_use]
pub fn cpu_query(&self) -> Option<&str> {
match self {
Self::InstanceType { cpu_query, .. } | Self::ManualWatts { cpu_query, .. } => {
cpu_query.as_deref()
}
}
}
}