From f2e26bd03f26c318a25d4f7efeb72a953af398c1 Mon Sep 17 00:00:00 2001
From: "stu126940@mail.uni-kiel.de" <stu126940@mail.uni-kiel.de>
Date: Wed, 13 Oct 2021 15:14:52 +0200
Subject: [PATCH] Load paramter via quarkus configuration mechanism

---
 .../theodolite/evaluation/AnalysisExecutor.kt |  2 +-
 .../theodolite/evaluation/SloConfigHandler.kt | 21 +++++++++++++++++++
 .../theodolite/util/TheodoliteConfig.kt       | 18 ++++++++++++++++
 .../src/main/resources/application.properties |  3 +++
 4 files changed, 43 insertions(+), 1 deletion(-)
 create mode 100644 theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt
 create mode 100644 theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt

diff --git a/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt b/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt
index 8e363a18e..d1eadd035 100644
--- a/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt
+++ b/theodolite/src/main/kotlin/theodolite/evaluation/AnalysisExecutor.kt
@@ -51,7 +51,7 @@ class AnalysisExecutor(
                     fetcher.fetchMetric(
                         start = interval.first,
                         end = interval.second,
-                        query = slo.query
+                        query = SloConfigHandler.getQueryString(sloType = slo.sloType)
                     )
                 }
 
diff --git a/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt b/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt
new file mode 100644
index 000000000..38f21f586
--- /dev/null
+++ b/theodolite/src/main/kotlin/theodolite/evaluation/SloConfigHandler.kt
@@ -0,0 +1,21 @@
+package theodolite.evaluation
+
+import theodolite.util.InvalidPatcherConfigurationException
+import theodolite.util.TheodoliteConfig
+import javax.inject.Inject
+
+class SloConfigHandler {
+
+    companion object {
+        @Inject
+        lateinit var config: TheodoliteConfig
+
+        fun getQueryString(sloType: String): String {
+            return when (sloType){
+                "Lag Trend" -> config.PROM_RECORD_LAG_QUERY
+                "Dropped Records" -> config.PROM_DROPPED_RECORDS_QUERY
+                else -> throw  InvalidPatcherConfigurationException("Could not find Prometheus query string for slo type $sloType")
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt b/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt
new file mode 100644
index 000000000..3a2cbe8b9
--- /dev/null
+++ b/theodolite/src/main/kotlin/theodolite/util/TheodoliteConfig.kt
@@ -0,0 +1,18 @@
+package theodolite.util
+
+import io.quarkus.arc.config.ConfigProperties
+import org.eclipse.microprofile.config.inject.ConfigProperty
+import javax.enterprise.context.ApplicationScoped
+import javax.inject.Inject
+import javax.inject.Singleton
+
+
+@ApplicationScoped
+class TheodoliteConfig{
+
+    @ConfigProperty(name = "prom.dropped.records.query")
+    lateinit var PROM_DROPPED_RECORDS_QUERY: String
+
+    @ConfigProperty(name = "prom.record.lag.query")
+    lateinit var PROM_RECORD_LAG_QUERY: String
+}
\ No newline at end of file
diff --git a/theodolite/src/main/resources/application.properties b/theodolite/src/main/resources/application.properties
index 42647e239..b888207f1 100644
--- a/theodolite/src/main/resources/application.properties
+++ b/theodolite/src/main/resources/application.properties
@@ -4,3 +4,6 @@ quarkus.native.additional-build-args=\
   --initialize-at-run-time=io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl$1,\
   --initialize-at-run-time=io.fabric8.kubernetes.client.dsl.internal.core.v1.PodOperationsImpl$3,\
   --report-unsupported-elements-at-runtime
+
+prom.record.lag.query="sum by(group)(kafka_consumergroup_group_lag >= 0)"
+prom.dropped.records.query="todo"
-- 
GitLab