You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/10/29 00:20:39 UTC

[camel-karavan] branch main updated: Logger for CamelStatus info

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

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


The following commit(s) were added to refs/heads/main by this push:
     new b607d9c  Logger for CamelStatus info
b607d9c is described below

commit b607d9c7261fa87b09a3e396da96013c1d879b9d
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Fri Oct 28 20:20:31 2022 -0400

    Logger for CamelStatus info
---
 .../apache/camel/karavan/model/CamelStatus.java    | 13 +++++++
 .../camel/karavan/service/StatusService.java       | 40 ++++++++++++++++++----
 2 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/model/CamelStatus.java b/karavan-app/src/main/java/org/apache/camel/karavan/model/CamelStatus.java
index dbbac08..904f70b 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/model/CamelStatus.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/model/CamelStatus.java
@@ -101,4 +101,17 @@ public class CamelStatus {
     public void setEnv(String env) {
         this.env = env;
     }
+
+    @Override
+    public String toString() {
+        return "CamelStatus{" +
+                "projectId='" + projectId + '\'' +
+                ", contextStatus=" + contextStatus +
+                ", consumerStatus=" + consumerStatus +
+                ", routesStatus=" + routesStatus +
+                ", registryStatus=" + registryStatus +
+                ", contextVersion='" + contextVersion + '\'' +
+                ", env='" + env + '\'' +
+                '}';
+    }
 }
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/StatusService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/StatusService.java
index 35eb10e..da8a501 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/StatusService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/StatusService.java
@@ -16,11 +16,13 @@
  */
 package org.apache.camel.karavan.service;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import io.quarkus.runtime.configuration.ProfileManager;
 import io.quarkus.vertx.ConsumeEvent;
 import io.vertx.core.json.JsonObject;
 import io.vertx.mutiny.core.Vertx;
 import io.vertx.mutiny.core.buffer.Buffer;
+import io.vertx.mutiny.core.eventbus.EventBus;
 import io.vertx.mutiny.ext.web.client.HttpResponse;
 import io.vertx.mutiny.ext.web.client.WebClient;
 import org.apache.camel.karavan.model.CamelStatus;
@@ -38,6 +40,7 @@ public class StatusService {
 
     private static final Logger LOGGER = Logger.getLogger(StatusService.class.getName());
     public static final String CMD_COLLECT_STATUSES = "collect-statuses";
+    public static final String CMD_SAVE_STATUS = "save-statuses";
 
     @Inject
     InfinispanService infinispanService;
@@ -48,11 +51,17 @@ public class StatusService {
     @ConfigProperty(name = "karavan.camel-status-threshold")
     int threshold;
 
-    private long lastCollect = 0;
+    @ConfigProperty(name = "karavan.environment")
+    String environment;
 
+    private long lastCollect = 0;
+    private ObjectMapper mapper = new ObjectMapper();
     @Inject
     Vertx vertx;
 
+    @Inject
+    EventBus eventBus;
+
     WebClient webClient;
 
     public WebClient getWebClient() {
@@ -64,19 +73,38 @@ public class StatusService {
 
 
     @ConsumeEvent(value = CMD_COLLECT_STATUSES, blocking = true, ordered = true)
-    public void collectStatuses(String projectId) throws Exception {
+    public void collectStatuses(String projectId) {
         if ((System.currentTimeMillis() - lastCollect) > threshold) {
             collectStatusesForProject(projectId);
             lastCollect = System.currentTimeMillis();
         }
     }
 
+    @ConsumeEvent(value = CMD_SAVE_STATUS, blocking = true, ordered = true)
+    public void saveStatus(String status) {
+        try {
+            CamelStatus cs = mapper.readValue(status, CamelStatus.class);
+            infinispanService.saveCamelStatus(cs);
+        } catch (Exception ex) {
+            LOGGER.error(ex.getMessage());
+        }
+    }
+
     private void collectStatusesForProject(String projectId) {
+        LOGGER.info("Collect Camel status for project " + projectId);
         String url = ProfileManager.getActiveProfile().equals("dev")
                 ? String.format("http://%s-%s.%s/q/health", projectId, kubernetesService.getNamespace(), kubernetesService.getCluster())
                 : String.format("http://%s.%s.%s/q/health", projectId, kubernetesService.getNamespace(), "svc.cluster.local");
         CamelStatus cs = getCamelStatus(projectId, url);
-        infinispanService.saveCamelStatus(cs);
+        LOGGER.info("-----");
+        LOGGER.info(cs.toString());
+        LOGGER.info("-----");
+        try {
+            String data = mapper.writeValueAsString(cs);
+            eventBus.send(CMD_SAVE_STATUS, data);
+        } catch (Exception ex) {
+            LOGGER.error(ex.getMessage());
+        }
     }
 
     private CamelStatus getCamelStatus(String projectId, String url) {
@@ -95,14 +123,14 @@ public class StatusService {
                         getStatus(checks, "camel-routes"),
                         getStatus(checks, "camel-registry"),
                         context.getJsonObject("data").getString("context.version"),
-                        kubernetesService.environment
+                        environment
                 );
             } else {
-                return new CamelStatus(projectId, kubernetesService.environment);
+                return new CamelStatus(projectId, environment);
             }
         } catch (Exception ex) {
             LOGGER.error(ex.getMessage());
-            return new CamelStatus(projectId, kubernetesService.environment);
+            return new CamelStatus(projectId, environment);
         }
     }