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 a091b28597099bc58b9191da9aab607ab0583160
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Jan 30 14:47:19 2025 -0500

    Support labels
---
 .../apache/camel/karavan/docker/DockerComposeConverter.java   | 11 +++++++++++
 .../org/apache/camel/karavan/docker/DockerForKaravan.java     |  4 ++++
 .../apache/camel/karavan/kubernetes/KubernetesService.java    |  1 +
 .../org/apache/camel/karavan/model/DockerComposeService.java  | 10 ++++++++++
 .../apache/camel/karavan/scheduler/CamelStatusScheduler.java  |  3 +++
 .../java/org/apache/camel/karavan/service/GitService.java     |  4 ++--
 6 files changed, 31 insertions(+), 2 deletions(-)

diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerComposeConverter.java
 
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerComposeConverter.java
index 79f7ce33..646ae80d 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerComposeConverter.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerComposeConverter.java
@@ -36,6 +36,7 @@ import static 
com.github.dockerjava.api.model.MountType.VOLUME;
 public class DockerComposeConverter {
 
     private static final String ENVIRONMENT = "environment";
+    private static final String LABELS = "labels";
     private static final String VOLUMES = "volumes";
 
     public static DockerCompose fromCode(String code) {
@@ -80,6 +81,16 @@ public class DockerComposeConverter {
             });
             service.put(ENVIRONMENT, env);
         }
