@@ -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