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 <[email protected]>
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))));
}