Skip to content
Snippets Groups Projects
Commit fa1ff8f2 authored by Sören Henning's avatar Sören Henning
Browse files

Merge branch 'master' of git.se.informatik.uni-kiel.de:she/theodolite

parents aefbabaf 854acf9a
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,7 @@ class Action {
timeout = exec.timeoutSeconds,
command = exec.command
)
if(exitCode != 0){
if (exitCode != 0){
throw ActionCommandFailedException("Error while executing action, finished with exit code $exitCode")
}
}
......@@ -38,7 +38,7 @@ class ActionSelector {
@JsonDeserialize
@RegisterForReflection
class PodSelector {
lateinit var matchLabels: MutableMap<String, String>
lateinit var matchLabels: Map<String, String>
}
@JsonDeserialize
@RegisterForReflection
......
......@@ -33,7 +33,7 @@ class ActionCommand(val client: NamespacedKubernetesClient) {
* @return the exit code of this executed command
*/
fun exec(
matchLabels: MutableMap<String, String>,
matchLabels: Map<String, String>,
command: Array<String>,
timeout: Long = Configuration.TIMEOUT_SECONDS,
container: String = ""
......@@ -58,7 +58,7 @@ class ActionCommand(val client: NamespacedKubernetesClient) {
val latchTerminationStatus = execLatch.await(timeout, TimeUnit.SECONDS)
if (!latchTerminationStatus) {
throw ActionCommandFailedException("Latch could not terminate within specified time")
throw ActionCommandFailedException("Timeout while running action command")
}
execWatch.close()
} catch (e: Exception) {
......@@ -112,7 +112,7 @@ class ActionCommand(val client: NamespacedKubernetesClient) {
* it can take a while until the status is ready and the pod can be selected.
* @return the name of the pod or throws [ActionCommandFailedException]
*/
fun getPodName(matchLabels: MutableMap<String, String>, tries: Int): String {
fun getPodName(matchLabels: Map<String, String>, tries: Int): String {
for (i in 1..tries) {
try {
......@@ -125,7 +125,7 @@ class ActionCommand(val client: NamespacedKubernetesClient) {
throw ActionCommandFailedException("Couldn't find any pod that matches the specified labels.")
}
private fun getPodName(matchLabels: MutableMap<String, String>): String {
private fun getPodName(matchLabels: Map<String, String>): String {
return try {
val podNames = this.client
.pods()
......
......@@ -54,7 +54,7 @@ class MetricFetcher(private val prometheusURL: String, private val offset: Durat
} else {
val values = parseValues(response)
if (values.data?.result.isNullOrEmpty()) {
throw NoSuchFieldException("Empty query result: $values between $start and $end for query $query.")
throw NoSuchFieldException("Empty query result: $values between for query '$query' in interval [$offsetStart,$offsetEnd] .")
}
return parseValues(response)
}
......
......@@ -190,7 +190,7 @@ class BenchmarkStateChecker(
}
}
private fun <K, V> MutableMap<K, V>.containsMatchLabels(matchLabels: MutableMap<V, V>): Boolean {
private fun <K, V> Map<K, V>.containsMatchLabels(matchLabels: Map<V, V>): Boolean {
for (kv in matchLabels) {
if (kv.value != this[kv.key as K]) {
return false
......
package theodolite.execution.operator
import io.fabric8.kubernetes.client.KubernetesClientException
import io.fabric8.kubernetes.client.NamespacedKubernetesClient
import io.fabric8.kubernetes.client.dsl.MixedOperation
import io.fabric8.kubernetes.client.dsl.Resource
import mu.KotlinLogging
import theodolite.execution.Shutdown
import theodolite.k8s.K8sContextFactory
import theodolite.k8s.ResourceByLabelHandler
import theodolite.model.crd.*
private val logger = KotlinLogging.logger {}
class ClusterSetup(
private val executionCRDClient: MixedOperation<ExecutionCRD, BenchmarkExecutionList, Resource<ExecutionCRD>>,
private val benchmarkCRDClient: MixedOperation<BenchmarkCRD, KubernetesBenchmarkList, Resource<BenchmarkCRD>>,
......@@ -75,10 +79,15 @@ class ClusterSetup(
labelName = "app.kubernetes.io/created-by",
labelValue = "theodolite"
)
resourceRemover.removeCR(
labelName = "app.kubernetes.io/created-by",
labelValue = "theodolite",
context = serviceMonitorContext
)
try {
resourceRemover.removeCR(
labelName = "app.kubernetes.io/created-by",
labelValue = "theodolite",
context = serviceMonitorContext
)
} catch (e: KubernetesClientException) {
logger.warn { "Service monitors could not be cleaned up. It may be that service monitors are not registered by the Kubernetes API."}
logger.debug { "Error is: ${e.message}" }
}
}
}
\ No newline at end of file
......@@ -102,7 +102,7 @@ class ActionCommandTest {
val action = Action()
action.selector = ActionSelector()
action.selector.pod = PodSelector()
action.selector.pod.matchLabels = mutableMapOf("app" to "pod")
action.selector.pod.matchLabels = mapOf("app" to "pod")
action.exec = Command()
action.exec.command = arrayOf("ls")
action.exec.timeoutSeconds = 10L
......@@ -118,7 +118,7 @@ class ActionCommandTest {
val action = Action()
action.selector = ActionSelector()
action.selector.pod = PodSelector()
action.selector.pod.matchLabels = mutableMapOf("app" to "pod")
action.selector.pod.matchLabels = mapOf("app" to "pod")
action.exec = Command()
action.exec.command = arrayOf("error-command")
action.exec.timeoutSeconds = 10L
......
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