diff --git "a/C:\\Users\\andre\\Documents\\dev\\kubeman\\backend\\src\\main\\resources\\dev/users/admin.json" "b/C:\\Users\\andre\\Documents\\dev\\kubeman\\backend\\src\\main\\resources\\dev/users/admin.json" new file mode 100644 index 0000000..9f8a603 --- /dev/null +++ "b/C:\\Users\\andre\\Documents\\dev\\kubeman\\backend\\src\\main\\resources\\dev/users/admin.json" @@ -0,0 +1 @@ +{"username":"admin","email":null,"roles":["admin"],"password":"$2a$10$lfghA6B2SUzivNp.NXkKD.um81qOFwzaNm.R/rCiAWSm3cmw5H72y","initial":true} \ No newline at end of file diff --git a/src/main/java/dev/dinauer/monitoring/TopNodesService.java b/src/main/java/dev/dinauer/monitoring/TopNodesService.java index 32101fc..d59c924 100644 --- a/src/main/java/dev/dinauer/monitoring/TopNodesService.java +++ b/src/main/java/dev/dinauer/monitoring/TopNodesService.java @@ -2,8 +2,10 @@ package dev.dinauer.monitoring; import dev.dinauer.ProcessRunner; import dev.dinauer.monitoring.nodes.NodeStats; +import dev.dinauer.service.PodService; import dev.dinauer.utils.ClientProvider; import io.fabric8.kubernetes.api.model.Node; +import io.fabric8.kubernetes.api.model.Pod; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @@ -18,6 +20,8 @@ public class TopNodesService @Inject ProcessRunner processRunner; + @Inject + PodService podService; public List findAll() { @@ -37,12 +41,26 @@ public class TopNodesService Integer relativeCpu = extractInteger(parts[2]); Integer absoluteMemory = extractMemory(parts[3]); Integer relativeMemory = extractInteger(parts[4]); - result.add(new NodeStats(node, absoluteCpu, relativeCpu, Integer.parseInt(node.getStatus().getAllocatable().get("cpu").getAmount()) * 1000, absoluteMemory, relativeMemory, extractMemory(node.getStatus().getAllocatable().get("memory").getAmount()))); + result.add(new NodeStats(node, absoluteCpu, relativeCpu, Integer.parseInt(node.getStatus().getAllocatable().get("cpu").getAmount()) * 1000, absoluteMemory, relativeMemory, extractMemory(node.getStatus().getAllocatable().get("memory").getAmount()), countPods(node.getMetadata().getName()))); } } return result; } + private int countPods(String nodeName) + { + List pods = podService.findAll(); + int count = 0; + for (Pod pod : pods) + { + if (pod.getSpec().getNodeName().equals(nodeName)) + { + count++; + } + } + return count; + } + private List runTopNodesCommand() { String command = String.format("kubectl --kubeconfig=%s top nodes --no-headers", clientProvider.pathToKubeconfig()); diff --git a/src/main/java/dev/dinauer/monitoring/nodes/NodeStats.java b/src/main/java/dev/dinauer/monitoring/nodes/NodeStats.java index 43e6413..d494d96 100644 --- a/src/main/java/dev/dinauer/monitoring/nodes/NodeStats.java +++ b/src/main/java/dev/dinauer/monitoring/nodes/NodeStats.java @@ -2,6 +2,6 @@ package dev.dinauer.monitoring.nodes; import io.fabric8.kubernetes.api.model.Node; -public record NodeStats(Node node, Integer absoluteCpuUsage, Integer relativeCpuUsage, Integer totalCpu, Integer absoluteMemory, Integer relativeMemory, Integer totalMemory) +public record NodeStats(Node node, Integer absoluteCpuUsage, Integer relativeCpuUsage, Integer totalCpu, Integer absoluteMemory, Integer relativeMemory, Integer totalMemory, Integer runningPods) { } \ No newline at end of file