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 2023/09/27 23:15:47 UTC
[camel-karavan] branch main updated: Custom Kamelets in DevMode in Docker #913
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 803dacf1 Custom Kamelets in DevMode in Docker #913
803dacf1 is described below
commit 803dacf188a3322f62444f71f47d984f2fd46180
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Wed Sep 27 19:15:37 2023 -0400
Custom Kamelets in DevMode in Docker #913
---
.../main/java/org/apache/camel/karavan/code/CodeService.java | 11 ++++++++++-
.../org/apache/camel/karavan/docker/DockerForKaravan.java | 3 ++-
.../java/org/apache/camel/karavan/docker/DockerService.java | 7 ++++++-
.../java/org/apache/camel/karavan/service/ProjectService.java | 9 +++++++--
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
index d28af85b..034ca5eb 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/code/CodeService.java
@@ -46,6 +46,9 @@ import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
@@ -59,6 +62,7 @@ public class CodeService {
public static final String DEV_SERVICES_FILENAME = "devservices.yaml";
public static final String PROJECT_COMPOSE_FILENAME = "docker-compose.yaml";
public static final String PROJECT_DEPLOYMENT_JKUBE_FILENAME = "deployment.jkube.yaml";
+ public static final String KAMELETS_FOLDER = "kamelets";
private static final String SNIPPETS_PATH = "/snippets/";
private static final int INTERNAL_PORT = 8080;
@@ -106,8 +110,12 @@ public class CodeService {
return new ProjectFile(APPLICATION_PROPERTIES_FILENAME, code, project.getProjectId(), Instant.now().toEpochMilli());
}
- public String saveProjectFilesInTemp(Map<String, String> files) {
+ public String saveProjectFilesInTemp(Map<String, String> files) throws IOException {
String temp = vertx.fileSystem().createTempDirectoryBlocking("temp");
+ Path kameplesPath = Paths.get(temp, KAMELETS_FOLDER);
+ if (!Files.exists(kameplesPath)) {
+ Files.createDirectories(kameplesPath);
+ }
files.forEach((fileName, code) -> addFile(temp, fileName, code));
return temp;
}
@@ -118,6 +126,7 @@ public class CodeService {
vertx.fileSystem().writeFileBlocking(path, Buffer.buffer(code));
} catch (Exception e) {
LOGGER.error(e.getMessage());
+ e.printStackTrace();
}
}
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
index aebc197e..1e643185 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java
@@ -50,7 +50,8 @@ public class DockerForKaravan {
@Inject
RegistryService registryService;
- public void runProjectInDevMode(String projectId, String jBangOptions, Map<Integer, Integer> ports, Map<String, String> files) throws Exception {
+ public void runProjectInDevMode(String projectId, String jBangOptions, Map<Integer, Integer> ports,
+ Map<String, String> files) throws Exception {
Map<String, String> volumes = getMavenVolumes();
Container c = createDevmodeContainer(projectId, jBangOptions, ports, volumes);
dockerService.runContainer(projectId);
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index 174a33e5..40142177 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -233,6 +233,10 @@ public class DockerService extends DockerServiceUtils {
}
}
+ public void execCommandInContainer(Container container, String... cmd) {
+ getDockerClient().execCreateCmd(container.getId()).withCmd(cmd).exec();
+ }
+
public List<Container> listContainers(Boolean showAll) {
return getDockerClient().listContainersCmd().withShowAll(showAll).exec();
}
@@ -264,8 +268,9 @@ public class DockerService extends DockerServiceUtils {
dockerClient.execStartCmd(id).exec(callBack).awaitCompletion();
}
- public void copyFiles(String containerId, String containerPath, Map<String, String> files) {
+ public void copyFiles(String containerId, String containerPath, Map<String, String> files) throws IOException {
String temp = codeService.saveProjectFilesInTemp(files);
+ System.out.println(temp);
dockerClient.copyArchiveToContainerCmd(containerId).withRemotePath(containerPath)
.withDirChildrenOnly(true).withHostResource(temp).exec();
}
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index 69c7e65a..0848f2de 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -40,13 +40,13 @@ import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Default;
import jakarta.inject.Inject;
+import java.io.File;
import java.time.Instant;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
-import static org.apache.camel.karavan.code.CodeService.DEV_SERVICES_FILENAME;
-import static org.apache.camel.karavan.code.CodeService.PROJECT_COMPOSE_FILENAME;
+import static org.apache.camel.karavan.code.CodeService.*;
@Default
@Readiness
@@ -110,6 +110,11 @@ public class ProjectService implements HealthCheck {
.filter(f -> !Objects.equals(f.getName(), PROJECT_COMPOSE_FILENAME))
.collect(Collectors.toMap(ProjectFile::getName, ProjectFile::getCode));
+ infinispanService.getProjectFiles(Project.Type.kamelets.name())
+ .forEach(file -> files.put(KAMELETS_FOLDER + File.separator + file.getName(), file.getCode()));
+
+ files.forEach((s, s2) -> System.out.println(s));
+
ProjectFile compose = infinispanService.getProjectFile(project.getProjectId(), PROJECT_COMPOSE_FILENAME);
DockerComposeService dcs = DockerComposeConverter.fromCode(compose.getCode(), project.getProjectId());
dockerForKaravan.runProjectInDevMode(project.getProjectId(), jBangOptions, dcs.getPortsMap(), files);