+        if (service.containsKey(LABELS) && service.getValue(LABELS) instanceof 
JsonArray) {
+            JsonObject env = new JsonObject();
+            service.getJsonArray(LABELS).forEach(o -> {
+                String[] kv = o.toString().split("=");
+                if (kv.length == 2) {
+                    env.put(kv[0], kv[1]);
+                }
+            });
+            service.put(LABELS, env);
+        }
         if (service.containsKey(VOLUMES) && service.getValue(VOLUMES) 
instanceof JsonArray) {
             JsonArray volumes = new JsonArray();
             JsonArray yamlVolumes = service.getJsonArray(VOLUMES);
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
 
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
index 86bc6954..c46625e7 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
@@ -53,6 +53,7 @@ public class DockerForKaravan {
         Container c = createDevmodeContainer(projectId, verbose, compile, 
composeService, projectDevmodeImage, labels, envVars);
         dockerService.runContainer(projectId);
         dockerService.copyFiles(c.getId(), "/karavan/code", files, true);
+        dockerService.copyFiles(c.getId(), "/tmp", Map.of(".karavan.done", 
"done"), true);
     }
 
     protected Container createDevmodeContainer(String projectId, Boolean 
verbose, Boolean compile, DockerComposeService compose,
@@ -78,6 +79,9 @@ public class DockerForKaravan {
         var imageName = projectDevmodeImage != null ? projectDevmodeImage : 
devmodeImage;
 
         var containerLabels = new HashMap<>(labels);
+        if (compose.getLabels() != null) {
+            containerLabels.putAll(compose.getLabels());
+        }
         containerLabels.put(LABEL_TYPE, ContainerType.devmode.name());
         containerLabels.put(LABEL_PROJECT_ID, projectId);
         containerLabels.put(LABEL_CAMEL_RUNTIME, 
CamelRuntime.CAMEL_MAIN.getValue());
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
 
b/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
index b5d270fa..33d756b1 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
@@ -350,6 +350,7 @@ public class KubernetesService {
                 Pod pod = getDevModePod(projectId, verbose, compile, 
podLabels, projectDevmodeImage, deploymentFragment, envVars);
                 Pod result = client.resource(pod).serverSideApply();
                 copyFilesToContainer(result, files, "/karavan/code");
+                copyFilesToContainer(result, Map.of(".karavan.done", "done"), 
"/tmp");
                 LOGGER.info("Created pod " + result.getMetadata().getName());
             }
         }
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/model/DockerComposeService.java
 
b/karavan-app/src/main/java/org/apache/camel/karavan/model/DockerComposeService.java
index 02a076f8..010d88d9 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/model/DockerComposeService.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/model/DockerComposeService.java
@@ -39,6 +39,7 @@ public class DockerComposeService {
     private List<String> networks = new ArrayList<>();
     private Map<String,String> environment = new HashMap<>();
     private DockerComposeHealthCheck healthcheck;
+    private Map<String,String> labels = new HashMap<>();
 
     public DockerComposeService() {
     }
@@ -178,6 +179,14 @@ public class DockerComposeService {
         this.volumes = volumes;
     }
 
+    public Map<String,String> getLabels() {
+        return labels;
+    }
+
+    public void setLabels(Map<String,String> labels) {
+        this.labels = labels;
+    }
+
     @Override
     public String toString() {
         return "DockerComposeService {" +
@@ -196,6 +205,7 @@ public class DockerComposeService {
                 ", healthcheck=" + healthcheck +
                 ", volumes=" + volumes +
                 ", environment=" + environment +
+                ", labels=" + labels +
                 '}';
     }
 
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/scheduler/CamelStatusScheduler.java
 
b/karavan-app/src/main/java/org/apache/camel/karavan/scheduler/CamelStatusScheduler.java
index 0ab8985f..2bafd074 100644
--- 
a/karavan-app/src/main/java/org/apache/camel/karavan/scheduler/CamelStatusScheduler.java
+++ 
b/karavan-app/src/main/java/org/apache/camel/karavan/scheduler/CamelStatusScheduler.java
@@ -24,6 +24,7 @@ import jakarta.inject.Inject;
 import org.apache.camel.karavan.KaravanCache;
 import org.apache.camel.karavan.KaravanConstants;
 import org.apache.camel.karavan.model.CamelStatusRequest;
+import org.apache.camel.karavan.model.ContainerType;
 import org.apache.camel.karavan.service.ConfigService;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 import org.jboss.logging.Logger;
@@ -55,6 +56,7 @@ public class CamelStatusScheduler {
          if (ConfigService.inKubernetes()) {
              karavanCache.getPodContainerStatuses(environment).stream()
                      .filter(cs -> 
Objects.equals(cs.getLabels().get(LABEL_KUBERNETES_RUNTIME), CAMEL_PREFIX))
+                     .filter(cs -> Objects.equals(cs.getType(), 
ContainerType.devmode) || Objects.equals(cs.getType(), ContainerType.project))
                      .filter(cs -> Objects.equals(cs.getCamelRuntime(), 
KaravanConstants.CamelRuntime.CAMEL_MAIN.getValue()))
                      .forEach(cs -> {
                          CamelStatusRequest csr = new 
CamelStatusRequest(cs.getProjectId(), cs.getContainerName());
@@ -65,6 +67,7 @@ public class CamelStatusScheduler {
          } else {
              karavanCache.getPodContainerStatuses(environment).stream()
                      .filter(cs -> Objects.equals(cs.getCamelRuntime(), 
KaravanConstants.CamelRuntime.CAMEL_MAIN.getValue()))
+                     .filter(cs -> Objects.equals(cs.getType(), 
ContainerType.devmode) || Objects.equals(cs.getType(), ContainerType.project))
                      .forEach(cs -> {
                          CamelStatusRequest csr = new 
CamelStatusRequest(cs.getProjectId(), cs.getContainerName());
                          eventBus.publish(CMD_COLLECT_CAMEL_STATUS,
diff --git 
a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java 
b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
index b27bf69b..29272411 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
@@ -533,7 +533,7 @@ public class GitService {
                 }
             }
         } catch (IOException e) {
-           LOGGER.error("Error", e);
+            LOGGER.error("Error", e);
         }
         return result;
     }
@@ -548,4 +548,4 @@ public class GitService {
             return treeParser;
         }
     }
-}
+}
\ No newline at end of file

Reply via email to