diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt index b03171bb737aea191c38be758aa2b3151fa95157..f33ef0a28d95882ec89a2a79d5f9c94c8d13b877 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt @@ -10,86 +10,77 @@ import theodolite.benchmark.KubernetesBenchmark private val logger = KotlinLogging.logger {} -class TheodoliteController(val client : NamespacedKubernetesClient, - val informerBenchmarkExecution: SharedInformer<BenchmarkExecution>, - val informerBenchmarkType : SharedInformer<KubernetesBenchmark> ) { - - var execution : BenchmarkExecution? = null - var benchmarkType : KubernetesBenchmark? = null - - var executor : TheodoliteExecutor? = null - - var updated : Boolean = true - - public fun create(){ +class TheodoliteController( + val client: NamespacedKubernetesClient, + val informerBenchmarkExecution: SharedInformer<BenchmarkExecution>, + val informerBenchmarkType: SharedInformer<KubernetesBenchmark> +) { + var execution: BenchmarkExecution? = null + var benchmarkType: KubernetesBenchmark? = null + var executor: TheodoliteExecutor? = null + var updated: Boolean = true + + /** + * Adds the EventHandler to kubernetes + */ + fun create() { informerBenchmarkExecution.addEventHandler(object : ResourceEventHandler<BenchmarkExecution> { - override fun onAdd(webServer: BenchmarkExecution) { - execution = webServer + override fun onAdd(benchmarkExecution: BenchmarkExecution) { + execution = benchmarkExecution } - override fun onUpdate(webServer: BenchmarkExecution, newWebServer: BenchmarkExecution) { - println("hello there update") - execution = newWebServer + override fun onUpdate(oldExecution: BenchmarkExecution, newExecution: BenchmarkExecution) { + execution = newExecution updated = true shutdown() - } - override fun onDelete(webServer: BenchmarkExecution, b: Boolean) { - println("delted") + override fun onDelete(benchmarkExecution: BenchmarkExecution, b: Boolean) { shutdown() } }) informerBenchmarkType.addEventHandler(object : ResourceEventHandler<KubernetesBenchmark> { - override fun onAdd(webServer: KubernetesBenchmark) { - benchmarkType = webServer - println("hello there add") - println(webServer.name) + override fun onAdd(kubernetesBenchmark: KubernetesBenchmark) { + benchmarkType = kubernetesBenchmark } - override fun onUpdate(webServer: KubernetesBenchmark, newWebServer: KubernetesBenchmark) { - benchmarkType = newWebServer - println("hello there update") + override fun onUpdate(oldBenchmark: KubernetesBenchmark, newBenchmark: KubernetesBenchmark) { + benchmarkType = newBenchmark updated = true shutdown() - - } - override fun onDelete(webServer: KubernetesBenchmark, b: Boolean) { - println("delted") - println(webServer.name) + override fun onDelete(kubernetesBenchmark: KubernetesBenchmark, b: Boolean) { shutdown() } }) } - fun run(){ - while (true){ + fun run() { + while (true) { try { reconcile() - } - catch (e: InterruptedException){ - logger.error{"$e "} + } catch (e: InterruptedException) { + logger.error { "$e" } } } } @Synchronized private fun reconcile() { - val localExecution = this.execution - val localType = this.benchmarkType - if(localType is KubernetesBenchmark && localExecution is BenchmarkExecution && updated){ + val localExecution = this.execution + val localType = this.benchmarkType - executor = TheodoliteExecutor(config= localExecution,kubernetesBenchmark = localType) + if (localType is KubernetesBenchmark && localExecution is BenchmarkExecution && updated) { + executor = TheodoliteExecutor(config = localExecution, kubernetesBenchmark = localType) executor!!.run() updated = false } } - private fun shutdown(){ - + private fun shutdown() { + Shutdown(benchmarkExecution = execution!!, benchmark = benchmarkType!!).run() } -} \ No newline at end of file +}