From f48a22e3149f1cedb1557527bae2328f82448e32 Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Mon, 20 Dec 2021 12:01:44 +0300 Subject: [PATCH] analytic unit id --- .../analytic_unit/anomaly_analytic_unit.rs | 7 ++++++- server/src/services/analytic_service/analytic_unit/mod.rs | 1 - .../analytic_unit/pattern_analytic_unit.rs | 7 ++++++- .../analytic_unit/threshold_analytic_unit.rs | 8 ++++++-- .../src/services/analytic_service/analytic_unit/types.rs | 1 + server/src/services/analytic_unit_service.rs | 6 +++--- 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs index 70685bb..15ad5a3 100644 --- a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs @@ -106,13 +106,15 @@ impl SARIMA { } pub struct AnomalyAnalyticUnit { + id: String, config: AnomalyConfig, sarima: Option, } impl AnomalyAnalyticUnit { - pub fn new(config: AnomalyConfig) -> AnomalyAnalyticUnit { + pub fn new(id: String, config: AnomalyConfig) -> AnomalyAnalyticUnit { AnomalyAnalyticUnit { + id, config, sarima: None, } @@ -159,6 +161,9 @@ impl AnomalyAnalyticUnit { #[async_trait] impl AnalyticUnit for AnomalyAnalyticUnit { + fn get_id(&self) -> String { + return self.id.to_owned(); + } fn set_config(&mut self, config: AnalyticUnitConfig) { if let AnalyticUnitConfig::Anomaly(cfg) = config { self.config = cfg; diff --git a/server/src/services/analytic_service/analytic_unit/mod.rs b/server/src/services/analytic_service/analytic_unit/mod.rs index 75b30f9..865bc99 100644 --- a/server/src/services/analytic_service/analytic_unit/mod.rs +++ b/server/src/services/analytic_service/analytic_unit/mod.rs @@ -8,4 +8,3 @@ use self::{ threshold_analytic_unit::ThresholdAnalyticUnit, types::AnalyticUnitConfig, }; - diff --git a/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs index e403751..0619526 100644 --- a/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs @@ -198,14 +198,16 @@ fn max_corr_with_segments(xs: &VecDeque, yss: &Vec>) -> f32 { } pub struct PatternAnalyticUnit { + id: String, config: PatternConfig, learning_results: Option, } // TODO: move this to loginc of analytic unit impl PatternAnalyticUnit { - pub fn new(cfg: PatternConfig) -> PatternAnalyticUnit { + pub fn new(id: String, cfg: PatternConfig) -> PatternAnalyticUnit { PatternAnalyticUnit { + id, config: cfg, learning_results: None, } @@ -214,6 +216,9 @@ impl PatternAnalyticUnit { #[async_trait] impl AnalyticUnit for PatternAnalyticUnit { + fn get_id(&self) -> String { + return self.id.to_owned(); + } fn set_config(&mut self, config: AnalyticUnitConfig) { if let AnalyticUnitConfig::Pattern(cfg) = config { self.config = cfg; diff --git a/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs index 6d2d461..579c3ab 100644 --- a/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs @@ -10,17 +10,21 @@ use async_trait::async_trait; const DETECTION_STEP: u64 = 10; pub struct ThresholdAnalyticUnit { + id: String, config: ThresholdConfig, } impl ThresholdAnalyticUnit { - pub fn new(config: ThresholdConfig) -> ThresholdAnalyticUnit { - ThresholdAnalyticUnit { config } + pub fn new(id: String, config: ThresholdConfig) -> ThresholdAnalyticUnit { + ThresholdAnalyticUnit { id, config } } } #[async_trait] impl AnalyticUnit for ThresholdAnalyticUnit { + fn get_id(&self) -> String { + return self.id.to_owned(); + } async fn learn( &mut self, _ms: MetricService, diff --git a/server/src/services/analytic_service/analytic_unit/types.rs b/server/src/services/analytic_service/analytic_unit/types.rs index 10fa704..d7deaa6 100644 --- a/server/src/services/analytic_service/analytic_unit/types.rs +++ b/server/src/services/analytic_service/analytic_unit/types.rs @@ -130,6 +130,7 @@ pub enum LearningResult { #[async_trait] pub trait AnalyticUnit { + fn get_id(&self) -> String; async fn learn( &mut self, ms: MetricService, diff --git a/server/src/services/analytic_unit_service.rs b/server/src/services/analytic_unit_service.rs index fb7cd29..9d0ffa2 100644 --- a/server/src/services/analytic_unit_service.rs +++ b/server/src/services/analytic_unit_service.rs @@ -36,9 +36,9 @@ impl AnalyticUnitService { pub fn resolve(&self, cfg: AnalyticUnitConfig) -> Box { match cfg { - AnalyticUnitConfig::Threshold(c) => Box::new(ThresholdAnalyticUnit::new(c.clone())), - AnalyticUnitConfig::Pattern(c) => Box::new(PatternAnalyticUnit::new(c.clone())), - AnalyticUnitConfig::Anomaly(c) => Box::new(AnomalyAnalyticUnit::new(c.clone())), + AnalyticUnitConfig::Threshold(c) => Box::new(ThresholdAnalyticUnit::new("1".to_string(), c.clone())), + AnalyticUnitConfig::Pattern(c) => Box::new(PatternAnalyticUnit::new("2".to_string(), c.clone())), + AnalyticUnitConfig::Anomaly(c) => Box::new(AnomalyAnalyticUnit::new("3".to_string(), c.clone())), } } } \ No newline at end of file