⚡️ Code Improvements
This commit is contained in:
parent
a6b31b8ca5
commit
2a09bdddd2
@ -1,17 +1,16 @@
|
|||||||
package dev.dinauer;
|
package dev.dinauer;
|
||||||
|
|
||||||
import dev.dinauer.service.DeploymentService;
|
import java.util.List;
|
||||||
import dev.dinauer.service.NodeService;
|
|
||||||
import dev.dinauer.service.PodService;
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
|
||||||
import io.fabric8.kubernetes.api.model.apps.Deployment;
|
|
||||||
import io.quarkus.security.Authenticated;
|
|
||||||
import jakarta.annotation.security.RolesAllowed;
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.*;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
|
|
||||||
import java.util.List;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
import io.quarkus.security.Authenticated;
|
||||||
|
|
||||||
|
import dev.dinauer.service.DeploymentService;
|
||||||
|
import dev.dinauer.service.PodService;
|
||||||
|
|
||||||
@Path("/resources/deployments")
|
@Path("/resources/deployments")
|
||||||
@Authenticated
|
@Authenticated
|
||||||
|
|||||||
@ -2,12 +2,12 @@ package dev.dinauer;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import dev.dinauer.inspect.websocket.ResourceType;
|
|
||||||
import jakarta.annotation.security.RolesAllowed;
|
import jakarta.annotation.security.RolesAllowed;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.*;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
|
|
||||||
|
import dev.dinauer.inspect.websocket.ResourceType;
|
||||||
import dev.dinauer.service.*;
|
import dev.dinauer.service.*;
|
||||||
|
|
||||||
@Path("/resources/nodes")
|
@Path("/resources/nodes")
|
||||||
|
|||||||
@ -2,19 +2,17 @@ package dev.dinauer;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import dev.dinauer.inspect.env.EnvVar;
|
|
||||||
import dev.dinauer.inspect.env.EnvironmentVariableService;
|
|
||||||
import dev.dinauer.utils.ProcessRunner;
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
|
||||||
import io.quarkus.security.Authenticated;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.*;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
|
|
||||||
import io.quarkus.runtime.Startup;
|
import io.quarkus.runtime.Startup;
|
||||||
|
import io.quarkus.security.Authenticated;
|
||||||
import io.smallrye.common.annotation.Blocking;
|
import io.smallrye.common.annotation.Blocking;
|
||||||
|
|
||||||
|
import dev.dinauer.inspect.env.EnvVar;
|
||||||
|
import dev.dinauer.inspect.env.EnvironmentVariableService;
|
||||||
import dev.dinauer.service.PodService;
|
import dev.dinauer.service.PodService;
|
||||||
|
|
||||||
@Path("/pods")
|
@Path("/pods")
|
||||||
|
|||||||
@ -1,13 +1,15 @@
|
|||||||
package dev.dinauer.inspect.env;
|
package dev.dinauer.inspect.env;
|
||||||
|
|
||||||
import dev.dinauer.utils.ProcessRunner;
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
|
||||||
import jakarta.inject.Inject;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
|
||||||
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
|
||||||
|
import dev.dinauer.utils.ProcessRunner;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class EnvironmentVariableService
|
public class EnvironmentVariableService
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,13 +1,10 @@
|
|||||||
package dev.dinauer.inspect.log;
|
package dev.dinauer.inspect.log;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import java.io.IOException;
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
import java.time.LocalDateTime;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import java.time.format.DateTimeFormatter;
|
||||||
import dev.dinauer.service.PodService;
|
import java.util.*;
|
||||||
import dev.dinauer.utils.ClientProvider;
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
|
||||||
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
|
||||||
import io.fabric8.kubernetes.client.dsl.PodResource;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.websocket.OnClose;
|
import jakarta.websocket.OnClose;
|
||||||
@ -15,26 +12,29 @@ import jakarta.websocket.OnOpen;
|
|||||||
import jakarta.websocket.Session;
|
import jakarta.websocket.Session;
|
||||||
import jakarta.websocket.server.PathParam;
|
import jakarta.websocket.server.PathParam;
|
||||||
import jakarta.websocket.server.ServerEndpoint;
|
import jakarta.websocket.server.ServerEndpoint;
|
||||||
import org.eclipse.microprofile.context.ManagedExecutor;
|
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import java.io.IOException;
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import java.io.InputStreamReader;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
import java.util.ArrayList;
|
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
||||||
import java.util.HashMap;
|
import io.fabric8.kubernetes.client.dsl.PodResource;
|
||||||
import java.util.List;
|
import io.smallrye.mutiny.Uni;
|
||||||
import java.util.Map;
|
import io.smallrye.mutiny.infrastructure.Infrastructure;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
import dev.dinauer.inspect.log.model.KubernetesLog;
|
||||||
|
import dev.dinauer.service.PodService;
|
||||||
|
import dev.dinauer.utils.ClientProvider;
|
||||||
|
|
||||||
@ServerEndpoint("/logs/deployments/{namespace}/{name}")
|
@ServerEndpoint("/logs/deployments/{namespace}/{name}")
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class DeploymentLogWebsocket
|
public class DeploymentLogWebsocket
|
||||||
{
|
{
|
||||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().registerModule(new JavaTimeModule()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().registerModule(new JavaTimeModule()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||||
private final Map<Session, LogWatch> sessions = new HashMap<>();
|
private final Map<Session, List<LogWatch>> sessions = new HashMap<>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Logger LOG;
|
Logger LOG;
|
||||||
@ -42,16 +42,13 @@ public class DeploymentLogWebsocket
|
|||||||
@Inject
|
@Inject
|
||||||
ClientProvider clientProvider;
|
ClientProvider clientProvider;
|
||||||
|
|
||||||
@Inject
|
|
||||||
ManagedExecutor executor;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
PodService podService;
|
PodService podService;
|
||||||
|
|
||||||
@OnOpen
|
@OnOpen
|
||||||
public void onOpen(Session session, @PathParam("namespace") String namespace, @PathParam("name") String name)
|
public void onOpen(Session session, @PathParam("namespace") String namespace, @PathParam("name") String name)
|
||||||
{
|
{
|
||||||
executor.submit(() -> {
|
Uni.createFrom().voidItem().invoke(() -> {
|
||||||
List<Pod> pods = podService.findByDeployment(namespace, name);
|
List<Pod> pods = podService.findByDeployment(namespace, name);
|
||||||
List<KubernetesLog> existingLogs = new ArrayList<>();
|
List<KubernetesLog> existingLogs = new ArrayList<>();
|
||||||
for (Pod pod : pods)
|
for (Pod pod : pods)
|
||||||
@ -61,37 +58,27 @@ public class DeploymentLogWebsocket
|
|||||||
}
|
}
|
||||||
send(session, existingLogs.stream().sorted(KubernetesLog::orderByTimestamp).toList());
|
send(session, existingLogs.stream().sorted(KubernetesLog::orderByTimestamp).toList());
|
||||||
|
|
||||||
|
sessions.put(session, new LinkedList<>());
|
||||||
for (Pod pod : pods)
|
for (Pod pod : pods)
|
||||||
{
|
{
|
||||||
CompletableFuture.runAsync(() -> {
|
PodResource resource = clientProvider.getClient().pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName());
|
||||||
LogWatch watch = clientProvider.getClient().pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName()).usingTimestamps().tailingLines(0).watchLog();
|
sessions.get(session).add(podService.watchLogs(resource, (log) -> {
|
||||||
sessions.put(session, watch);
|
send(session, log);
|
||||||
|
}));
|
||||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(watch.getOutput())))
|
|
||||||
{
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null && !Thread.currentThread().isInterrupted())
|
|
||||||
{
|
|
||||||
send(session, toLog(List.of(line), pod.getMetadata().getName()));
|
|
||||||
}
|
|
||||||
LOG.info("Ended");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOG.errorf("Error reading output of log watch: %s", e.getMessage());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
}).runSubscriptionOn(Infrastructure.getDefaultWorkerPool()).subscribe().with(result -> {}, error -> {});
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnClose
|
@OnClose
|
||||||
public void onClose(Session session) throws IOException
|
public void onClose(Session session) throws IOException
|
||||||
{
|
{
|
||||||
LogWatch watch = sessions.remove(session);
|
List<LogWatch> watches = sessions.remove(session);
|
||||||
if (watch != null)
|
if (watches != null)
|
||||||
{
|
{
|
||||||
watch.close();
|
for (LogWatch watch : watches)
|
||||||
|
{
|
||||||
|
watch.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
session.close();
|
session.close();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,10 @@
|
|||||||
package dev.dinauer.inspect.log;
|
package dev.dinauer.inspect.log;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import dev.dinauer.inspect.utils.InputStreamWatcher;
|
|
||||||
import dev.dinauer.service.PodService;
|
|
||||||
import io.fabric8.kubernetes.client.dsl.PodResource;
|
|
||||||
import io.smallrye.mutiny.Uni;
|
|
||||||
import io.smallrye.mutiny.infrastructure.Infrastructure;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.websocket.OnClose;
|
import jakarta.websocket.OnClose;
|
||||||
@ -27,7 +20,12 @@ import com.fasterxml.jackson.databind.SerializationFeature;
|
|||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
|
|
||||||
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
||||||
|
import io.fabric8.kubernetes.client.dsl.PodResource;
|
||||||
|
import io.smallrye.mutiny.Uni;
|
||||||
|
import io.smallrye.mutiny.infrastructure.Infrastructure;
|
||||||
|
|
||||||
|
import dev.dinauer.inspect.log.model.KubernetesLog;
|
||||||
|
import dev.dinauer.service.PodService;
|
||||||
import dev.dinauer.utils.ClientProvider;
|
import dev.dinauer.utils.ClientProvider;
|
||||||
|
|
||||||
@ServerEndpoint("/logs/pods/{namespace}/{name}")
|
@ServerEndpoint("/logs/pods/{namespace}/{name}")
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package dev.dinauer.inspect.log;
|
package dev.dinauer.inspect.log.model;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
@ -1,12 +1,12 @@
|
|||||||
package dev.dinauer.inspect.utils;
|
package dev.dinauer.inspect.utils;
|
||||||
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
public class InputStreamWatcher
|
public class InputStreamWatcher
|
||||||
{
|
{
|
||||||
private static final Logger LOG = Logger.getLogger(InputStreamWatcher.class);
|
private static final Logger LOG = Logger.getLogger(InputStreamWatcher.class);
|
||||||
|
|||||||
@ -48,6 +48,10 @@ public class MonitoringJobRunner
|
|||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
if (true)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<MonitoringConfig> configs = monitoringRepo.listAll();
|
List<MonitoringConfig> configs = monitoringRepo.listAll();
|
||||||
for (MonitoringConfig config : configs)
|
for (MonitoringConfig config : configs)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,13 +8,13 @@ import jakarta.inject.Inject;
|
|||||||
import io.fabric8.kubernetes.api.model.Node;
|
import io.fabric8.kubernetes.api.model.Node;
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
|
||||||
import dev.dinauer.utils.ProcessRunner;
|
|
||||||
import dev.dinauer.monitoring.nodes.MonitoredNode;
|
import dev.dinauer.monitoring.nodes.MonitoredNode;
|
||||||
import dev.dinauer.monitoring.nodes.NodeMetrics;
|
import dev.dinauer.monitoring.nodes.NodeMetrics;
|
||||||
import dev.dinauer.monitoring.nodes.client.NodeDiskMetrics;
|
import dev.dinauer.monitoring.nodes.client.NodeDiskMetrics;
|
||||||
import dev.dinauer.monitoring.nodes.client.NodeDiskService;
|
import dev.dinauer.monitoring.nodes.client.NodeDiskService;
|
||||||
import dev.dinauer.service.PodService;
|
import dev.dinauer.service.PodService;
|
||||||
import dev.dinauer.utils.ClientProvider;
|
import dev.dinauer.utils.ClientProvider;
|
||||||
|
import dev.dinauer.utils.ProcessRunner;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class TopNodesService
|
public class TopNodesService
|
||||||
|
|||||||
@ -9,11 +9,11 @@ import jakarta.inject.Inject;
|
|||||||
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
|
||||||
import dev.dinauer.utils.ProcessRunner;
|
|
||||||
import dev.dinauer.monitoring.MonitoringService;
|
import dev.dinauer.monitoring.MonitoringService;
|
||||||
import dev.dinauer.monitoring.entity.MonitoringConfig;
|
import dev.dinauer.monitoring.entity.MonitoringConfig;
|
||||||
import dev.dinauer.monitoring.entity.MonitoringType;
|
import dev.dinauer.monitoring.entity.MonitoringType;
|
||||||
import dev.dinauer.monitoring.indexing.BigBucketService;
|
import dev.dinauer.monitoring.indexing.BigBucketService;
|
||||||
|
import dev.dinauer.utils.ProcessRunner;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class MemoryMonitoringJobRunner
|
public class MemoryMonitoringJobRunner
|
||||||
|
|||||||
@ -15,11 +15,11 @@ import org.jboss.logging.Logger;
|
|||||||
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
|
||||||
import dev.dinauer.utils.ProcessRunner;
|
|
||||||
import dev.dinauer.monitoring.MonitoringService;
|
import dev.dinauer.monitoring.MonitoringService;
|
||||||
import dev.dinauer.monitoring.entity.MonitoringConfig;
|
import dev.dinauer.monitoring.entity.MonitoringConfig;
|
||||||
import dev.dinauer.monitoring.entity.MonitoringType;
|
import dev.dinauer.monitoring.entity.MonitoringType;
|
||||||
import dev.dinauer.monitoring.indexing.BigBucketService;
|
import dev.dinauer.monitoring.indexing.BigBucketService;
|
||||||
|
import dev.dinauer.utils.ProcessRunner;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class VolumeMonitoringJobRunner
|
public class VolumeMonitoringJobRunner
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package dev.dinauer.monitoring.volume;
|
package dev.dinauer.monitoring.volume;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
package dev.dinauer.service;
|
package dev.dinauer.service;
|
||||||
|
|
||||||
import dev.dinauer.inspect.log.KubernetesLog;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
|
||||||
import jakarta.inject.Inject;
|
|
||||||
import org.jboss.logging.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
|
||||||
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
|
import dev.dinauer.inspect.log.model.KubernetesLog;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class LogParser
|
public class LogParser
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,20 +6,21 @@ import java.util.Map;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import dev.dinauer.inspect.log.KubernetesLog;
|
|
||||||
import dev.dinauer.inspect.utils.InputStreamWatcher;
|
|
||||||
import io.fabric8.kubernetes.api.model.apps.Deployment;
|
|
||||||
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
|
||||||
import io.fabric8.kubernetes.client.dsl.PodResource;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
|
||||||
import io.fabric8.kubernetes.api.model.Pod;
|
import io.fabric8.kubernetes.api.model.Pod;
|
||||||
|
import io.fabric8.kubernetes.api.model.apps.Deployment;
|
||||||
import io.fabric8.kubernetes.api.model.apps.StatefulSet;
|
import io.fabric8.kubernetes.api.model.apps.StatefulSet;
|
||||||
import io.fabric8.kubernetes.client.Watch;
|
import io.fabric8.kubernetes.client.Watch;
|
||||||
import io.fabric8.kubernetes.client.Watcher;
|
import io.fabric8.kubernetes.client.Watcher;
|
||||||
import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL;
|
import io.fabric8.kubernetes.client.dsl.AppsAPIGroupDSL;
|
||||||
|
import io.fabric8.kubernetes.client.dsl.LogWatch;
|
||||||
|
import io.fabric8.kubernetes.client.dsl.PodResource;
|
||||||
|
import io.smallrye.mutiny.Uni;
|
||||||
|
|
||||||
|
import dev.dinauer.inspect.log.model.KubernetesLog;
|
||||||
|
import dev.dinauer.inspect.utils.InputStreamWatcher;
|
||||||
import dev.dinauer.utils.ClientProvider;
|
import dev.dinauer.utils.ClientProvider;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
@ -139,7 +140,13 @@ public class PodService implements ResourceService<Pod>
|
|||||||
public LogWatch watchLogs(PodResource resource, Consumer<List<KubernetesLog>> consume)
|
public LogWatch watchLogs(PodResource resource, Consumer<List<KubernetesLog>> consume)
|
||||||
{
|
{
|
||||||
LogWatch watch = resource.usingTimestamps().tailingLines(0).watchLog();
|
LogWatch watch = resource.usingTimestamps().tailingLines(0).watchLog();
|
||||||
InputStreamWatcher.watch(watch.getOutput(), line -> consume.accept(logParser.toLog(line, resource.get().getMetadata().getName())));
|
Uni.createFrom()
|
||||||
|
.voidItem()
|
||||||
|
.invoke(() -> {
|
||||||
|
InputStreamWatcher.watch(watch.getOutput(), line -> consume.accept(logParser.toLog(line, resource.get().getMetadata().getName())));
|
||||||
|
})
|
||||||
|
.subscribe()
|
||||||
|
.with(result -> {}, error -> {});
|
||||||
return watch;
|
return watch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user