diff --git a/src/main/java/dev/dinauer/IngressResource.java b/src/main/java/dev/dinauer/IngressResource.java index ebf1df0..c99dcaf 100644 --- a/src/main/java/dev/dinauer/IngressResource.java +++ b/src/main/java/dev/dinauer/IngressResource.java @@ -1,10 +1,12 @@ package dev.dinauer; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.quarkus.security.Authenticated; import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; @@ -17,13 +19,8 @@ import java.util.List; @Authenticated public class IngressResource { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } + @Inject + ClientProvider clientProvider; @GET @Produces(MediaType.APPLICATION_JSON) @@ -31,8 +28,8 @@ public class IngressResource { if(namespace != null) { - return client.network().v1().ingresses().inNamespace(namespace).list().getItems(); + return clientProvider.getClient().network().v1().ingresses().inNamespace(namespace).list().getItems(); } - return client.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 f328aba..8474cae 100644 --- a/src/main/java/dev/dinauer/LogResource.java +++ b/src/main/java/dev/dinauer/LogResource.java @@ -1,6 +1,7 @@ package dev.dinauer; import dev.dinauer.service.PodService; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; @@ -19,17 +20,12 @@ import java.util.Optional; @Authenticated public class LogResource { - private KubernetesClient client; + @Inject + ClientProvider clientProvider; @Inject PodService podService; - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } - @GET @Produces(MediaType.APPLICATION_JSON) public List getLogs(@PathParam("pod-id") String podId) @@ -38,7 +34,7 @@ public class LogResource if(podOptional.isPresent()) { Pod pod = podOptional.get(); - return List.of(client.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 029c544..c1ef097 100644 --- a/src/main/java/dev/dinauer/NamespaceResource.java +++ b/src/main/java/dev/dinauer/NamespaceResource.java @@ -1,11 +1,13 @@ package dev.dinauer; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.quarkus.security.Authenticated; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; @@ -18,18 +20,13 @@ import java.util.List; @Authenticated public class NamespaceResource { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } + @Inject + ClientProvider clientProvider; @GET @Produces(MediaType.APPLICATION_JSON) public List getNamespaces() { - return client.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 8e2b2f7..f7726ce 100644 --- a/src/main/java/dev/dinauer/NodeResource.java +++ b/src/main/java/dev/dinauer/NodeResource.java @@ -1,11 +1,13 @@ package dev.dinauer; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Node; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.quarkus.security.Authenticated; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; @@ -22,13 +24,8 @@ import java.util.List; @Authenticated public class NodeResource { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } + @Inject + ClientProvider clientProvider; @GET @Produces(MediaType.APPLICATION_JSON) @@ -43,7 +40,7 @@ public class NodeResource if(parts.length == 5) { String name = parts[0]; - Node node = client.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 6d9cf16..1b23a92 100644 --- a/src/main/java/dev/dinauer/PodResource.java +++ b/src/main/java/dev/dinauer/PodResource.java @@ -1,6 +1,7 @@ package dev.dinauer; import dev.dinauer.service.PodService; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.KubernetesClient; @@ -23,17 +24,12 @@ import java.util.Optional; @Authenticated public class PodResource { - private KubernetesClient client; + @Inject + ClientProvider clientProvider; @Inject PodService podService; - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } - @GET @Produces(MediaType.APPLICATION_JSON) public List getPods(@QueryParam("namespace") String namespace) @@ -56,7 +52,8 @@ public class PodResource if(podOptional.isPresent()) { Pod pod = podOptional.get(); - client.pods() + clientProvider.getClient() + .pods() .inNamespace(pod.getMetadata().getNamespace()) .withName(pod.getMetadata().getName()) .delete(); diff --git a/src/main/java/dev/dinauer/ServiceResource.java b/src/main/java/dev/dinauer/ServiceResource.java index cb15957..44b0460 100644 --- a/src/main/java/dev/dinauer/ServiceResource.java +++ b/src/main/java/dev/dinauer/ServiceResource.java @@ -1,5 +1,6 @@ package dev.dinauer; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.Service; import io.fabric8.kubernetes.client.KubernetesClient; @@ -8,6 +9,7 @@ import io.quarkus.runtime.Startup; import io.quarkus.security.Authenticated; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; @@ -23,13 +25,8 @@ import java.util.Optional; @Authenticated public class ServiceResource { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } + @Inject + ClientProvider clientProvider; @GET @Produces(MediaType.APPLICATION_JSON) @@ -37,8 +34,8 @@ public class ServiceResource { if(namespace.isPresent()) { - return client.services().inNamespace(namespace.get()).list().getItems(); + return clientProvider.getClient().services().inNamespace(namespace.get()).list().getItems(); } - return client.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 5246c8c..ce2cfcf 100644 --- a/src/main/java/dev/dinauer/service/PodService.java +++ b/src/main/java/dev/dinauer/service/PodService.java @@ -1,10 +1,12 @@ package dev.dinauer.service; +import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.util.List; import java.util.Optional; @@ -12,27 +14,22 @@ import java.util.Optional; @ApplicationScoped public class PodService { - private KubernetesClient client; - - @PostConstruct - void init() - { - client = new KubernetesClientBuilder().build(); - } + @Inject + ClientProvider clientProvider; public List findByNamespace(String namespace) { - return client.pods().inNamespace(namespace).list().getItems(); + return clientProvider.getClient().pods().inNamespace(namespace).list().getItems(); } public List findAll() { - return client.pods().list().getItems(); + return clientProvider.getClient().pods().list().getItems(); } public Optional findPodById(String id) { - for(Pod pod : client.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/utils/ClientProvider.java b/src/main/java/dev/dinauer/utils/ClientProvider.java index 387fae7..a1a58b2 100644 --- a/src/main/java/dev/dinauer/utils/ClientProvider.java +++ b/src/main/java/dev/dinauer/utils/ClientProvider.java @@ -1,18 +1,21 @@ package dev.dinauer.utils; +import io.fabric8.kubernetes.client.Config; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; import jakarta.enterprise.context.ApplicationScoped; import org.eclipse.microprofile.config.inject.ConfigProperty; -import java.util.List; +import java.io.File; @ApplicationScoped public class ClientProvider { @ConfigProperty(name = "dev.dinauer.kobooboo.kubeconfigs.dir") - String configDir; + String configFilePath; - public void getClient() + public KubernetesClient getClient() { - + return new KubernetesClientBuilder().withConfig(Config.fromKubeconfig(new File(configFilePath))).build(); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 0a324c7..aa0b468 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,8 +3,9 @@ quarkus.http.root-path=/api %dev.quarkus.http.cors.origins=/.*/ %dev.quarkus.http.port=9090 -dev.dinauer.kobooboo.kubeconfigs.dir=/var/lib/kubooboo/configs +dev.dinauer.kobooboo.kubeconfigs.dir=/var/lib/kubooboo/config dev.dinauer.kubooboo.work.dir=/var/lib/kubooboo/work +%dev.dev.dinauer.kobooboo.kubeconfigs.dir=C:\\Users\\andre\\.kube\\config %dev.dev.dinauer.kubooboo.work.dir=C:\\Users\\andre\\Documents\\dev\\kubeman\\backend\\src\\main\\resources\\dev # Keys