Skip to content
Snippets Groups Projects
Commit 1dd907fa authored by Lorenz Boguhn's avatar Lorenz Boguhn Committed by Sören Henning
Browse files

Make namespace configurable by environment variable

parent 1119f6d6
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!91Make namespace configurable,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
...@@ -2,10 +2,14 @@ package theodolite.benchmark ...@@ -2,10 +2,14 @@ package theodolite.benchmark
import io.fabric8.kubernetes.api.model.KubernetesResource import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.client.DefaultKubernetesClient import io.fabric8.kubernetes.client.DefaultKubernetesClient
import mu.KotlinLogging
import theodolite.k8s.K8sResourceLoader import theodolite.k8s.K8sResourceLoader
import theodolite.patcher.PatcherManager import theodolite.patcher.PatcherManager
import theodolite.util.* import theodolite.util.*
import java.util.*
private val logger = KotlinLogging.logger {}
private var DEFAULT_NAMESPACE = "theodolite-she"
class KubernetesBenchmark : Benchmark { class KubernetesBenchmark : Benchmark {
lateinit var name: String lateinit var name: String
...@@ -14,11 +18,19 @@ class KubernetesBenchmark : Benchmark { ...@@ -14,11 +18,19 @@ class KubernetesBenchmark : Benchmark {
lateinit var resourceTypes: List<TypeName> lateinit var resourceTypes: List<TypeName>
lateinit var loadTypes: List<TypeName> lateinit var loadTypes: List<TypeName>
lateinit var kafkaConfig: KafkaConfig lateinit var kafkaConfig: KafkaConfig
lateinit var namespace: String
private fun loadKubernetesResources(resources: List<String>): List<Pair<String, KubernetesResource>> { private fun loadKubernetesResources(resources: List<String>): List<Pair<String, KubernetesResource>> {
val basePath = "./../../../resources/main/yaml/" val basePath = "./../../../resources/main/yaml/"
val parser = YamlParser() val parser = YamlParser()
val loader = K8sResourceLoader(DefaultKubernetesClient().inNamespace("theodolite-she"))
namespace = System.getenv("NAMESPACE")
if (namespace.isNullOrEmpty()) {
logger.info("No enviroment variable namespace found. Using default: $DEFAULT_NAMESPACE")
namespace = DEFAULT_NAMESPACE
}
val loader = K8sResourceLoader(DefaultKubernetesClient().inNamespace(namespace))
return resources return resources
.map { resource -> .map { resource ->
val resourcePath = "$basePath/$resource" val resourcePath = "$basePath/$resource"
...@@ -50,6 +62,7 @@ class KubernetesBenchmark : Benchmark { ...@@ -50,6 +62,7 @@ class KubernetesBenchmark : Benchmark {
} }
return KubernetesBenchmarkDeployment( return KubernetesBenchmarkDeployment(
namespace = namespace,
resources = resources.map { r -> r.second }, resources = resources.map { r -> r.second },
kafkaConfig = hashMapOf("bootstrap.servers" to kafkaConfig.bootstrapServer), kafkaConfig = hashMapOf("bootstrap.servers" to kafkaConfig.bootstrapServer),
topics = kafkaConfig.getKafkaTopics() topics = kafkaConfig.getKafkaTopics()
......
...@@ -5,15 +5,15 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient ...@@ -5,15 +5,15 @@ import io.fabric8.kubernetes.client.DefaultKubernetesClient
import org.apache.kafka.clients.admin.NewTopic import org.apache.kafka.clients.admin.NewTopic
import theodolite.k8s.K8sManager import theodolite.k8s.K8sManager
import theodolite.k8s.TopicManager import theodolite.k8s.TopicManager
import java.util.*
class KubernetesBenchmarkDeployment( class KubernetesBenchmarkDeployment(
val namespace: String,
val resources: List<KubernetesResource>, val resources: List<KubernetesResource>,
private val kafkaConfig: HashMap<String, Any>, private val kafkaConfig: HashMap<String, Any>,
private val topics: Collection<NewTopic> private val topics: Collection<NewTopic>
) : BenchmarkDeployment { ) : BenchmarkDeployment {
private val kafkaController = TopicManager(this.kafkaConfig) private val kafkaController = TopicManager(this.kafkaConfig)
private val kubernetesManager = K8sManager(DefaultKubernetesClient().inNamespace("theodolite-she")) private val kubernetesManager = K8sManager(DefaultKubernetesClient().inNamespace(namespace))
override fun setup() { override fun setup() {
kafkaController.createTopics(this.topics) kafkaController.createTopics(this.topics)
......
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