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

commit 051d8dd838b9218025d30e8934900eceff16f985
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Oct 24 09:02:28 2024 -0400

    Karavan Improvements
---
 .../org/apache/camel/karavan/KaravanCache.java     | 10 +++++---
 .../org/apache/camel/karavan/KaravanEvents.java    |  2 ++
 .../apache/camel/karavan/KaravanStartupLoader.java | 30 ++++++++++++++++++++++
 3 files changed, 39 insertions(+), 3 deletions(-)

diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanCache.java 
b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanCache.java
index 4a355245..94d60d9d 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanCache.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanCache.java
@@ -294,13 +294,17 @@ public class KaravanCache {
         return camelStatuses.get(key);
     }
 
-    public List<CamelStatus> getCamelStatusesByEnv(CamelStatusValue.Name name) 
{
+    public List<CamelStatus> getCamelStatusesByName(CamelStatusValue.Name 
name) {
         return getCopyCamelStatuses().stream().peek(cs -> {
             var values = cs.getStatuses();
             cs.setStatuses(values.stream().filter(v -> 
Objects.equals(v.getName(), name)).toList());
         }).toList();
     }
 
+    public List<CamelStatus> getCamelAllStatuses() {
+        return getCopyCamelStatuses();
+    }
+
     public List<CamelStatus> getCamelStatusesByProjectAndEnv(String projectId, 
String env) {
         return getCopyCamelStatuses().stream().filter(el -> 
Objects.equals(el.getProjectId(), projectId) && Objects.equals(el.getEnv(), 
env)).toList();
     }
@@ -328,11 +332,11 @@ public class KaravanCache {
     }
 
     public List<PodContainerStatus> getLoadedDevModeStatuses() {
-        return getCopyPodContainerStatuses().stream().filter(el -> 
Objects.equals(el.getType(), PodContainerStatus.ContainerType.devmode) && 
Objects.equals(el.getCodeLoaded(), true)).toList();
+        return getCopyPodContainerStatuses().stream().filter(el -> 
Objects.equals(el.getType(), ContainerType.devmode) && 
Objects.equals(el.getCodeLoaded(), true)).toList();
     }
 
     public List<PodContainerStatus> getDevModeStatuses() {
-        return getCopyPodContainerStatuses().stream().filter(el -> 
Objects.equals(el.getType(), 
PodContainerStatus.ContainerType.devmode)).toList();
+        return getCopyPodContainerStatuses().stream().filter(el -> 
Objects.equals(el.getType(), ContainerType.devmode)).toList();
     }
 
     public List<PodContainerStatus> getContainerStatusByEnv(String env) {
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanEvents.java 
b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanEvents.java
index f2fa16d7..7c3e8fe1 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanEvents.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanEvents.java
@@ -42,6 +42,8 @@ public class KaravanEvents {
     public static final String CMD_RELOAD_PROJECT_CODE = 
"CMD_RELOAD_PROJECT_CODE";
     public static final String CMD_DELETE_CONTAINER = "CMD_DELETE_CONTAINER";
 
+    public static final String CMD_RESTART_INFORMERS = "CMD_RESTART_INFORMERS";
+
     public static final String POD_CONTAINER_UPDATED = "POD_CONTAINER_UPDATED";
     public static final String POD_CONTAINER_DELETED = "POD_CONTAINER_DELETED";
 
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanStartupLoader.java 
b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanStartupLoader.java
index 5b760eff..b59787cf 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/KaravanStartupLoader.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/KaravanStartupLoader.java
@@ -107,6 +107,7 @@ public class KaravanStartupLoader implements HealthCheck {
                 addKameletsProject();
                 addTemplatesProject();
                 addConfigurationProject();
+                addServicesProject();
             }
             ready.set(true);
         } else {
@@ -128,6 +129,8 @@ public class KaravanStartupLoader implements HealthCheck {
                     project = new Project(Project.Type.kamelets.name(), 
"Custom Kamelets", repo.getCommitId(), repo.getLastCommitTimestamp(), 
Project.Type.kamelets);
                 } else if 
(folderName.equals(Project.Type.configuration.name())) {
                     project = new Project(Project.Type.configuration.name(), 
"Configuration", repo.getCommitId(), repo.getLastCommitTimestamp(), 
Project.Type.configuration);
+                } else if (folderName.equals(Project.Type.services.name())) {
+                    project = new Project(Project.Type.services.name(), "Dev 
Services", repo.getCommitId(), repo.getLastCommitTimestamp(), 
Project.Type.services);
                 } else {
                     project = projectService.getProjectFromRepo(repo);
                 }
@@ -209,4 +212,31 @@ public class KaravanStartupLoader implements HealthCheck {
             LOGGER.error("Error during configuration project creation", e);
         }
     }
+
+    void addServicesProject() {
+        try {
+            Project services = 
karavanCache.getProject(Project.Type.services.name());
+            if (services == null) {
+                LOGGER.info("Add dev services project");
+                services = new Project(Project.Type.services.name(), "Dev 
services", "", Instant.now().toEpochMilli(), Project.Type.services);
+                karavanCache.saveProject(services, true);
+
+                codeService.getDevServicesFiles().forEach((name, value) -> {
+                    ProjectFile file = new ProjectFile(name, value, 
Project.Type.services.name(), Instant.now().toEpochMilli());
+                    karavanCache.saveProjectFile(file, false, true);
+                });
+            } else {
+                codeService.getDevServicesFiles().forEach((name, value) -> {
+                    ProjectFile f = 
karavanCache.getProjectFile(Project.Type.services.name(), name);
+                    if (f == null) {
+                        LOGGER.info("Add new service " + name);
+                        ProjectFile file = new ProjectFile(name, value, 
Project.Type.services.name(), Instant.now().toEpochMilli());
+                        karavanCache.saveProjectFile(file, false, true);
+                    }
+                });
+            }
+        } catch (Exception e) {
+            LOGGER.error("Error during services project creation", e);
+        }
+    }
 }

Reply via email to