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)))); }