Skip to content
Snippets Groups Projects

Introduce a Theodolite operator

Compare and
25 files
+ 405
34
Compare changes
  • Side-by-side
  • Inline
Files
25
package theodolite.benchmark
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.api.model.Namespaced
import io.fabric8.kubernetes.client.CustomResource
import io.quarkus.runtime.annotations.RegisterForReflection
import theodolite.util.ConfigurationOverride
import kotlin.properties.Delegates
@JsonDeserialize
@RegisterForReflection
class BenchmarkExecution {
class BenchmarkExecution : CustomResource(), Namespaced {
lateinit var name: String
lateinit var benchmark: String
lateinit var load: LoadDefinition
@@ -14,16 +19,18 @@ class BenchmarkExecution {
lateinit var execution: Execution
lateinit var configOverrides: List<ConfigurationOverride?>
@JsonDeserialize
@RegisterForReflection
class Execution {
class Execution : KubernetesResource {
lateinit var strategy: String
var duration by Delegates.notNull<Long>()
var repetitions by Delegates.notNull<Int>()
lateinit var restrictions: List<String>
}
@JsonDeserialize
@RegisterForReflection
class Slo {
class Slo : KubernetesResource {
lateinit var sloType: String
var threshold by Delegates.notNull<Int>()
lateinit var prometheusUrl: String
@@ -32,14 +39,17 @@ class BenchmarkExecution {
var warmup by Delegates.notNull<Int>()
}
@JsonDeserialize
@RegisterForReflection
class LoadDefinition {
class LoadDefinition : KubernetesResource {
lateinit var loadType: String
lateinit var loadValues: List<Int>
}
@JsonDeserialize
@RegisterForReflection
class ResourceDefinition {
class ResourceDefinition : KubernetesResource {
lateinit var resourceType: String
lateinit var resourceValues: List<Int>
}
Loading