diff --git a/theodolite/build.gradle b/theodolite/build.gradle index c01f261c7bd3c9e9b62bc7efeb93c492c499ab07..37f5b3f3969f14005e4ea65f39f1bc328bdc83d5 100644 --- a/theodolite/build.gradle +++ b/theodolite/build.gradle @@ -69,7 +69,7 @@ compileTestKotlin { } test { - // systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager" + systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager" // Required because of https://github.com/quarkusio/quarkus/issues/18973 minHeapSize = "512m" diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt deleted file mode 100644 index cbd7c3106b39c4571d559d4071cd4ac16e180bc8..0000000000000000000000000000000000000000 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt +++ /dev/null @@ -1,34 +0,0 @@ -package rocks.theodolite.kubernetes - -import io.fabric8.kubernetes.client.DefaultKubernetesClient -import io.fabric8.kubernetes.client.NamespacedKubernetesClient -import io.quarkus.runtime.annotations.QuarkusMain -import mu.KotlinLogging -import rocks.theodolite.kubernetes.operator.TheodoliteOperator -import rocks.theodolite.kubernetes.standalone.TheodoliteStandalone -import kotlin.system.exitProcess - -private val logger = KotlinLogging.logger {} - -@QuarkusMain -object Main { - - @JvmStatic - fun main(args: Array<String>) { - - val mode = Configuration.EXECUTION_MODE - logger.info { "Start Theodolite with mode $mode" } - - val namespace = Configuration.NAMESPACE - val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace) - - when (mode.lowercase()) { - ExecutionModes.STANDALONE.value -> TheodoliteStandalone(client).start() - ExecutionModes.OPERATOR.value -> TheodoliteOperator(client).start() - else -> { - logger.error { "MODE $mode not found" } - exitProcess(1) - } - } - } -} diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt new file mode 100644 index 0000000000000000000000000000000000000000..0da3123137a74730fb6beb2cc458958ab19e783a --- /dev/null +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt @@ -0,0 +1,65 @@ +package rocks.theodolite.kubernetes + +import io.fabric8.kubernetes.client.DefaultKubernetesClient +import io.fabric8.kubernetes.client.NamespacedKubernetesClient +import io.quarkus.runtime.LaunchMode +import io.quarkus.runtime.Quarkus +import io.quarkus.runtime.ShutdownEvent +import io.quarkus.runtime.StartupEvent +import io.quarkus.runtime.annotations.QuarkusMain +import jakarta.enterprise.context.ApplicationScoped +import jakarta.enterprise.event.Observes +import jakarta.inject.Inject +import mu.KotlinLogging +import rocks.theodolite.kubernetes.operator.TheodoliteOperator +import rocks.theodolite.kubernetes.standalone.TheodoliteStandalone + +private val LOGGER = KotlinLogging.logger {} + +@QuarkusMain +object Theodolite { + + @JvmStatic + fun main(args: Array<String>) { + Quarkus.run() + } + + @ApplicationScoped + class AppEventListener { + + @Inject + private lateinit var launchMode: LaunchMode + + fun onStart(@Observes ev: StartupEvent) { + if (launchMode == LaunchMode.TEST) { + LOGGER.warn("Theodolite does not automatically start in TEST mode.") + } else { + val mode = Configuration.EXECUTION_MODE + LOGGER.info { "Start Theodolite in $mode mode." } + + val namespace = Configuration.NAMESPACE + //val client = KubernetesClientBuilder().withConfig(ConfigBuilder().withNamespace(namespace).build())) + val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace) + + when (mode.lowercase()) { + ExecutionModes.STANDALONE.value -> TheodoliteStandalone(client).start() + ExecutionModes.OPERATOR.value -> TheodoliteOperator(client).start() + else -> { + LOGGER.error { "MODE $mode not found" } + Quarkus.asyncExit() + } + } + } + } + + fun onStop(@Observes ev: ShutdownEvent) { + if (launchMode == LaunchMode.TEST) { + LOGGER.warn("Theodolite did not automatically start in TEST mode.") + } else { + LOGGER.info("Quit Theodolite.") + } + } + + } + +}