use std::collections::BTreeMap;
pub trait MetricReader: Send + Sync {
fn latest_sample(
&self,
account_id: &str,
region: &str,
namespace: &str,
metric_name: &str,
dimensions: &BTreeMap<String, String>,
) -> Option<f64>;
fn alarm_state(&self, account_id: &str, region: &str, alarm_name: &str) -> Option<String>;
fn alarms_firing_for_action(
&self,
account_id: &str,
region: &str,
policy_arn: &str,
) -> Vec<String>;
}
pub trait EcsServiceHook: Send + Sync {
fn current_desired_count(
&self,
account_id: &str,
region: &str,
cluster_name: &str,
service_name: &str,
) -> Option<i32>;
fn set_desired_count(
&self,
account_id: &str,
region: &str,
cluster_name: &str,
service_name: &str,
desired_count: i32,
) -> Result<(), String>;
}
pub trait DynamoDbCapacityHook: Send + Sync {
fn current_capacity(
&self,
account_id: &str,
region: &str,
table_name: &str,
) -> Option<(i64, i64)>;
fn set_capacity(
&self,
account_id: &str,
region: &str,
table_name: &str,
read: Option<i64>,
write: Option<i64>,
) -> Result<(), String>;
}