Skip to content
Snippets Groups Projects
Commit eb1e5fda authored by Lorenz Boguhn's avatar Lorenz Boguhn
Browse files

refactor TheodoliteController

parent edd72048
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!106Introduce a Theodolite operator,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
...@@ -10,86 +10,77 @@ import theodolite.benchmark.KubernetesBenchmark ...@@ -10,86 +10,77 @@ import theodolite.benchmark.KubernetesBenchmark
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
class TheodoliteController(val client : NamespacedKubernetesClient, class TheodoliteController(
val informerBenchmarkExecution: SharedInformer<BenchmarkExecution>, val client: NamespacedKubernetesClient,
val informerBenchmarkType : SharedInformer<KubernetesBenchmark> ) { val informerBenchmarkExecution: SharedInformer<BenchmarkExecution>,
val informerBenchmarkType: SharedInformer<KubernetesBenchmark>
var execution : BenchmarkExecution? = null ) {
var benchmarkType : KubernetesBenchmark? = null var execution: BenchmarkExecution? = null
var benchmarkType: KubernetesBenchmark? = null
var executor : TheodoliteExecutor? = null var executor: TheodoliteExecutor? = null
var updated: Boolean = true
var updated : Boolean = true
/**
public fun create(){ * Adds the EventHandler to kubernetes
*/
fun create() {
informerBenchmarkExecution.addEventHandler(object : ResourceEventHandler<BenchmarkExecution> { informerBenchmarkExecution.addEventHandler(object : ResourceEventHandler<BenchmarkExecution> {
override fun onAdd(webServer: BenchmarkExecution) { override fun onAdd(benchmarkExecution: BenchmarkExecution) {
execution = webServer execution = benchmarkExecution
} }
override fun onUpdate(webServer: BenchmarkExecution, newWebServer: BenchmarkExecution) { override fun onUpdate(oldExecution: BenchmarkExecution, newExecution: BenchmarkExecution) {
println("hello there update") execution = newExecution
execution = newWebServer
updated = true updated = true
shutdown() shutdown()
} }
override fun onDelete(webServer: BenchmarkExecution, b: Boolean) { override fun onDelete(benchmarkExecution: BenchmarkExecution, b: Boolean) {
println("delted")
shutdown() shutdown()
} }
}) })
informerBenchmarkType.addEventHandler(object : ResourceEventHandler<KubernetesBenchmark> { informerBenchmarkType.addEventHandler(object : ResourceEventHandler<KubernetesBenchmark> {
override fun onAdd(webServer: KubernetesBenchmark) { override fun onAdd(kubernetesBenchmark: KubernetesBenchmark) {
benchmarkType = webServer benchmarkType = kubernetesBenchmark
println("hello there add")
println(webServer.name)
} }
override fun onUpdate(webServer: KubernetesBenchmark, newWebServer: KubernetesBenchmark) { override fun onUpdate(oldBenchmark: KubernetesBenchmark, newBenchmark: KubernetesBenchmark) {
benchmarkType = newWebServer benchmarkType = newBenchmark
println("hello there update")
updated = true updated = true
shutdown() shutdown()
} }
override fun onDelete(webServer: KubernetesBenchmark, b: Boolean) { override fun onDelete(kubernetesBenchmark: KubernetesBenchmark, b: Boolean) {
println("delted")
println(webServer.name)
shutdown() shutdown()
} }
}) })
} }
fun run(){ fun run() {
while (true){ while (true) {
try { try {
reconcile() reconcile()
} } catch (e: InterruptedException) {
catch (e: InterruptedException){ logger.error { "$e" }
logger.error{"$e "}
} }
} }
} }
@Synchronized @Synchronized
private fun reconcile() { private fun reconcile() {
val localExecution = this.execution val localExecution = this.execution
val localType = this.benchmarkType val localType = this.benchmarkType
if(localType is KubernetesBenchmark && localExecution is BenchmarkExecution && updated){
executor = TheodoliteExecutor(config= localExecution,kubernetesBenchmark = localType) if (localType is KubernetesBenchmark && localExecution is BenchmarkExecution && updated) {
executor = TheodoliteExecutor(config = localExecution, kubernetesBenchmark = localType)
executor!!.run() executor!!.run()
updated = false updated = false
} }
} }
private fun shutdown(){ private fun shutdown() {
Shutdown(benchmarkExecution = execution!!, benchmark = benchmarkType!!).run()
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment