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 c2bdac8 camel-jbang - Add health check status c2bdac8 is described below commit c2bdac83c19c04c827f60f6a262fc8be696226f6 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri Jan 28 13:42:32 2022 +0100 camel-jbang - Add health check status --- .../org/apache/camel/main/VertxHttpServer.java | 43 +++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java index 144ee95..d93dfc7 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java @@ -18,7 +18,10 @@ package org.apache.camel.main; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; +import java.util.Optional; import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.atomic.AtomicBoolean; import io.vertx.core.Handler; @@ -216,7 +219,45 @@ public final class VertxHttpServer { if (up) { sb.append(" \"status\": \"UP\"\n"); } else { - sb.append(" \"status\": \"DOWN\"\n"); + Optional<HealthCheck.Result> down + = res.stream().filter(r -> r.getState().equals(HealthCheck.State.DOWN)).findFirst(); + sb.append(" \"status\": \"DOWN\""); + if (down.isPresent()) { + sb.append(",\n"); + HealthCheck.Result d = down.get(); + sb.append(" \"checks\": [\n"); + sb.append(" {\n"); + sb.append(" \"name\": \"").append(d.getCheck().getId()).append("\",\n"); + sb.append(" \"status\": \"").append(d.getState()).append("\",\n"); + if (d.getError().isPresent()) { + String msg = d.getError().get().getMessage(); + sb.append(" \"error-message\": \"").append(msg) + .append("\",\n"); + } + if (d.getMessage().isPresent()) { + sb.append(" \"message\": \"").append(d.getMessage().get()).append("\",\n"); + } + if (d.getDetails() != null && !d.getDetails().isEmpty()) { + // lets use sorted keys + Iterator<String> it = new TreeSet<>(d.getDetails().keySet()).iterator(); + sb.append(" \"data\": {\n"); + while (it.hasNext()) { + String k = it.next(); + Object v = d.getDetails().get(k); + boolean last = !it.hasNext(); + sb.append(" \"").append(k).append("\": \"").append(v).append("\""); + if (!last) { + sb.append(","); + } + sb.append("\n"); + } + sb.append(" }\n"); + } + sb.append(" }\n"); + sb.append(" ]\n"); + } else { + sb.append("\n"); + } } sb.append("}\n");