From d8dcb462daa4c09a194ab886114140c035df3396 Mon Sep 17 00:00:00 2001 From: Andreas Dinauer Date: Fri, 6 Jun 2025 21:07:56 +0200 Subject: [PATCH] :alembic: Build client once --- .../java/dev/dinauer/IngressResource.java | 7 ++----- src/main/java/dev/dinauer/LogResource.java | 5 +---- .../java/dev/dinauer/NamespaceResource.java | 5 +---- src/main/java/dev/dinauer/NodeResource.java | 5 +---- src/main/java/dev/dinauer/PodResource.java | 5 +---- .../java/dev/dinauer/ServiceResource.java | 7 ++----- .../java/dev/dinauer/service/PodService.java | 9 +++------ .../dev/dinauer/service/ServiceService.java | 11 ++-------- .../dev/dinauer/utils/ClientProvider.java | 20 ++++++------------- .../dev/dinauer/utils/StartupService.java | 1 - 10 files changed, 19 insertions(+), 56 deletions(-) diff --git a/src/main/java/dev/dinauer/IngressResource.java b/src/main/java/dev/dinauer/IngressResource.java index c99dcaf..79feed8 100644 --- a/src/main/java/dev/dinauer/IngressResource.java +++ b/src/main/java/dev/dinauer/IngressResource.java @@ -19,17 +19,14 @@ import java.util.List; @Authenticated public class IngressResource { - @Inject - ClientProvider clientProvider; - @GET @Produces(MediaType.APPLICATION_JSON) public List getIngresses(@QueryParam("namespace") String namespace) { if(namespace != null) { - return clientProvider.getClient().network().v1().ingresses().inNamespace(namespace).list().getItems(); + return ClientProvider.getClient().network().v1().ingresses().inNamespace(namespace).list().getItems(); } - return clientProvider.getClient().network().v1().ingresses().list().getItems(); + return ClientProvider.getClient().network().v1().ingresses().list().getItems(); } } diff --git a/src/main/java/dev/dinauer/LogResource.java b/src/main/java/dev/dinauer/LogResource.java index 8474cae..2139ea6 100644 --- a/src/main/java/dev/dinauer/LogResource.java +++ b/src/main/java/dev/dinauer/LogResource.java @@ -20,9 +20,6 @@ import java.util.Optional; @Authenticated public class LogResource { - @Inject - ClientProvider clientProvider; - @Inject PodService podService; @@ -34,7 +31,7 @@ public class LogResource if(podOptional.isPresent()) { Pod pod = podOptional.get(); - return List.of(clientProvider.getClient().pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName()).getLog().split("\\r?\\n")); + return List.of(ClientProvider.getClient().pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName()).getLog().split("\\r?\\n")); } throw new NotFoundException(); } diff --git a/src/main/java/dev/dinauer/NamespaceResource.java b/src/main/java/dev/dinauer/NamespaceResource.java index c1ef097..7d1c1dc 100644 --- a/src/main/java/dev/dinauer/NamespaceResource.java +++ b/src/main/java/dev/dinauer/NamespaceResource.java @@ -20,13 +20,10 @@ import java.util.List; @Authenticated public class NamespaceResource { - @Inject - ClientProvider clientProvider; - @GET @Produces(MediaType.APPLICATION_JSON) public List getNamespaces() { - return clientProvider.getClient().namespaces().list().getItems(); + return ClientProvider.getClient().namespaces().list().getItems(); } } diff --git a/src/main/java/dev/dinauer/NodeResource.java b/src/main/java/dev/dinauer/NodeResource.java index f7726ce..31fc9da 100644 --- a/src/main/java/dev/dinauer/NodeResource.java +++ b/src/main/java/dev/dinauer/NodeResource.java @@ -24,9 +24,6 @@ import java.util.List; @Authenticated public class NodeResource { - @Inject - ClientProvider clientProvider; - @GET @Produces(MediaType.APPLICATION_JSON) public List getMonitoring() throws IOException, InterruptedException @@ -40,7 +37,7 @@ public class NodeResource if(parts.length == 5) { String name = parts[0]; - Node node = clientProvider.getClient().nodes().withName(name).get(); + Node node = ClientProvider.getClient().nodes().withName(name).get(); Integer absoluteCpu = extractInteger(parts[1]); Integer relativeCpu = extractInteger(parts[2]); Integer absoluteMemory = extractMemory(parts[3]); diff --git a/src/main/java/dev/dinauer/PodResource.java b/src/main/java/dev/dinauer/PodResource.java index 1b23a92..07196f1 100644 --- a/src/main/java/dev/dinauer/PodResource.java +++ b/src/main/java/dev/dinauer/PodResource.java @@ -24,9 +24,6 @@ import java.util.Optional; @Authenticated public class PodResource { - @Inject - ClientProvider clientProvider; - @Inject PodService podService; @@ -52,7 +49,7 @@ public class PodResource if(podOptional.isPresent()) { Pod pod = podOptional.get(); - clientProvider.getClient() + ClientProvider.getClient() .pods() .inNamespace(pod.getMetadata().getNamespace()) .withName(pod.getMetadata().getName()) diff --git a/src/main/java/dev/dinauer/ServiceResource.java b/src/main/java/dev/dinauer/ServiceResource.java index 44b0460..32907d9 100644 --- a/src/main/java/dev/dinauer/ServiceResource.java +++ b/src/main/java/dev/dinauer/ServiceResource.java @@ -25,17 +25,14 @@ import java.util.Optional; @Authenticated public class ServiceResource { - @Inject - ClientProvider clientProvider; - @GET @Produces(MediaType.APPLICATION_JSON) public List getServices(@QueryParam("namespace") Optional namespace) { if(namespace.isPresent()) { - return clientProvider.getClient().services().inNamespace(namespace.get()).list().getItems(); + return ClientProvider.getClient().services().inNamespace(namespace.get()).list().getItems(); } - return clientProvider.getClient().services().list().getItems(); + return ClientProvider.getClient().services().list().getItems(); } } diff --git a/src/main/java/dev/dinauer/service/PodService.java b/src/main/java/dev/dinauer/service/PodService.java index ce2cfcf..adc6fab 100644 --- a/src/main/java/dev/dinauer/service/PodService.java +++ b/src/main/java/dev/dinauer/service/PodService.java @@ -14,22 +14,19 @@ import java.util.Optional; @ApplicationScoped public class PodService { - @Inject - ClientProvider clientProvider; - public List findByNamespace(String namespace) { - return clientProvider.getClient().pods().inNamespace(namespace).list().getItems(); + return ClientProvider.getClient().pods().inNamespace(namespace).list().getItems(); } public List findAll() { - return clientProvider.getClient().pods().list().getItems(); + return ClientProvider.getClient().pods().list().getItems(); } public Optional findPodById(String id) { - for(Pod pod : clientProvider.getClient().pods().list().getItems()) + for(Pod pod : ClientProvider.getClient().pods().list().getItems()) { if(pod.getMetadata().getUid().equals(id)) { diff --git a/src/main/java/dev/dinauer/service/ServiceService.java b/src/main/java/dev/dinauer/service/ServiceService.java index cf57c56..3bb1a60 100644 --- a/src/main/java/dev/dinauer/service/ServiceService.java +++ b/src/main/java/dev/dinauer/service/ServiceService.java @@ -1,5 +1,6 @@ package dev.dinauer.service; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; @@ -11,17 +12,9 @@ import java.util.Optional; @ApplicationScoped public class ServiceService { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } - public Optional findById(String id) { - for(Service service : client.services().list().getItems()) + for(Service service : ClientProvider.getClient().services().list().getItems()) { if(service.getMetadata().getUid().equals(id)) { diff --git a/src/main/java/dev/dinauer/utils/ClientProvider.java b/src/main/java/dev/dinauer/utils/ClientProvider.java index 5540806..8d43331 100644 --- a/src/main/java/dev/dinauer/utils/ClientProvider.java +++ b/src/main/java/dev/dinauer/utils/ClientProvider.java @@ -3,28 +3,20 @@ package dev.dinauer.utils; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; +import io.vertx.mutiny.core.Vertx; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.config.inject.ConfigProperty; import java.io.File; -@ApplicationScoped public class ClientProvider { - @ConfigProperty(name = "dev.dinauer.kobooboo.kubeconfigs.dir") - String configFilePath; - - private KubernetesClient client; - - @PostConstruct - void init() + public static KubernetesClient getClient() { - client = new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(new File(configFilePath))).build(); - } - - public KubernetesClient getClient() - { - return client; + String configFilePath = ConfigProvider.getConfig().getValue("dev.dinauer.kobooboo.kubeconfigs.dir", String.class); + return new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(new File(configFilePath))).build(); } } diff --git a/src/main/java/dev/dinauer/utils/StartupService.java b/src/main/java/dev/dinauer/utils/StartupService.java index 707fec7..b8e901a 100644 --- a/src/main/java/dev/dinauer/utils/StartupService.java +++ b/src/main/java/dev/dinauer/utils/StartupService.java @@ -3,7 +3,6 @@ package dev.dinauer.utils; import dev.dinauer.login.User; import dev.dinauer.login.UserRepo; import io.quarkus.elytron.security.common.BcryptUtil; -import io.quarkus.runtime.Startup; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject;