Browse Source

analytic unit id

detection_runner_updade
Alexey Velikiy 2 years ago
parent
commit
f48a22e314
  1. 7
      server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs
  2. 1
      server/src/services/analytic_service/analytic_unit/mod.rs
  3. 7
      server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs
  4. 8
      server/src/services/analytic_service/analytic_unit/threshold_analytic_unit.rs
  5. 1
      server/src/services/analytic_service/analytic_unit/types.rs
  6. 6
      server/src/services/analytic_unit_service.rs

7
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<SARIMA>,
}
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;

1
server/src/services/analytic_service/analytic_unit/mod.rs

@ -8,4 +8,3 @@ use self::{
threshold_analytic_unit::ThresholdAnalyticUnit, types::AnalyticUnitConfig,
};

7
server/src/services/analytic_service/analytic_unit/pattern_analytic_unit.rs

@ -198,14 +198,16 @@ fn max_corr_with_segments(xs: &VecDeque<f64>, yss: &Vec<Vec<f64>>) -> f32 {
}
pub struct PatternAnalyticUnit {
id: String,
config: PatternConfig,
learning_results: Option<LearningResults>,
}
// 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;

8
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,

1
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,

6
server/src/services/analytic_unit_service.rs

@ -36,9 +36,9 @@ impl AnalyticUnitService {
pub fn resolve(&self, cfg: AnalyticUnitConfig) -> Box<dyn types::AnalyticUnit + Send + Sync> {
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())),
}
}
}
Loading…
Cancel
Save