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 f4d2b05b Custom Kamelets in DevMode in Docker #913
f4d2b05b is described below
commit f4d2b05b15d455ddf7bb96ef9470963d2dae16eb
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Thu Sep 28 16:46:18 2023 -0400
Custom Kamelets in DevMode in Docker #913
---
.../org/apache/camel/karavan/code/CodeService.java | 19 +++++++++++++------
.../apache/camel/karavan/service/CamelService.java | 8 ++++++--
.../apache/camel/karavan/service/ProjectService.java | 9 +--------
3 files changed, 20 insertions(+), 16 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 034ca5eb..655e660f 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
@@ -62,7 +62,6 @@ 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;
@@ -91,6 +90,18 @@ public class CodeService {
"limits.cpu", "2000m"
);
+ public Map<String, String> getProjectFiles(String projectId, Boolean
withKamelets) {
+ Map<String, String> files =
infinispanService.getProjectFiles(projectId).stream()
+ .filter(f -> !Objects.equals(f.getName(),
PROJECT_COMPOSE_FILENAME))
+ .collect(Collectors.toMap(ProjectFile::getName,
ProjectFile::getCode));
+
+ if (withKamelets) {
+ infinispanService.getProjectFiles(Project.Type.kamelets.name())
+ .forEach(file -> files.put(file.getName(),
file.getCode()));
+ }
+ return files;
+ }
+
public ProjectFile getApplicationProperties(Project project) {
String target = "docker";
if (ConfigService.inKubernetes()) {
@@ -110,12 +121,8 @@ public class CodeService {
return new ProjectFile(APPLICATION_PROPERTIES_FILENAME, code,
project.getProjectId(), Instant.now().toEpochMilli());
}
- public String saveProjectFilesInTemp(Map<String, String> files) throws
IOException {
+ public String saveProjectFilesInTemp(Map<String, String> files) {
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;
}
diff --git
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
index f8478d10..e5c255d7 100644
---
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
+++
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
@@ -24,6 +24,7 @@ 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.code.CodeService;
import org.apache.camel.karavan.infinispan.InfinispanService;
import org.apache.camel.karavan.infinispan.model.CamelStatus;
import org.apache.camel.karavan.infinispan.model.CamelStatusValue;
@@ -51,6 +52,9 @@ public class CamelService {
@Inject
InfinispanService infinispanService;
+ @Inject
+ CodeService codeService;
+
@Inject
KubernetesService kubernetesService;
@@ -95,8 +99,8 @@ public class CamelService {
public void reloadProjectCode(String projectId) {
LOGGER.info("Reload project code " + projectId);
try {
- List<ProjectFile> files =
infinispanService.getProjectFiles(projectId);
- files.forEach(projectFile -> putRequest(projectId,
projectFile.getName(), projectFile.getCode(), 1000));
+ Map<String, String> files = codeService.getProjectFiles(projectId,
true);
+ files.forEach((name, code) -> putRequest(projectId, name, code,
1000));
reloadRequest(projectId);
ContainerStatus containerStatus =
infinispanService.getDevModeContainerStatus(projectId, environment);
containerStatus.setCodeLoaded(true);
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 0848f2de..314a7f72 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
@@ -106,14 +106,7 @@ public class ProjectService implements HealthCheck {
if (ConfigService.inKubernetes()) {
kubernetesService.runDevModeContainer(project, jBangOptions);
} else {
- Map<String, String> files =
infinispanService.getProjectFiles(project.getProjectId()).stream()
- .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));
+ Map<String, String> files =
codeService.getProjectFiles(project.getProjectId(), true);
ProjectFile compose =
infinispanService.getProjectFile(project.getProjectId(),
PROJECT_COMPOSE_FILENAME);
DockerComposeService dcs =
DockerComposeConverter.fromCode(compose.getCode(), project.getProjectId());