Skip to content
Snippets Groups Projects
Commit db04988b authored by Benedikt Wetzel's avatar Benedikt Wetzel
Browse files

small fixes, minor code changes

parent c1ce4104
No related branches found
No related tags found
1 merge request!171Introduce ResourceSets to make loading of resource files more flexible
......@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.client.DefaultKubernetesClient
import io.fabric8.kubernetes.client.NamespacedKubernetesClient
import io.quarkus.runtime.annotations.RegisterForReflection
import mu.KotlinLogging
import theodolite.k8s.resourceLoader.K8sResourceLoaderFromString
import theodolite.util.YamlParserFromString
......@@ -11,17 +12,17 @@ import theodolite.util.YamlParserFromString
private val logger = KotlinLogging.logger {}
private const val DEFAULT_NAMESPACE = "default"
@RegisterForReflection
@JsonDeserialize
class ConfigMapResourceSet: ResourceSet {
class ConfigMapResourceSet: ResourceSet, KubernetesResource {
lateinit var configmap: String
lateinit var files: List<String> // load all files, iff files is not set
private val namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
private val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace)
private val loader = K8sResourceLoaderFromString(client)
@OptIn(ExperimentalStdlibApi::class)
override fun getResourceSet(): List<Pair<String, KubernetesResource>> {
val namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace)
val loader = K8sResourceLoaderFromString(client)
var resources = client
.configMaps()
......@@ -42,7 +43,7 @@ class ConfigMapResourceSet: ResourceSet {
it) }
.map {
Pair(
it.first,
it.second.key,
loader.loadK8sResource(it.first, it.second.value)) }
}
......
......@@ -3,6 +3,7 @@ package theodolite.benchmark
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.client.DefaultKubernetesClient
import io.quarkus.runtime.annotations.RegisterForReflection
import mu.KotlinLogging
import theodolite.k8s.resourceLoader.K8sResourceLoaderFromFile
import theodolite.util.DeploymentFailedException
......@@ -12,13 +13,11 @@ import java.io.File
private val logger = KotlinLogging.logger {}
private const val DEFAULT_NAMESPACE = "default"
@RegisterForReflection
@JsonDeserialize
class FileSystemResourceSet: ResourceSet {
class FileSystemResourceSet: ResourceSet, KubernetesResource {
lateinit var path: String
lateinit var files: List<String>
private val parser = YamlParserFromFile()
private val namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
private val loader = K8sResourceLoaderFromFile(DefaultKubernetesClient().inNamespace(namespace))
override fun getResourceSet(): List<Pair<String, KubernetesResource>> {
......@@ -42,6 +41,10 @@ class FileSystemResourceSet: ResourceSet {
}
private fun loadSingleResource(resourceURL: String): Pair<String, KubernetesResource> {
val parser = YamlParserFromFile()
val namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
val loader = K8sResourceLoaderFromFile(DefaultKubernetesClient().inNamespace(namespace))
val resourcePath = "$path/$resourceURL"
val kind = parser.parse(resourcePath, HashMap<String, String>()::class.java)?.get("kind")!!
val k8sResource = loader.loadK8sResource(kind, resourcePath)
......
package theodolite.benchmark
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import io.fabric8.kubernetes.api.model.KubernetesResource
import io.quarkus.runtime.annotations.RegisterForReflection
interface ResourceSet {
@RegisterForReflection
@JsonDeserialize
interface ResourceSet: KubernetesResource {
fun getResourceSet(): List<Pair<String, KubernetesResource>>
}
\ No newline at end of file
......@@ -13,16 +13,16 @@ import theodolite.util.DeploymentFailedException
@JsonInclude(JsonInclude.Include.NON_NULL)
class ResourceSets: KubernetesResource {
@JsonProperty("ConfigMapResourceSet")
val ConfigMapResourceSet: ConfigMapResourceSet? = null
lateinit var ConfigMapResourceSet: ConfigMapResourceSet
@JsonProperty("FileSystemResourceSet")
val FileSystemResourceSet: FileSystemResourceSet? = null
lateinit var FileSystemResourceSet: FileSystemResourceSet
fun loadResourceSet(): List<Pair<String, KubernetesResource>> {
return try {
if (ConfigMapResourceSet != null) {
if (::ConfigMapResourceSet.isInitialized) {
ConfigMapResourceSet.getResourceSet()
} else if (FileSystemResourceSet != null) {
} else if (::FileSystemResourceSet.isInitialized) {
FileSystemResourceSet.getResourceSet()
} else {
throw DeploymentFailedException("could not load resourceSet.")
......@@ -30,6 +30,5 @@ class ResourceSets: KubernetesResource {
} catch (e: Exception) {
throw e
}
}
}
\ 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