Skip to content

Commit d869f5d

Browse files
author
Mike Hummel
committed
feat: show different types of pods in node grid
1 parent 80cd461 commit d869f5d

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

kt2l-core/src/main/java/de/mhus/kt2l/resources/node/NodeGrid.java

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ protected Class<Resource> getManagedResourceItemClass() {
149149
@Override
150150
protected void createGridColumnsAfterName(Grid<Resource> resourcesGrid) {
151151
resourcesGrid.addColumn(NodeGrid.Resource::getPods).setHeader("Pods").setSortProperty("pods");
152+
resourcesGrid.addColumn(NodeGrid.Resource::getDaemonPods).setHeader("D").setSortProperty("daemonPods").setTooltipGenerator(r -> "Daemon Pods");
153+
resourcesGrid.addColumn(NodeGrid.Resource::getPendingPods).setHeader("P").setSortProperty("pendingPods").setTooltipGenerator(r -> "Pending Pods");
154+
resourcesGrid.addColumn(NodeGrid.Resource::getRunningPods).setHeader("R").setSortProperty("runningPods").setTooltipGenerator(r -> "Running Pods");
155+
resourcesGrid.addColumn(NodeGrid.Resource::getTerminatingPods).setHeader("T").setSortProperty("terminatingPods").setTooltipGenerator(r -> "Terminating Pods");
152156
if (cluster.isMetricsEnabled()) {
153157
resourcesGrid.addColumn(Resource::getMetricCpuString).setHeader("CPU").setSortProperty("cpu");
154158
resourcesGrid.addColumn(res -> res.getMetricCpuPercentage() < 0 ? "" : res.getMetricCpuPercentage()).setHeader("CPU%").setSortProperty("cpu%");
@@ -193,6 +197,30 @@ protected int sortColumn(String sorted, SortDirection direction, Resource a, Res
193197
case DESCENDING -> Long.compare(b.getPods(), a.getPods());
194198
};
195199
}
200+
if ("daemonPods".equals(sorted)) {
201+
return switch (direction) {
202+
case ASCENDING -> Long.compare(a.getDaemonPods(), b.getDaemonPods());
203+
case DESCENDING -> Long.compare(b.getDaemonPods(), a.getDaemonPods());
204+
};
205+
}
206+
if ("pendingPods".equals(sorted)) {
207+
return switch (direction) {
208+
case ASCENDING -> Long.compare(a.getPendingPods(), b.getPendingPods());
209+
case DESCENDING -> Long.compare(b.getPendingPods(), a.getPendingPods());
210+
};
211+
}
212+
if ("runningPods".equals(sorted)) {
213+
return switch (direction) {
214+
case ASCENDING -> Long.compare(a.getRunningPods(), b.getRunningPods());
215+
case DESCENDING -> Long.compare(b.getRunningPods(), a.getRunningPods());
216+
};
217+
}
218+
if ("terminatingPods".equals(sorted)) {
219+
return switch (direction) {
220+
case ASCENDING -> Long.compare(a.getTerminatingPods(), b.getTerminatingPods());
221+
case DESCENDING -> Long.compare(b.getTerminatingPods(), a.getTerminatingPods());
222+
};
223+
}
196224
return 0;
197225
}
198226

@@ -259,6 +287,10 @@ public static class Resource extends AbstractGridWithoutNamespace.ResourceItem<V
259287
private String ip;
260288
private String version;
261289
private long pods;
290+
private long daemonPods;
291+
private long pendingPods;
292+
private long runningPods;
293+
private long terminatingPods;
262294
private double metricCpu = Double.MAX_VALUE;
263295
private long metricMemory = Long.MAX_VALUE;
264296
private String metricCpuString = "-";
@@ -291,7 +323,31 @@ public void updateResource() {
291323
}
292324

293325
public void updatePods() {
294-
this.pods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p -> Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())).count()).orElse(-1L);
326+
this.pods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p ->
327+
Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())
328+
).count()).orElse(-1L);
329+
this.daemonPods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p ->
330+
Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())
331+
&&
332+
p.getMetadata().getOwnerReferences().stream().filter(r -> r.getKind().equals("DaemonSet")).findFirst().isPresent()
333+
).count()).orElse(-1L);
334+
this.pendingPods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p ->
335+
Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())
336+
&&
337+
"xxx".equals(p.getStatus().getPhase()) // XXX
338+
).count()).orElse(-1L);
339+
this.runningPods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p ->
340+
Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())
341+
&&
342+
"Running".equals(p.getStatus().getPhase())
343+
&&
344+
p.getMetadata().getDeletionTimestamp() == null
345+
).count()).orElse(-1L);
346+
this.terminatingPods = tryThis(() -> ((NodeGrid) getGrid()).podMap.values().stream().filter(p ->
347+
Objects.equals(p.getSpec().getNodeName(), resource.getMetadata().getName())
348+
&&
349+
p.getMetadata().getDeletionTimestamp() != null
350+
).count()).orElse(-1L);
295351
}
296352

297353
public synchronized boolean setMetrics(NodeMetrics metric) {

0 commit comments

Comments
 (0)