66 lines
1.8 KiB
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);
|
|
}
|
|
}
|