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

Integrate with Quarkus application lifecycle

parent 2f7d2767
No related branches found
No related tags found
No related merge requests found
Pipeline #12994 failed
......@@ -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"
......
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)
}
}
}
}
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.")
}
}
}
}
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