From 1f2d6f551ebb10cf243adb6be95a48740be67984 Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Thu, 23 Dec 2021 13:07:07 +0300 Subject: [PATCH] patch config: same type param --- .../analytic_service/analytic_service.rs | 6 ++-- .../analytic_service/analytic_unit/types.rs | 28 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index 41947f3..aba5a6f 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -72,9 +72,7 @@ impl AnalyticService { alerting, - // TODO: get it from persistance analytic_unit: None, - // TODO: get pattern from saved in analytic_unit_service analytic_unit_config: analytic_unit_service.get_active_config().unwrap(), analytic_unit_learning_status: LearningStatus::Initialization, @@ -277,7 +275,7 @@ impl AnalyticService { fn patch_config(&mut self, patch: PatchConfig, tx: oneshot::Sender<()>) { // TODO: update config in db - let (new_conf, need_learning) = self.analytic_unit_config.patch(patch); + let (new_conf, need_learning, same_type) = self.analytic_unit_config.patch(patch); self.analytic_unit_config = new_conf; if need_learning { self.consume_request(RequestType::RunLearning); @@ -312,6 +310,8 @@ impl AnalyticService { } } } + + // TODO: save config depending on type } pub async fn serve(&mut self) { diff --git a/server/src/services/analytic_service/analytic_unit/types.rs b/server/src/services/analytic_service/analytic_unit/types.rs index b591d94..2ae8221 100644 --- a/server/src/services/analytic_service/analytic_unit/types.rs +++ b/server/src/services/analytic_service/analytic_unit/types.rs @@ -63,22 +63,22 @@ pub enum AnalyticUnitConfig { } impl AnalyticUnitConfig { - // return true if patch is different type - pub fn patch(&self, patch: PatchConfig) -> (AnalyticUnitConfig, bool) { + // return true if need needs relearning and true if the config of the same type + pub fn patch(&self, patch: PatchConfig) -> (AnalyticUnitConfig, bool, bool) { match patch { PatchConfig::Pattern(tcfg) => match self.clone() { AnalyticUnitConfig::Pattern(_) => { if tcfg.is_some() { - return (AnalyticUnitConfig::Pattern(tcfg.unwrap()), false); + return (AnalyticUnitConfig::Pattern(tcfg.unwrap()), false, true); } else { - return (AnalyticUnitConfig::Pattern(Default::default()), false); + return (AnalyticUnitConfig::Pattern(Default::default()), false, true); } } _ => { if tcfg.is_some() { - return (AnalyticUnitConfig::Pattern(tcfg.unwrap()), true); + return (AnalyticUnitConfig::Pattern(tcfg.unwrap()), true, false); } else { - return (AnalyticUnitConfig::Pattern(Default::default()), true); + return (AnalyticUnitConfig::Pattern(Default::default()), true, false); } } }, @@ -89,16 +89,16 @@ impl AnalyticUnitConfig { let t = tcfg.as_ref().unwrap(); let mut need_learning = t.seasonality != scfg.seasonality; need_learning |= t.seasonality_iterations != scfg.seasonality_iterations; - return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), need_learning); + return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), need_learning, true); } else { - return (AnalyticUnitConfig::Anomaly(Default::default()), false); + return (AnalyticUnitConfig::Anomaly(Default::default()), false, true); } } _ => { if tcfg.is_some() { - return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), true); + return (AnalyticUnitConfig::Anomaly(tcfg.unwrap()), true, false); } else { - return (AnalyticUnitConfig::Anomaly(Default::default()), true); + return (AnalyticUnitConfig::Anomaly(Default::default()), true, false); } } }, @@ -106,16 +106,16 @@ impl AnalyticUnitConfig { PatchConfig::Threshold(tcfg) => match self.clone() { AnalyticUnitConfig::Threshold(_) => { if tcfg.is_some() { - return (AnalyticUnitConfig::Threshold(tcfg.unwrap()), false); + return (AnalyticUnitConfig::Threshold(tcfg.unwrap()), false, true); } else { - return (AnalyticUnitConfig::Threshold(Default::default()), false); + return (AnalyticUnitConfig::Threshold(Default::default()), false, true); } } _ => { if tcfg.is_some() { - return (AnalyticUnitConfig::Threshold(tcfg.unwrap()), true); + return (AnalyticUnitConfig::Threshold(tcfg.unwrap()), true, false); } else { - return (AnalyticUnitConfig::Threshold(Default::default()), true); + return (AnalyticUnitConfig::Threshold(Default::default()), true, false); } } },