backend/src/main/java/dev/dinauer/PodResource.java

66 lines
1.8 KiB
Java

package dev.dinauer;
import dev.dinauer.service.PodService;
import dev.dinauer.utils.ClientProvider;
import io.fabric8.kubernetes.api.model.Pod;
import io.quarkus.runtime.Startup;
import io.quarkus.security.Authenticated;
import io.smallrye.common.annotation.Blocking;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
@Path("/pods")
@Startup
@ApplicationScoped
public class PodResource
{
@Inject
PodService podService;
@Inject
ProcessRunner processRunner;
@Inject
ClientProvider clientProvider;
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes
@Blocking
@Path("/{namespace}/{name}/env")
public List<EnvVar> getEnv(@PathParam("namespace") String namespace, @PathParam("name") String name)
{
return getVars(podService.findByNameAndNamespace(name, namespace));
}
private List<EnvVar> getVars(Pod pod)
{
List<EnvVar> result = new ArrayList<>();
List<String> lines = processRunner.runToLines(String.format("kubectl exec -it %s -n %s -- env", pod.getMetadata().getName(), pod.getMetadata().getNamespace()));
for (String line : lines)
{
int indexOfFirstEquals = line.indexOf("=");
if (indexOfFirstEquals != -1)
{
result.add(new EnvVar(line.substring(0, indexOfFirstEquals), line.substring(indexOfFirstEquals + 1)));
}
}
return result;
}
@DELETE
@Path("/{namespace}/{name}")
public void delete(@PathParam("namespace") String namespace, @PathParam("name") String name)
{
podService.delete(name, namespace);
}
}