From 354e3dfd8bbe88e47e0b80ae505062aafebe6a77 Mon Sep 17 00:00:00 2001 From: paulobressan Date: Mon, 7 Oct 2024 15:25:17 -0300 Subject: [PATCH] feat: added daemon mode --- src/bin/daemon.rs | 23 ++++++++++++++++++++--- src/drivers/monitor/mod.rs | 2 +- src/drivers/usage/mod.rs | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bin/daemon.rs b/src/bin/daemon.rs index ce2b12d..c00e631 100644 --- a/src/bin/daemon.rs +++ b/src/bin/daemon.rs @@ -24,14 +24,30 @@ async fn main() -> Result<()> { let config = Config::new()?; - let schedule = fabric::drivers::usage::schedule(config.clone().into()); - let subscribe = fabric::drivers::monitor::subscribe(config.clone().into()); + match config.mode { + Some(Mode::Usage) => { + fabric::drivers::usage::schedule(config.clone().into()).await?; + } + Some(Mode::Monitor) => { + fabric::drivers::monitor::subscribe(config.clone().into()).await?; + } + None => { + let schedule = fabric::drivers::usage::schedule(config.clone().into()); + let subscribe = fabric::drivers::monitor::subscribe(config.clone().into()); - try_join!(schedule, subscribe)?; + try_join!(schedule, subscribe)?; + } + }; Ok(()) } +#[derive(Debug, Deserialize, Clone)] +enum Mode { + Usage, + Monitor, +} + #[derive(Debug, Deserialize, Clone)] struct Prometheus { url: String, @@ -47,6 +63,7 @@ struct Config { delay: Duration, topic: String, kafka: HashMap, + mode: Option, } impl Config { pub fn new() -> Result { diff --git a/src/drivers/monitor/mod.rs b/src/drivers/monitor/mod.rs index dcfd724..665fb60 100644 --- a/src/drivers/monitor/mod.rs +++ b/src/drivers/monitor/mod.rs @@ -21,7 +21,7 @@ pub async fn subscribe(config: MonitorConfig) -> Result<()> { let consumer: StreamConsumer = client_config.create()?; consumer.subscribe(&[&config.topic])?; - info!("Subscriber running"); + info!("Monitor subscribe running"); loop { match consumer.recv().await { Err(error) => error!(?error, "kafka subscribe error"), diff --git a/src/drivers/usage/mod.rs b/src/drivers/usage/mod.rs index 50fd4d0..32e0b12 100644 --- a/src/drivers/usage/mod.rs +++ b/src/drivers/usage/mod.rs @@ -16,6 +16,7 @@ pub async fn schedule(config: UsageConfig) -> Result<()> { let mut cursor = Utc::now(); + info!("Usage schedule running"); loop { sleep(config.delay).await;