This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new f807080d880 CAMEL-18406: camel-jbang - Status command
f807080d880 is described below

commit f807080d880bb4d01b2687f4adbf33e3e83d880e
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Aug 24 16:10:19 2022 +0200

    CAMEL-18406: camel-jbang - Status command
---
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 17 ++++++++++++++
 .../core/commands/process/CamelContextStatus.java  | 26 +++++++++++++---------
 .../core/commands/process/CamelRouteStatus.java    | 16 ++++++-------
 3 files changed, 40 insertions(+), 19 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index a2057038835..fd3da1bfd6b 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -30,6 +30,7 @@ import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
@@ -52,6 +53,8 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.console.DevConsole;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.generator.openapi.RestDslGenerator;
+import org.apache.camel.health.HealthCheck;
+import org.apache.camel.health.HealthCheckHelper;
 import org.apache.camel.impl.lw.LightweightCamelContext;
 import org.apache.camel.main.KameletMain;
 import org.apache.camel.main.download.DownloadListener;
@@ -587,6 +590,19 @@ class Run extends CamelCommand {
                         .getDevConsoleResolver().resolveDevConsole("context");
                 DevConsole dc2 = 
main.getCamelContext().adapt(ExtendedCamelContext.class)
                         .getDevConsoleResolver().resolveDevConsole("route");
+                int ready = 0;
+                int total = 0;
+                // and health-check readiness
+                Collection<HealthCheck.Result> res = 
HealthCheckHelper.invokeReadiness(main.getCamelContext());
+                for (var r : res) {
+                    if (r.getState().equals(HealthCheck.State.UP)) {
+                        ready++;
+                    }
+                    total++;
+                }
+                JsonObject hc = new JsonObject();
+                hc.put("ready", ready);
+                hc.put("total", total);
                 if (dc != null && dc2 != null) {
                     JsonObject json = (JsonObject) 
dc.call(DevConsole.MediaType.JSON);
                     JsonObject json2 = (JsonObject) 
dc2.call(DevConsole.MediaType.JSON);
@@ -594,6 +610,7 @@ class Run extends CamelCommand {
                         JsonObject root = new JsonObject();
                         root.put("context", json);
                         root.put("routes", json2.get("routes"));
+                        root.put("healthChecks", hc);
                         IOHelper.writeText(root.toJson(), statusFile);
                     }
                 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
index 7a98702fc86..b25bc758c64 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
@@ -77,11 +77,13 @@ public class CamelContextStatus extends ProcessBaseCommand {
                     if (ObjectHelper.isNotEmpty(row.name)) {
                         row.pid = "" + ph.pid();
                         row.ago = TimeUtils.printSince(extractSince(ph));
-                        JsonObject status = loadStatus(ph.pid());
-                        if (status != null) {
-                            status = (JsonObject) status.get("context");
-                            row.state = 
status.getString("state").toLowerCase(Locale.ROOT);
-                            Map<String, ?> stats = status.getMap("statistics");
+                        JsonObject root = loadStatus(ph.pid());
+                        if (root != null) {
+                            JsonObject hc = (JsonObject) 
root.get("healthChecks");
+                            row.ready = hc.getString("ready") + "/" + 
hc.getString("total");
+                            JsonObject context = (JsonObject) 
root.get("context");
+                            row.state = 
context.getString("state").toLowerCase(Locale.ROOT);
+                            Map<String, ?> stats = 
context.getMap("statistics");
                             if (stats != null) {
                                 row.total = 
stats.get("exchangesTotal").toString();
                                 row.inflight = 
stats.get("exchangesInflight").toString();
@@ -101,12 +103,13 @@ public class CamelContextStatus extends 
ProcessBaseCommand {
                     new Column().header("PID").with(r -> r.pid),
                     new 
Column().header("Name").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(30)
                             .with(r -> maxWidth(r.name, 28)),
+                    new 
Column().header("Ready").dataAlign(HorizontalAlign.CENTER).with(r -> r.ready),
                     new Column().header("State").with(r -> r.state),
-                    new Column().header("Uptime").with(r -> r.ago),
-                    new Column().header("Total #").with(r -> r.total),
-                    new Column().header("Failed #").with(r -> r.failed),
-                    new Column().header("Inflight #").with(r -> r.inflight),
-                    new Column().header("Since Last").with(r -> 
r.sinceLast))));
+                    new Column().header("Age").with(r -> r.ago),
+                    new Column().header("Total").with(r -> r.total),
+                    new Column().header("Failed").with(r -> r.failed),
+                    new Column().header("Inflight").with(r -> r.inflight),
+                    new Column().header("Last Ago").with(r -> r.sinceLast))));
         }
 
         return 0;
@@ -130,8 +133,9 @@ public class CamelContextStatus extends ProcessBaseCommand {
     private static class Row {
         String pid;
         String name;
-        String ago;
+        String ready;
         String state;
+        String ago;
         String total;
         String failed;
         String inflight;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
index 01a6185e23b..3ca0bd3592f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
@@ -139,15 +139,15 @@ public class CamelRouteStatus extends ProcessBaseCommand {
                     new 
Column().header("From").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(40)
                             .with(r -> maxWidth(r.from, 38)),
                     new Column().header("State").with(r -> r.state),
-                    new Column().header("Uptime").with(r -> r.uptime),
-                    new 
Column().header("Total\n#").headerAlign(HorizontalAlign.CENTER).with(r -> 
r.total),
-                    new 
Column().header("Failed\n#").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.failed),
-                    new 
Column().header("Inflight\n#").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(10)
+                    new Column().header("Age").with(r -> r.uptime),
+                    new 
Column().header("Total").headerAlign(HorizontalAlign.CENTER).with(r -> r.total),
+                    new 
Column().header("Failed").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.failed),
+                    new 
Column().header("Inflight").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(10)
                             .with(r -> r.inflight),
-                    new 
Column().header("Mean\n(ms)").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.mean),
-                    new 
Column().header("Max\n(ms)").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.max),
-                    new 
Column().header("Min\n(ms)").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.min),
-                    new 
Column().header("Since\nLast").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(10)
+                    new 
Column().header("Mean").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.mean),
+                    new 
Column().header("Max").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.max),
+                    new 
Column().header("Min").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(8).with(r
 -> r.min),
+                    new Column().header("Last 
Ago").headerAlign(HorizontalAlign.CENTER).maxColumnWidth(10)
                             .with(r -> r.sinceLast))));
         }
 

Reply via email to