63 lines
1.7 KiB
Java
63 lines
1.7 KiB
Java
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;
|
|
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
|
|
import io.quarkus.runtime.Startup;
|
|
import io.quarkus.security.Authenticated;
|
|
import jakarta.annotation.PostConstruct;
|
|
import jakarta.annotation.security.RolesAllowed;
|
|
import jakarta.enterprise.context.ApplicationScoped;
|
|
import jakarta.inject.Inject;
|
|
import jakarta.ws.rs.*;
|
|
import jakarta.ws.rs.core.MediaType;
|
|
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
@Path("/pods")
|
|
@Startup
|
|
@ApplicationScoped
|
|
@Authenticated
|
|
public class PodResource
|
|
{
|
|
@Inject
|
|
ClientProvider clientProvider;
|
|
|
|
@Inject
|
|
PodService podService;
|
|
|
|
@GET
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public List<Pod> getPods(@QueryParam("namespace") String namespace)
|
|
{
|
|
if(namespace != null && !namespace.isBlank())
|
|
{
|
|
return podService.findByNamespace(namespace);
|
|
}
|
|
return podService.findAll();
|
|
}
|
|
|
|
@DELETE
|
|
@Produces
|
|
@Consumes
|
|
@Path("/{pod-id}")
|
|
@RolesAllowed({"admin", "maintainer"})
|
|
public void deletePod(@PathParam("pod-id") String id)
|
|
{
|
|
Optional<Pod> podOptional = podService.findPodById(id);
|
|
if(podOptional.isPresent())
|
|
{
|
|
Pod pod = podOptional.get();
|
|
clientProvider.getClient()
|
|
.pods()
|
|
.inNamespace(pod.getMetadata().getNamespace())
|
|
.withName(pod.getMetadata().getName())
|
|
.delete();
|
|
}
|
|
}
|
|
}
|