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/07/17 23:57:18 UTC
[camel-karavan] 01/02: Refactor #817
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 c9b43bc576ba5e3a28e0ef579040a94e7f3b5e2d
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Mon Jul 17 18:14:30 2023 -0400
Refactor #817
---
.../camel/karavan/api/ConfigurationResource.java | 44 +-------
.../apache/camel/karavan/api/DevModeResource.java | 59 ++++++----
.../camel/karavan/api/InfrastructureResource.java | 33 +++---
.../apache/camel/karavan/api/KameletResources.java | 12 +--
.../apache/camel/karavan/api/LogWatchResource.java | 11 +-
.../camel/karavan/api/ProjectFileResource.java | 16 +--
.../camel/karavan/api/ProjectGitResource.java | 2 +-
.../apache/camel/karavan/api/ProjectResource.java | 34 +++---
.../org/apache/camel/karavan/api/SseResource.java | 5 -
.../apache/camel/karavan/api/StatusResource.java | 21 ++--
.../karavan/datagrid/DevModeCommandListener.java | 31 ------
.../karavan/datagrid/DevModeStatusListener.java | 31 ------
.../karavan/datagrid/model/DevModeCommand.java | 83 --------------
.../karavan/datagrid/model/DevModeCommandName.java | 12 ---
.../karavan/datagrid/model/DevModeCommandType.java | 9 --
.../camel/karavan/datagrid/model/Environment.java | 46 --------
.../camel/karavan/docker/DockerEventListener.java | 33 +++---
.../apache/camel/karavan/docker/DockerService.java | 67 ++++++++++--
.../camel/karavan/docker/InfinispanContainer.java | 48 ---------
.../camel/karavan/health/KaravanLiveness.java | 17 ---
.../InfinispanService.java} | 63 ++---------
.../model/CamelStatus.java | 2 +-
.../model/CamelStatusName.java | 2 +-
.../{datagrid => infinispan}/model/CommitInfo.java | 2 +-
.../model/ContainerInfo.java | 2 +-
.../model/DeploymentStatus.java | 2 +-
.../model/DevModeStatus.java | 5 +-
.../{datagrid => infinispan}/model/GitConfig.java | 2 +-
.../{datagrid => infinispan}/model/GitRepo.java | 2 +-
.../model/GitRepoFile.java | 2 +-
.../{datagrid => infinispan}/model/GroupedKey.java | 2 +-
.../model/KaravanSchema.java | 6 +-
.../model/PipelineStatus.java | 2 +-
.../{datagrid => infinispan}/model/PodStatus.java | 2 +-
.../{datagrid => infinispan}/model/Project.java | 2 +-
.../model/ProjectFile.java | 2 +-
.../model/ServiceStatus.java | 2 +-
.../karavan/kubernetes/DeploymentEventHandler.java | 18 ++--
.../karavan/kubernetes/KubernetesService.java | 39 +++----
.../kubernetes/PipelineRunEventHandler.java | 22 ++--
.../camel/karavan/kubernetes/PodEventHandler.java | 18 ++--
.../karavan/kubernetes/ServiceEventHandler.java | 16 +--
.../karavan/listener/DevModeCommandListener.java | 46 --------
.../karavan/listener/DevModeStatusListener.java | 29 -----
.../apache/camel/karavan/service/CamelService.java | 49 ++++-----
.../apache/camel/karavan/service/CodeService.java | 14 +--
.../apache/camel/karavan/service/EventService.java | 120 +++++++++++++++++++++
.../apache/camel/karavan/service/GitService.java | 5 +-
.../camel/karavan/service/KaravanService.java | 71 ++----------
.../camel/karavan/service/ProjectService.java | 65 +++++------
.../camel/karavan/service/ScheduledService.java | 62 +++++++++++
.../apache/camel/karavan/shared/ConfigService.java | 67 ++++++++++++
.../apache/camel/karavan/shared/Configuration.java | 72 +++++++++++++
.../org/apache/camel/karavan/shared/EventType.java | 24 +++++
.../src/main/resources/application.properties | 2 +
.../camel/karavan/datagrid/DataGridTest.java | 83 --------------
.../camel/karavan/infinispan/DataGridTest.java | 54 ++++++++++
57 files changed, 732 insertions(+), 860 deletions(-)
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ConfigurationResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ConfigurationResource.java
index 795f61be..b60449e4 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ConfigurationResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ConfigurationResource.java
@@ -16,9 +16,7 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.kubernetes.KubernetesService;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.apache.camel.karavan.shared.ConfigService;
import javax.inject.Inject;
import javax.ws.rs.GET;
@@ -26,53 +24,17 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
@Path("/api/configuration")
public class ConfigurationResource {
- @ConfigProperty(name = "karavan.version")
- String version;
-
- @ConfigProperty(name = "karavan.environment")
- String environment;
-
- @ConfigProperty(name = "karavan.default-runtime")
- String runtime;
-
- @ConfigProperty(name = "karavan.runtimes")
- List<String> runtimes;
-
- @Inject
- DatagridService datagridService;
-
@Inject
- KubernetesService kubernetesService;
+ ConfigService configService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getConfiguration() throws Exception {
- return Response.ok(
- Map.of(
- "version", version,
- "infrastructure", kubernetesService.inKubernetes() ? "kubernetes" : "docker",
- "environment", environment,
- "environments", datagridService.getEnvironments().stream()
- .map(e -> e.getName())
- .sorted((o1, o2) -> {
- if (o1.startsWith("dev") && o2.startsWith("test")) return -1;
- if (o1.startsWith("test") && o2.startsWith("dev")) return 1;
- if (o1.startsWith("test") && o2.startsWith("prod")) return -1;
- if (o1.startsWith("prod") && o2.startsWith("test")) return 1;
- return o1.compareTo(o2);
- })
- .collect(Collectors.toList()),
- "runtime", runtime,
- "runtimes", runtimes
- )
- ).build();
+ return Response.ok(configService.getConfiguration()).build();
}
}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
index 403ad264..f703d5cf 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/DevModeResource.java
@@ -16,25 +16,24 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.*;
+import org.apache.camel.karavan.docker.DockerService;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.CamelStatus;
+import org.apache.camel.karavan.infinispan.model.DevModeStatus;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.kubernetes.KubernetesService;
import org.apache.camel.karavan.service.CamelService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import javax.inject.Inject;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import java.time.Instant;
import java.util.Optional;
-import static org.apache.camel.karavan.service.CamelService.DEVMODE_SUFFIX;
+import static org.apache.camel.karavan.shared.ConfigService.DEVMODE_SUFFIX;
@Path("/api/devmode")
public class DevModeResource {
@@ -46,18 +45,28 @@ public class DevModeResource {
CamelService camelService;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
+
+ @Inject
+ KubernetesService kubernetesService;
+
+ @Inject
+ DockerService dockerService;
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/{jBangOptions}")
- public Response runProjectWithJBangOptions(Project project, @PathParam("jBangOptions") String jBangOptions) {
+ public Response runProjectWithJBangOptions(Project project, @PathParam("jBangOptions") String jBangOptions) throws InterruptedException {
String runnerName = project.getProjectId() + "-" + DEVMODE_SUFFIX;
- PodStatus status = datagridService.getDevModePodStatuses(runnerName, environment);
+ PodStatus status = infinispanService.getDevModePodStatuses(runnerName, environment);
if (status == null) {
- datagridService.saveDevModeStatus(new DevModeStatus(project.getProjectId(), null, null, false));
- datagridService.sendDevModeCommand(DevModeCommand.createForProject(DevModeCommandName.RUN, project.getProjectId()));
+ infinispanService.saveDevModeStatus(new DevModeStatus(project.getProjectId(), null, null, false));
+ if (ConfigService.inKubernetes()) {
+ kubernetesService.createRunner(project, runnerName, "");
+ } else {
+ dockerService.createRunner(project, runnerName, "");
+ }
return Response.ok(runnerName).build();
}
return Response.notModified().build();
@@ -66,7 +75,7 @@ public class DevModeResource {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
- public Response runProject(Project project) {
+ public Response runProject(Project project) throws InterruptedException {
return runProjectWithJBangOptions(project, "");
}
@@ -83,17 +92,23 @@ public class DevModeResource {
@Consumes(MediaType.APPLICATION_JSON)
@Path("/{projectId}/{deletePVC}")
public Response deleteRunner(@PathParam("projectId") String projectId, @PathParam("deletePVC") boolean deletePVC) {
- datagridService.sendDevModeCommand(DevModeCommand.createForProject(DevModeCommandName.DELETE, projectId));
- datagridService.deleteDevModeStatus(projectId);
+ String runnerName = projectId + "-" + DEVMODE_SUFFIX;
+ if (ConfigService.inKubernetes()) {
+ kubernetesService.deleteRunner(runnerName, deletePVC);
+ } else {
+ dockerService.stopContainer(runnerName);
+ dockerService.deleteContainer(runnerName);
+ }
+ infinispanService.deleteDevModeStatus(projectId);
return Response.accepted().build();
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/pod/{projectId}")
- public Response getPodStatus(@PathParam("projectId") String projectId) {
+ public Response getPodStatus(@PathParam("projectId") String projectId) throws RuntimeException {
String runnerName = projectId + "-" + DEVMODE_SUFFIX;
- Optional<PodStatus> ps = datagridService.getPodStatuses(projectId, environment).stream()
+ Optional<PodStatus> ps = infinispanService.getPodStatuses(projectId, environment).stream()
.filter(podStatus -> podStatus.getName().equals(runnerName))
.findFirst();
if (ps.isPresent()) {
@@ -107,7 +122,7 @@ public class DevModeResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/status/{projectId}/{statusName}")
public Response getCamelStatusByProjectAndEnv(@PathParam("projectId") String projectId, @PathParam("statusName") String statusName) {
- CamelStatus status = datagridService.getCamelStatus(projectId, environment, statusName);
+ CamelStatus status = infinispanService.getCamelStatus(projectId, environment, statusName);
if (status != null) {
return Response.ok(status).build();
} else {
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
index 8e0032f1..5c8410ca 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/InfrastructureResource.java
@@ -19,12 +19,13 @@ package org.apache.camel.karavan.api;
import io.smallrye.mutiny.Multi;
import io.vertx.mutiny.core.eventbus.EventBus;
import io.vertx.mutiny.core.eventbus.Message;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.DeploymentStatus;
-import org.apache.camel.karavan.datagrid.model.PodStatus;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ServiceStatus;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.DeploymentStatus;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ServiceStatus;
import org.apache.camel.karavan.kubernetes.KubernetesService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.logging.Logger;
@@ -43,7 +44,7 @@ public class InfrastructureResource {
EventBus eventBus;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
KubernetesService kubernetesService;
@@ -58,7 +59,7 @@ public class InfrastructureResource {
@Consumes(MediaType.APPLICATION_JSON)
@Path("/pipeline/{env}")
public String createPipeline(@PathParam("env") String env, Project project) throws Exception {
- Project p = datagridService.getProject(project.getProjectId());
+ Project p = infinispanService.getProject(project.getProjectId());
return kubernetesService.createPipelineRun(project);
}
@@ -99,7 +100,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/deployment")
public List<DeploymentStatus> getAllDeploymentStatuses() throws Exception {
- return datagridService.getDeploymentStatuses().stream()
+ return infinispanService.getDeploymentStatuses().stream()
.sorted(Comparator.comparing(DeploymentStatus::getProjectId))
.collect(Collectors.toList());
}
@@ -108,7 +109,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/deployment/{env}")
public List<DeploymentStatus> getDeploymentStatusesByEnv(@PathParam("env") String env) throws Exception {
- return datagridService.getDeploymentStatuses(env).stream()
+ return infinispanService.getDeploymentStatuses(env).stream()
.sorted(Comparator.comparing(DeploymentStatus::getProjectId))
.collect(Collectors.toList());
}
@@ -134,7 +135,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/service")
public List<ServiceStatus> getAllServiceStatuses() throws Exception {
- return datagridService.getServiceStatuses().stream()
+ return infinispanService.getServiceStatuses().stream()
.sorted(Comparator.comparing(ServiceStatus::getProjectId))
.collect(Collectors.toList());
}
@@ -143,7 +144,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/pod/{env}")
public List<PodStatus> getPodStatusesByEnv(@PathParam("env") String env) throws Exception {
- return datagridService.getPodStatuses(env).stream()
+ return infinispanService.getPodStatuses(env).stream()
.sorted(Comparator.comparing(PodStatus::getProjectId))
.collect(Collectors.toList());
}
@@ -152,7 +153,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/pod/{projectId}/{env}")
public List<PodStatus> getPodStatusesByProjectAndEnv(@PathParam("projectId") String projectId, @PathParam("env") String env) throws Exception {
- return datagridService.getPodStatuses(projectId, env).stream()
+ return infinispanService.getPodStatuses(projectId, env).stream()
.filter(podStatus -> !podStatus.getInDevMode())
.sorted(Comparator.comparing(PodStatus::getName))
.collect(Collectors.toList());
@@ -178,7 +179,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/configmaps")
public Response getConfigMaps() throws Exception {
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
return Response.ok(kubernetesService.getConfigMaps(kubernetesService.getNamespace())).build();
} else {
return Response.ok(List.of()).build();
@@ -189,7 +190,7 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/secrets")
public Response getSecrets() throws Exception {
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
return Response.ok(kubernetesService.getSecrets(kubernetesService.getNamespace())).build();
} else {
return Response.ok(List.of()).build();
@@ -200,10 +201,10 @@ public class InfrastructureResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/services")
public Response getServices() throws Exception {
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
return Response.ok(kubernetesService.getServices(kubernetesService.getNamespace())).build();
} else {
- List<String> list = datagridService.getContainerInfos(environment).stream()
+ List<String> list = infinispanService.getContainerInfos(environment).stream()
.map(ci -> ci.getPorts().stream().map(i -> ci.getContainerName() + ":" + i).collect(Collectors.toList()))
.flatMap(List::stream).collect(Collectors.toList());
return Response.ok(list).build();
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
index e3788f2c..6d6f777e 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/KameletResources.java
@@ -16,9 +16,9 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.service.CodeService;
import org.yaml.snakeyaml.Yaml;
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
public class KameletResources {
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
CodeService codeService;
@@ -45,7 +45,7 @@ public class KameletResources {
@Produces(MediaType.TEXT_PLAIN)
public String getKamelets() {
StringBuilder kamelets = new StringBuilder(codeService.getResourceFile("/kamelets/kamelets.yaml"));
- List<ProjectFile> custom = datagridService.getProjectFiles(Project.NAME_KAMELETS);
+ List<ProjectFile> custom = infinispanService.getProjectFiles(Project.NAME_KAMELETS);
if (custom.size() > 0) {
kamelets.append("\n---\n");
kamelets.append(custom.stream()
@@ -60,7 +60,7 @@ public class KameletResources {
@Path("/names")
public List<String> getCustomNames() {
Yaml yaml = new Yaml();
- return datagridService.getProjectFiles(Project.NAME_KAMELETS).stream()
+ return infinispanService.getProjectFiles(Project.NAME_KAMELETS).stream()
.map(projectFile -> {
Map<String, LinkedHashMap> obj = yaml.load(projectFile.getCode());
LinkedHashMap<String, Object> metadata = obj.get("metadata");
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/LogWatchResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/LogWatchResource.java
index b6d14670..3a235592 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/LogWatchResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/LogWatchResource.java
@@ -17,10 +17,9 @@
package org.apache.camel.karavan.api;
import io.fabric8.kubernetes.client.dsl.LogWatch;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.DevModeCommand;
-import org.apache.camel.karavan.datagrid.model.DevModeCommandName;
+import org.apache.camel.karavan.infinispan.InfinispanService;
import org.apache.camel.karavan.kubernetes.KubernetesService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.microprofile.context.ManagedExecutor;
import org.jboss.logging.Logger;
@@ -48,7 +47,7 @@ public class LogWatchResource {
KubernetesService kubernetesService;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
ManagedExecutor managedExecutor;
@@ -63,10 +62,10 @@ public class LogWatchResource {
) {
managedExecutor.execute(() -> {
LOGGER.info("LogWatch for " + name + " starting...");
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
getKubernetesLogs(type, name, eventSink, sse);
} else {
- datagridService.sendDevModeCommand(DevModeCommand.createForContainer(DevModeCommandName.LOG, name));
+// infinispanService.sendDevModeCommand(DevModeCommand.createForContainer(DevModeCommandName.LOG, name));
}
});
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
index 3d693921..638024ff 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java
@@ -16,8 +16,8 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.service.CodeService;
import javax.inject.Inject;
@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
public class ProjectFileResource {
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
CodeService codeService;
@@ -51,7 +51,7 @@ public class ProjectFileResource {
@Path("/{projectId}")
public List<ProjectFile> get(@HeaderParam("username") String username,
@PathParam("projectId") String projectId) throws Exception {
- return datagridService.getProjectFiles(projectId).stream()
+ return infinispanService.getProjectFiles(projectId).stream()
.sorted(Comparator.comparing(ProjectFile::getName))
.collect(Collectors.toList());
}
@@ -61,7 +61,7 @@ public class ProjectFileResource {
@Consumes(MediaType.APPLICATION_JSON)
public ProjectFile save(ProjectFile file) throws Exception {
file.setLastUpdate(Instant.now().toEpochMilli());
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
return file;
}
@@ -71,7 +71,7 @@ public class ProjectFileResource {
public void delete(@HeaderParam("username") String username,
@PathParam("project") String project,
@PathParam("filename") String filename) throws Exception {
- datagridService.deleteProjectFile(
+ infinispanService.deleteProjectFile(
URLDecoder.decode(project, StandardCharsets.UTF_8.toString()),
URLDecoder.decode(filename, StandardCharsets.UTF_8.toString())
);
@@ -85,11 +85,11 @@ public class ProjectFileResource {
@PathParam("integrationName") String integrationName,
@PathParam("generateRest") boolean generateRest,
@PathParam("generateRoutes") boolean generateRoutes, ProjectFile file) throws Exception {
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
if (generateRest) {
String yaml = codeService.generate(file.getName(), file.getCode(), generateRoutes);
ProjectFile integration = new ProjectFile(integrationName, yaml, file.getProjectId(), Instant.now().toEpochMilli());
- datagridService.saveProjectFile(integration);
+ infinispanService.saveProjectFile(integration);
return file;
}
return file;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
index c6c67825..e35386b0 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectGitResource.java
@@ -16,7 +16,7 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.model.Project;
+import org.apache.camel.karavan.infinispan.model.Project;
import org.apache.camel.karavan.service.ProjectService;
import javax.inject.Inject;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
index 5d2049ca..343aeedb 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectResource.java
@@ -16,10 +16,10 @@
*/
package org.apache.camel.karavan.api;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.GroupedKey;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.GroupedKey;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.service.CodeService;
import org.apache.camel.karavan.service.GitService;
import javax.inject.Inject;
@@ -42,7 +42,7 @@ import java.util.stream.Collectors;
public class ProjectResource {
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
GitService gitService;
@@ -53,7 +53,7 @@ public class ProjectResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Project> getAll() throws Exception {
- return datagridService.getProjects().stream()
+ return infinispanService.getProjects().stream()
.sorted((p1, p2) -> {
if (p1.getProjectId().equalsIgnoreCase(Project.NAME_TEMPLATES)) return 1;
if (p2.getProjectId().equalsIgnoreCase(Project.NAME_TEMPLATES)) return 1;
@@ -68,18 +68,18 @@ public class ProjectResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/{project}")
public Project get(@PathParam("project") String project) throws Exception {
- return datagridService.getProject(project);
+ return infinispanService.getProject(project);
}
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Project save(Project project) throws Exception {
- boolean isNew = datagridService.getProject(project.getProjectId()) != null;
- datagridService.saveProject(project);
+ boolean isNew = infinispanService.getProject(project.getProjectId()) != null;
+ infinispanService.saveProject(project);
if (isNew){
ProjectFile appProp = codeService.getApplicationProperties(project);
- datagridService.saveProjectFile(appProp);
+ infinispanService.saveProjectFile(appProp);
}
return project;
}
@@ -90,9 +90,9 @@ public class ProjectResource {
public void delete(@HeaderParam("username") String username,
@PathParam("project") String project) throws Exception {
String projectId = URLDecoder.decode(project, StandardCharsets.UTF_8.toString());
- gitService.deleteProject(projectId, datagridService.getProjectFiles(projectId));
- datagridService.getProjectFiles(projectId).forEach(file -> datagridService.deleteProjectFile(projectId, file.getName()));
- datagridService.deleteProject(projectId);
+ gitService.deleteProject(projectId, infinispanService.getProjectFiles(projectId));
+ infinispanService.getProjectFiles(projectId).forEach(file -> infinispanService.deleteProjectFile(projectId, file.getName()));
+ infinispanService.deleteProject(projectId);
}
@POST
@@ -101,11 +101,11 @@ public class ProjectResource {
@Path("/copy/{sourceProject}")
public Project copy(@PathParam("sourceProject") String sourceProject, Project project) throws Exception {
// Save project
- Project s = datagridService.getProject(sourceProject);
+ Project s = infinispanService.getProject(sourceProject);
project.setRuntime(s.getRuntime());
- datagridService.saveProject(project);
+ infinispanService.saveProject(project);
// Copy files
- Map<GroupedKey, ProjectFile> map = datagridService.getProjectFilesMap(sourceProject).entrySet().stream()
+ Map<GroupedKey, ProjectFile> map = infinispanService.getProjectFilesMap(sourceProject).entrySet().stream()
.collect(Collectors.toMap(
e -> new GroupedKey(project.getProjectId(), e.getKey().getEnv(), e.getKey().getKey()),
e -> {
@@ -114,7 +114,7 @@ public class ProjectResource {
return file;
})
);
- datagridService.saveProjectFiles(map);
+ infinispanService.saveProjectFiles(map);
return project;
}
}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/SseResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/SseResource.java
index 1a916862..025fdf70 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/SseResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/SseResource.java
@@ -56,11 +56,6 @@ public class SseResource {
@OnOverflow(value = OnOverflow.Strategy.BUFFER, bufferSize = 1000)
Emitter<JsonObject> emitter;
-// @Scheduled(every="1s")
-// void increment() {
-// emitter.send(JsonObject.of("name", "marat1", "marat", new Date()));
-// emitter.send(JsonObject.of("name", "marat2", "marat", new Date()));
-// }
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
index 29304c19..c9f5bbdd 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/api/StatusResource.java
@@ -17,8 +17,8 @@
package org.apache.camel.karavan.api;
import io.vertx.core.eventbus.EventBus;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.*;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.*;
import org.jboss.logging.Logger;
import javax.inject.Inject;
@@ -37,7 +37,7 @@ public class StatusResource {
private static final Logger LOGGER = Logger.getLogger(StatusResource.class.getName());
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
EventBus bus;
@@ -46,7 +46,7 @@ public class StatusResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/pipeline/{projectId}/{env}")
public Response getPipelineStatus(@PathParam("projectId") String projectId, @PathParam("env") String env) {
- PipelineStatus status = datagridService.getPipelineStatus(projectId, env);
+ PipelineStatus status = infinispanService.getPipelineStatus(projectId, env);
if (status != null) {
return Response.ok(status).build();
} else {
@@ -58,12 +58,9 @@ public class StatusResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/deployment/{name}/{env}")
public Response getDeploymentStatus(@PathParam("name") String name, @PathParam("env") String env) {
- Optional<Environment> environment = datagridService.getEnvironments().stream().filter(e -> e.getName().equals(env)).findFirst();
- if (environment.isPresent()){
- DeploymentStatus status = datagridService.getDeploymentStatus(name, env);
- if (status != null) {
- return Response.ok(status).build();
- }
+ DeploymentStatus status = infinispanService.getDeploymentStatus(name, env);
+ if (status != null) {
+ return Response.ok(status).build();
}
return Response.noContent().build();
}
@@ -72,7 +69,7 @@ public class StatusResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/camel/{projectId}/{env}")
public Response getCamelStatusByProjectAndEnv(@PathParam("projectId") String projectId, @PathParam("env") String env) {
- CamelStatus status = datagridService.getCamelStatus(projectId, env, CamelStatusName.context.name());
+ CamelStatus status = infinispanService.getCamelStatus(projectId, env, CamelStatusName.context.name());
if (status != null) {
return Response.ok(status).build();
} else {
@@ -84,6 +81,6 @@ public class StatusResource {
@Produces(MediaType.APPLICATION_JSON)
@Path("/camel/{env}")
public List<CamelStatus> getCamelStatusByEnv(@PathParam("env") String env) {
- return datagridService.getCamelStatusesByEnv(env, CamelStatusName.context);
+ return infinispanService.getCamelStatusesByEnv(env, CamelStatusName.context);
}
}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeCommandListener.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeCommandListener.java
deleted file mode 100644
index 09f07eaa..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeCommandListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.camel.karavan.datagrid;
-
-import io.vertx.core.eventbus.EventBus;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.model.GroupedKey;
-import org.infinispan.client.hotrod.annotation.ClientCacheEntryCreated;
-import org.infinispan.client.hotrod.annotation.ClientCacheEntryModified;
-import org.infinispan.client.hotrod.annotation.ClientListener;
-import org.infinispan.client.hotrod.event.ClientCacheEntryCreatedEvent;
-import org.infinispan.client.hotrod.event.ClientCacheEntryModifiedEvent;
-
-@ClientListener
-public class DevModeCommandListener {
-
- private final EventBus eventBus;
-
- public DevModeCommandListener(EventBus eventBus) {
- this.eventBus = eventBus;
- }
-
- @ClientCacheEntryCreated
- public void entryCreated(ClientCacheEntryCreatedEvent<GroupedKey> event) {
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_COMMAND_INTERNAL, JsonObject.mapFrom(event.getKey()));
- }
-
- @ClientCacheEntryModified
- public void entryModified(ClientCacheEntryModifiedEvent<GroupedKey> event) {
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_COMMAND_INTERNAL, JsonObject.mapFrom(event.getKey()));
- }
-
-}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeStatusListener.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeStatusListener.java
deleted file mode 100644
index 7d9a88b4..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DevModeStatusListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.camel.karavan.datagrid;
-
-import io.vertx.core.eventbus.EventBus;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.model.GroupedKey;
-import org.infinispan.client.hotrod.annotation.ClientCacheEntryCreated;
-import org.infinispan.client.hotrod.annotation.ClientCacheEntryModified;
-import org.infinispan.client.hotrod.annotation.ClientListener;
-import org.infinispan.client.hotrod.event.ClientCacheEntryCreatedEvent;
-import org.infinispan.client.hotrod.event.ClientCacheEntryModifiedEvent;
-
-@ClientListener
-public class DevModeStatusListener {
-
- private final EventBus eventBus;
-
- public DevModeStatusListener(EventBus eventBus) {
- this.eventBus = eventBus;
- }
-
- @ClientCacheEntryCreated
- public void entryCreated(ClientCacheEntryCreatedEvent<GroupedKey> event) {
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_STATUS_INTERNAL, JsonObject.mapFrom(event.getKey()));
- }
-
- @ClientCacheEntryModified
- public void entryModified(ClientCacheEntryModifiedEvent<GroupedKey> event) {
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_STATUS_INTERNAL, JsonObject.mapFrom(event.getKey()));
- }
-
-}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommand.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommand.java
deleted file mode 100644
index c364c997..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommand.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
-import java.time.Instant;
-
-public class DevModeCommand {
-
- public static final String CACHE = "devmode_commands";
- public static final String DEVMODE_SUFFIX = "-devmode";
- @ProtoField(number = 1)
- DevModeCommandName commandName;
- @ProtoField(number = 2)
- String projectId;
- @ProtoField(number = 3)
- String containerName;
- @ProtoField(number = 4)
- DevModeCommandType type;
- @ProtoField(number = 5)
- Long time;
-
- @ProtoFactory
- public DevModeCommand(DevModeCommandName commandName, String projectId, String containerName, DevModeCommandType type, Long time) {
- this.commandName = commandName;
- this.projectId = projectId;
- this.containerName = containerName;
- this.type = type;
- this.time = time;
- }
-
- public static DevModeCommand createForProject(DevModeCommandName commandName, String projectId) {
- return new DevModeCommand(commandName, projectId, projectId + DEVMODE_SUFFIX, DevModeCommandType.DEVMODE, Instant.now().toEpochMilli());
- }
-
- public static DevModeCommand createForContainer(DevModeCommandName commandName, String containerName) {
- return new DevModeCommand(commandName, null, containerName, DevModeCommandType.DEVMODE, Instant.now().toEpochMilli());
- }
-
- public static DevModeCommand createDevServiceCommand(DevModeCommandName commandName, String serviceName) {
- return new DevModeCommand(commandName, null, serviceName, DevModeCommandType.DEVSERVICE, Instant.now().toEpochMilli());
- }
-
- public DevModeCommandName getCommandName() {
- return commandName;
- }
-
- public void setCommandName(DevModeCommandName commandName) {
- this.commandName = commandName;
- }
-
- public String getProjectId() {
- return projectId;
- }
-
- public void setProjectId(String projectId) {
- this.projectId = projectId;
- }
-
- public String getContainerName() {
- return containerName;
- }
-
- public void setContainerName(String containerName) {
- this.containerName = containerName;
- }
-
- public DevModeCommandType getType() {
- return type;
- }
-
- public void setType(DevModeCommandType type) {
- this.type = type;
- }
-
- public Long getTime() {
- return time;
- }
-
- public void setTime(Long time) {
- this.time = time;
- }
-}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandName.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandName.java
deleted file mode 100644
index aa0a550b..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandName.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoEnumValue;
-
-public enum DevModeCommandName {
-
- @ProtoEnumValue(number = 0, name = "RUN") RUN,
- @ProtoEnumValue (number = 1, name = "STOP") STOP,
- @ProtoEnumValue (number = 2, name = "DELETE") DELETE,
- @ProtoEnumValue (number = 3, name = "RELOAD") RELOAD,
- @ProtoEnumValue (number = 4, name = "LOG") LOG
-}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandType.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandType.java
deleted file mode 100644
index c0a1d582..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeCommandType.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoEnumValue;
-
-public enum DevModeCommandType {
-
- @ProtoEnumValue(number = 0, name = "DEVMODE") DEVMODE,
- @ProtoEnumValue (number = 1, name = "DEVSERVICE") DEVSERVICE
-}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Environment.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Environment.java
deleted file mode 100644
index 0c7a9ac6..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Environment.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.camel.karavan.datagrid.model;
-
-import org.infinispan.protostream.annotations.ProtoFactory;
-import org.infinispan.protostream.annotations.ProtoField;
-
-public class Environment {
- public static final String CACHE = "environments";
-
- @ProtoField(number = 1)
- String name;
- @ProtoField(number = 2)
- String cluster;
- @ProtoField(number = 3)
- String namespace;
-
- @ProtoFactory
- public Environment(String name, String cluster, String namespace) {
- this.name = name;
- this.cluster = cluster;
- this.namespace = namespace;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getCluster() {
- return cluster;
- }
-
- public void setCluster(String cluster) {
- this.cluster = cluster;
- }
-
- public String getNamespace() {
- return namespace;
- }
-
- public void setNamespace(String namespace) {
- this.namespace = namespace;
- }
-}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
index 2480ee80..cda60bf5 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
@@ -6,10 +6,10 @@ import com.github.dockerjava.api.model.ContainerPort;
import com.github.dockerjava.api.model.Event;
import com.github.dockerjava.api.model.EventType;
import io.vertx.core.eventbus.EventBus;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.ContainerInfo;
-import org.apache.camel.karavan.datagrid.model.DevModeStatus;
-import org.apache.camel.karavan.datagrid.model.PodStatus;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.ContainerInfo;
+import org.apache.camel.karavan.infinispan.model.DevModeStatus;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.logging.Logger;
@@ -23,7 +23,8 @@ import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
-import static org.apache.camel.karavan.datagrid.model.DevModeCommand.DEVMODE_SUFFIX;
+import static org.apache.camel.karavan.shared.EventType.INFINISPAN_STARTED;
+import static org.apache.camel.karavan.shared.ConfigService.DEVMODE_SUFFIX;
@ApplicationScoped
public class DockerEventListener implements ResultCallback<Event> {
@@ -38,7 +39,7 @@ public class DockerEventListener implements ResultCallback<Event> {
EventBus eventBus;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
private static final Logger LOGGER = Logger.getLogger(DockerEventListener.class.getName());
@@ -66,14 +67,14 @@ public class DockerEventListener implements ResultCallback<Event> {
}
public void onContainerEvent(Event event, Container container) {
- if (datagridService.isReady()) {
+ if (infinispanService.isReady()) {
String name = container.getNames()[0].replace("/", "");
if (Arrays.asList("destroy", "stop", "die", "kill", "pause", "destroy", "rename").contains(event.getStatus())) {
- datagridService.deleteContainerInfo(name);
+ infinispanService.deleteContainerInfo(name);
} else if (Arrays.asList("create", "start", "unpause").contains(event.getStatus())) {
List<Integer> ports = Arrays.stream(container.getPorts()).map(ContainerPort::getPrivatePort).filter(Objects::nonNull).collect(Collectors.toList());
ContainerInfo ci = new ContainerInfo(name, container.getId(), container.getImage(), ports, environment);
- datagridService.saveContainerInfo(ci);
+ infinispanService.saveContainerInfo(ci);
}
}
}
@@ -82,32 +83,32 @@ public class DockerEventListener implements ResultCallback<Event> {
String status = event.getStatus();
String health = status.replace("health_status: ", "");
LOGGER.infof("Container %s health status: %s", container.getNames()[0], health);
- eventBus.publish(DockerService.ADDRESS_INFINISPAN_STARTED, health);
+ eventBus.publish(INFINISPAN_STARTED, health);
}
public void onDevModeEvent(Event event, Container container) {
try {
- if (datagridService.isReady()) {
+ if (infinispanService.isReady()) {
String status = event.getStatus();
String name = container.getNames()[0].replace("/", "");
if (Arrays.asList("stop", "die", "kill", "pause", "destroy").contains(event.getStatus())) {
String projectId = name.replace(DEVMODE_SUFFIX, "");
- datagridService.deletePodStatus(projectId, environment, name);
- datagridService.deleteCamelStatuses(projectId, environment);
+ infinispanService.deletePodStatus(projectId, environment, name);
+ infinispanService.deleteCamelStatuses(projectId, environment);
} else if (Arrays.asList("start", "unpause").contains(event.getStatus())) {
String projectId = name.replace(DEVMODE_SUFFIX, "");
PodStatus ps = new PodStatus(name, true, null, projectId, environment, true, Instant.ofEpochSecond(container.getCreated()).toString());
- datagridService.savePodStatus(ps);
+ infinispanService.savePodStatus(ps);
} else if (status.startsWith("health_status:")) {
String health = status.replace("health_status: ", "");
LOGGER.infof("Container %s health status: %s", container.getNames()[0], health);
//update DevModeStatus
String containerName = container.getNames()[0].replace("/", "");
- DevModeStatus dms = datagridService.getDevModeStatus(container.getLabels().get("projectId"));
+ DevModeStatus dms = infinispanService.getDevModeStatus(container.getLabels().get("projectId"));
if (dms != null) {
dms.setContainerName(containerName);
dms.setContainerId(container.getId());
- datagridService.saveDevModeStatus(dms);
+ infinispanService.saveDevModeStatus(dms);
}
}
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index 357b5d87..8b36c505 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -16,6 +16,8 @@ import io.quarkus.scheduler.Scheduled;
import io.smallrye.mutiny.tuples.Tuple2;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.json.JsonObject;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.logging.Logger;
import javax.enterprise.context.ApplicationScoped;
@@ -26,29 +28,72 @@ import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
-import static org.apache.camel.karavan.service.KaravanService.DEVMODE_SUFFIX;
+import static org.apache.camel.karavan.shared.EventType.CONTAINER_STATS;
+import static org.apache.camel.karavan.shared.EventType.INFINISPAN_HEALTH;
+import static org.apache.camel.karavan.shared.ConfigService.DEVMODE_SUFFIX;
@ApplicationScoped
public class DockerService {
private static final Logger LOGGER = Logger.getLogger(DockerService.class.getName());
- public static final String ADDRESS_INFINISPAN_STARTED = "ADDRESS_INFINISPAN_STARTED";
-
public static final String NETWORK_NAME = "karavan";
private static final DecimalFormat formatCpu = new DecimalFormat("0.00");
private static final DecimalFormat formatMiB = new DecimalFormat("0.0");
private static final DecimalFormat formatGiB = new DecimalFormat("0.00");
private static final Map<String, Tuple2<Long, Long>> previousStats = new ConcurrentHashMap<>();
+ @ConfigProperty(name = "runner.image")
+ String runnerImage;
+
+ @ConfigProperty(name = "infinispan.image")
+ String infinispanImage;
+ @ConfigProperty(name = "infinispan.port")
+ String infinispanPort;
+ @ConfigProperty(name = "infinispan.username")
+ String infinispanUsername;
+ @ConfigProperty(name = "infinispan.password")
+ String infinispanPassword;
+
@Inject
DockerEventListener dockerEventListener;
@Inject
EventBus eventBus;
- @Scheduled(every = "{karavan.container-stats-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
- void collectContainersStats() {
+ public void createRunner(Project project, String runnerName, String jBangOptions) throws InterruptedException {
+ String projectId = project.getProjectId();
+ LOGGER.infof("DevMode starting for %s", projectId);
+ HealthCheck healthCheck = new HealthCheck().withTest(List.of("CMD", "curl", "-f", "http://localhost:8080/q/dev/health"))
+ .withInterval(10000000000L).withTimeout(10000000000L).withStartPeriod(10000000000L).withRetries(30);
+ createContainer(runnerName, runnerImage,
+ List.of(), "", false, healthCheck,
+ Map.of("type", "devmode", "projectId", projectId));
+ startContainer(runnerName);
+ LOGGER.infof("DevMode started for %s", projectId);
+ }
+
+ public static final String INFINISPAN_CONTAINER_NAME = "infinispan";
+
+ public void startInfinispan() {
+ try {
+ LOGGER.info("Infinispan is starting...");
+
+ HealthCheck healthCheck = new HealthCheck().withTest(List.of("CMD", "curl", "-f", "http://localhost:11222/rest/v2/cache-managers/default/health/status"))
+ .withInterval(10000000000L).withTimeout(10000000000L).withStartPeriod(10000000000L).withRetries(30);
+
+ createContainer(INFINISPAN_CONTAINER_NAME, infinispanImage,
+ List.of("USER=" + infinispanUsername, "PASS=" + infinispanPassword),
+ infinispanPort, true, healthCheck, Map.of()
+ );
+ startContainer(INFINISPAN_CONTAINER_NAME);
+ LOGGER.info("Infinispan is started");
+ } catch (Exception e) {
+ LOGGER.error(e.getMessage());
+ }
+ }
+
+ public void collectContainersStats() {
getDockerClient().listContainersCmd().exec().forEach(container -> {
Statistics stats = getContainerStats(container.getId());
@@ -61,7 +106,7 @@ public class DockerService {
"memory", memoryUsage + " / " + memoryLimit,
"cpu", formatCpu(name, stats)
);
-// eventBus.publish(ADDRESS_CONTAINER_STATS, data);
+ eventBus.publish(CONTAINER_STATS, data);
});
}
@@ -69,6 +114,10 @@ public class DockerService {
getDockerClient().eventsCmd().exec(dockerEventListener);
}
+ public void stopListeners() throws IOException {
+ dockerEventListener.close();
+ }
+
public void createNetwork() {
if (!getDockerClient().listNetworksCmd().exec().stream()
.filter(n -> n.getName().equals(NETWORK_NAME))
@@ -84,13 +133,13 @@ public class DockerService {
}
}
- public void checkDataGridHealth() {
+ public void checkInfinispanHealth() {
getDockerClient().listContainersCmd().exec().stream()
.filter(c -> c.getState().equals("running"))
.forEach(c -> {
HealthState hs = getDockerClient().inspectContainerCmd(c.getId()).exec().getState().getHealth();
- if (c.getNames()[0].equals("/" + InfinispanContainer.INFINISPAN_CONTAINER_NAME)) {
-// eventBus.publish(ADDRESS_INFINISPAN_HEALTH, hs.getStatus());
+ if (c.getNames()[0].equals("/" + INFINISPAN_CONTAINER_NAME)) {
+ eventBus.publish(INFINISPAN_HEALTH, hs.getStatus());
}
});
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/InfinispanContainer.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/InfinispanContainer.java
deleted file mode 100644
index dd7b596c..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/docker/InfinispanContainer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.apache.camel.karavan.docker;
-
-import com.github.dockerjava.api.model.HealthCheck;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
-import org.jboss.logging.Logger;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import java.util.List;
-import java.util.Map;
-
-@ApplicationScoped
-public class InfinispanContainer {
-
- @ConfigProperty(name = "infinispan.image")
- String infinispanImage;
- @ConfigProperty(name = "infinispan.port")
- String infinispanPort;
- @ConfigProperty(name = "infinispan.username")
- String infinispanUsername;
- @ConfigProperty(name = "infinispan.password")
- String infinispanPassword;
-
- @Inject
- DockerService dockerService;
-
- private static final Logger LOGGER = Logger.getLogger(InfinispanContainer.class.getName());
-
- public static final String INFINISPAN_CONTAINER_NAME = "infinispan";
-
- public void startInfinispan() {
- try {
- LOGGER.info("Infinispan is starting...");
-
- HealthCheck healthCheck = new HealthCheck().withTest(List.of("CMD", "curl", "-f", "http://localhost:11222/rest/v2/cache-managers/default/health/status"))
- .withInterval(10000000000L).withTimeout(10000000000L).withStartPeriod(10000000000L).withRetries(30);
-
- dockerService.createContainer(INFINISPAN_CONTAINER_NAME, infinispanImage,
- List.of("USER=" + infinispanUsername, "PASS=" + infinispanPassword),
- infinispanPort, true, healthCheck, Map.of()
- );
- dockerService.startContainer(INFINISPAN_CONTAINER_NAME);
- LOGGER.info("Infinispan is started");
- } catch (Exception e) {
- LOGGER.error(e.getMessage());
- }
- }
-}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/health/KaravanLiveness.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/health/KaravanLiveness.java
deleted file mode 100644
index e08c3ad6..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/health/KaravanLiveness.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.camel.karavan.health;
-
-import org.eclipse.microprofile.health.HealthCheck;
-import org.eclipse.microprofile.health.HealthCheckResponse;
-import org.eclipse.microprofile.health.Liveness;
-
-import javax.enterprise.context.ApplicationScoped;
-
-@Liveness
-@ApplicationScoped
-public class KaravanLiveness implements HealthCheck {
-
- @Override
- public HealthCheckResponse call() {
- return HealthCheckResponse.up("Karavan in running");
- }
-}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
similarity index 84%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
index eb898981..24879223 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/DatagridService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/InfinispanService.java
@@ -14,14 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.karavan.datagrid;
+package org.apache.camel.karavan.infinispan;
-import io.quarkus.vertx.ConsumeEvent;
import io.smallrye.mutiny.tuples.Tuple2;
import io.vertx.core.eventbus.EventBus;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.model.*;
+import org.apache.camel.karavan.infinispan.model.*;
import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.eclipse.microprofile.faulttolerance.Fallback;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.Search;
@@ -48,12 +47,7 @@ import static org.infinispan.query.remote.client.ProtobufMetadataManagerConstant
@Default
@ApplicationScoped
-public class DatagridService {
-
- public static final String ADDRESS_DEVMODE_COMMAND = "ADDRESS_DEVMODE_COMMAND";
- public static final String ADDRESS_DEVMODE_STATUS = "ADDRESS_DEVMODE_STATUS";
- protected static final String ADDRESS_DEVMODE_COMMAND_INTERNAL = "ADDRESS_DEVMODE_COMMAND_INTERNAL";
- protected static final String ADDRESS_DEVMODE_STATUS_INTERNAL = "ADDRESS_DEVMODE_STATUS_INTERNAL";
+public class InfinispanService {
@ConfigProperty(name ="infinispan.hosts")
String infinispanHosts;
@@ -69,11 +63,9 @@ public class DatagridService {
private RemoteCache<GroupedKey, PodStatus> podStatuses;
private RemoteCache<GroupedKey, ServiceStatus> serviceStatuses;
private RemoteCache<GroupedKey, CamelStatus> camelStatuses;
- private RemoteCache<String, Environment> environments;
private RemoteCache<String, String> commits;
private RemoteCache<GroupedKey, DevModeStatus> devmodeStatuses;
private RemoteCache<GroupedKey, ContainerInfo> containers;
- private RemoteCache<GroupedKey, DevModeCommand> devmodeCommands;
private final AtomicBoolean ready = new AtomicBoolean(false);
private RemoteCacheManager cacheManager;
@@ -81,12 +73,12 @@ public class DatagridService {
@Inject
EventBus eventBus;
- private static final Logger LOGGER = Logger.getLogger(DatagridService.class.getName());
+ private static final Logger LOGGER = Logger.getLogger(InfinispanService.class.getName());
private static final String DEFAULT_ENVIRONMENT = "dev";
public void start() {
- LOGGER.info("DatagridService is starting in remote mode");
+ LOGGER.info("InfinispanService is starting in remote mode");
ProtoStreamMarshaller marshaller = new ProtoStreamMarshaller();
marshaller.register(new KaravanSchemaImpl());
@@ -104,7 +96,6 @@ public class DatagridService {
cacheManager = new RemoteCacheManager(builder.build());
- environments = getOrCreateCache(Environment.CACHE, false);
projects = getOrCreateCache(Project.CACHE, false);
files = getOrCreateCache(ProjectFile.CACHE, false);
podStatuses = getOrCreateCache(PodStatus.CACHE, false);
@@ -116,15 +107,12 @@ public class DatagridService {
deploymentStatuses = getOrCreateCache(DeploymentStatus.CACHE, false);
devmodeStatuses = getOrCreateCache(DevModeStatus.CACHE, false);
containers = getOrCreateCache(ContainerInfo.CACHE, false);
- devmodeCommands = getOrCreateCache(DevModeCommand.CACHE, true);
- cacheManager.getCache(DevModeCommand.CACHE).addClientListener(new DevModeCommandListener(eventBus));
- cacheManager.getCache(DevModeStatus.CACHE).addClientListener(new DevModeStatusListener(eventBus));
// Grab the generated protobuf schema and registers in the server.
cacheManager.getCache(PROTOBUF_METADATA_CACHE_NAME).put("karavan.proto", getResourceFile("/proto/karavan.proto"));
ready.set(true);
- LOGGER.info("DatagridService is started in remote mode");
+ LOGGER.info("InfinispanService is started in remote mode");
}
public boolean isReady() {
@@ -136,20 +124,6 @@ public class DatagridService {
return cacheManager.administration().getOrCreateCache(name, new StringConfiguration(String.format(config, name)));
}
- @ConsumeEvent(value = ADDRESS_DEVMODE_COMMAND_INTERNAL, blocking = true, ordered = true, local = false)
- void sendCommand(JsonObject message) {
- GroupedKey key = message.mapTo(GroupedKey.class);
- DevModeCommand command = getDevModeCommand(key);
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_COMMAND, JsonObject.mapFrom(command));
- }
-
- @ConsumeEvent(value = ADDRESS_DEVMODE_STATUS_INTERNAL, blocking = true, ordered = true, local = false)
- void sendStatus(JsonObject message) {
- GroupedKey key = message.mapTo(GroupedKey.class);
- DevModeStatus status = devmodeStatuses.get(key);
- eventBus.publish(DatagridService.ADDRESS_DEVMODE_STATUS, JsonObject.mapFrom(status));
- }
-
public List<Project> getProjects() {
return projects.values().stream().collect(Collectors.toList());
}
@@ -333,14 +307,6 @@ public class DatagridService {
});
}
- public List<Environment> getEnvironments() {
- return new ArrayList<>(environments.values());
- }
-
- public void saveEnvironment(Environment environment) {
- environments.put(environment.getName(), environment);
- }
-
public void saveCommit(String commitId, int time) {
commits.put(commitId, String.valueOf(time));
}
@@ -381,18 +347,6 @@ public class DatagridService {
return new ArrayList<>(devmodeStatuses.values());
}
- public void sendDevModeCommand(DevModeCommand command) {
- devmodeCommands.put(GroupedKey.create(command.getContainerName(), DEFAULT_ENVIRONMENT, command.getTime().toString()), command);
- }
-
- public DevModeCommand getDevModeCommand(GroupedKey key) {
- return devmodeCommands.get(key);
- }
-
- public void deleteDevModeCommand(DevModeCommand command) {
- containers.remove(GroupedKey.create(command.getContainerName(), DEFAULT_ENVIRONMENT, command.getTime().toString()));
- }
-
public void saveContainerInfo(ContainerInfo ci) {
containers.put(GroupedKey.create(ci.getContainerName(), ci.getEnv() != null ? ci.getEnv() : DEFAULT_ENVIRONMENT, ci.getContainerName()), ci);
}
@@ -418,14 +372,13 @@ public class DatagridService {
podStatuses.clearAsync(),
pipelineStatuses.clearAsync(),
camelStatuses.clearAsync(),
- devmodeCommands.clearAsync(),
devmodeStatuses.clearAsync()
).join();
}
private String getResourceFile(String path) {
try {
- InputStream inputStream = DatagridService.class.getResourceAsStream(path);
+ InputStream inputStream = InfinispanService.class.getResourceAsStream(path);
return new BufferedReader(new InputStreamReader(inputStream))
.lines().collect(Collectors.joining(System.getProperty("line.separator")));
} catch (Exception e) {
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
similarity index 96%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
index cf58dca9..382a29d8 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatusName.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusName.java
similarity index 92%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatusName.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusName.java
index 681558a3..502446c3 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CamelStatusName.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CamelStatusName.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoEnumValue;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CommitInfo.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CommitInfo.java
similarity index 95%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CommitInfo.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CommitInfo.java
index eec06683..b7ee2075 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/CommitInfo.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/CommitInfo.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import java.util.List;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ContainerInfo.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerInfo.java
similarity index 96%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ContainerInfo.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerInfo.java
index c23dcd16..985e70b3 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ContainerInfo.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ContainerInfo.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DeploymentStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
similarity index 98%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DeploymentStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
index a0af1d46..95e35d67 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DeploymentStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DeploymentStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DevModeStatus.java
similarity index 95%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DevModeStatus.java
index cae45fbb..c45208d3 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/DevModeStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/DevModeStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
@@ -33,6 +33,9 @@ public class DevModeStatus {
this.logging = false;
}
+ public DevModeStatus() {
+ }
+
public String getProjectId() {
return projectId;
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitConfig.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitConfig.java
similarity index 94%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitConfig.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitConfig.java
index 7d078e3f..285c8017 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitConfig.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitConfig.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
public class GitConfig {
private String uri;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepo.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepo.java
similarity index 95%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepo.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepo.java
index aab289c6..4736814f 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepo.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepo.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import java.util.List;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepoFile.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepoFile.java
similarity index 93%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepoFile.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepoFile.java
index 8f8db5dc..a1186efe 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GitRepoFile.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GitRepoFile.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
public class GitRepoFile {
private String name;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GroupedKey.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
similarity index 97%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GroupedKey.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
index ae06b8e9..1f1632ca 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/GroupedKey.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/GroupedKey.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
similarity index 78%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
index 22d5e741..4176d04f 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/KaravanSchema.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/KaravanSchema.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.GeneratedSchema;
import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;
@@ -12,12 +12,8 @@ import org.infinispan.protostream.annotations.AutoProtoSchemaBuilder;
CamelStatus.class,
DeploymentStatus.class,
PodStatus.class,
- Environment.class,
ServiceStatus.class,
- DevModeCommandName.class,
- DevModeCommandType.class,
CamelStatusName.class,
- DevModeCommand.class,
DevModeStatus.class,
ContainerInfo.class
},
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PipelineStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PipelineStatus.java
similarity index 97%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PipelineStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PipelineStatus.java
index 70d29ac8..fd0831d0 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PipelineStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PipelineStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PodStatus.java
similarity index 98%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PodStatus.java
index c1ee17e8..f7aaa40e 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/PodStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/PodStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Project.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
similarity index 97%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Project.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
index ae366f07..92e06f90 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/Project.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/Project.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
similarity index 97%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
index 853be3a6..14cc3adf 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ProjectFile.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ProjectFile.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoDoc;
import org.infinispan.protostream.annotations.ProtoFactory;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ServiceStatus.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
similarity index 97%
rename from karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ServiceStatus.java
rename to karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
index 07316505..9ce1d073 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/datagrid/model/ServiceStatus.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/infinispan/model/ServiceStatus.java
@@ -1,4 +1,4 @@
-package org.apache.camel.karavan.datagrid.model;
+package org.apache.camel.karavan.infinispan.model;
import org.infinispan.protostream.annotations.ProtoFactory;
import org.infinispan.protostream.annotations.ProtoField;
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
index a94b121e..cca7c4f4 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/DeploymentEventHandler.java
@@ -2,18 +2,18 @@ package org.apache.camel.karavan.kubernetes;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.DeploymentStatus;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.DeploymentStatus;
import org.jboss.logging.Logger;
public class DeploymentEventHandler implements ResourceEventHandler<Deployment> {
private static final Logger LOGGER = Logger.getLogger(DeploymentEventHandler.class.getName());
- private final DatagridService datagridService;
+ private final InfinispanService infinispanService;
private final KubernetesService kubernetesService;
- public DeploymentEventHandler(DatagridService datagridService, KubernetesService kubernetesService) {
- this.datagridService = datagridService;
+ public DeploymentEventHandler(InfinispanService infinispanService, KubernetesService kubernetesService) {
+ this.infinispanService = infinispanService;
this.kubernetesService = kubernetesService;
}
@@ -22,7 +22,7 @@ public class DeploymentEventHandler implements ResourceEventHandler<Deployment>
try {
LOGGER.info("onAdd " + deployment.getMetadata().getName());
DeploymentStatus ds = getDeploymentStatus(deployment);
- datagridService.saveDeploymentStatus(ds);
+ infinispanService.saveDeploymentStatus(ds);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -33,7 +33,7 @@ public class DeploymentEventHandler implements ResourceEventHandler<Deployment>
try {
LOGGER.info("onUpdate " + newDeployment.getMetadata().getName());
DeploymentStatus ds = getDeploymentStatus(newDeployment);
- datagridService.saveDeploymentStatus(ds);
+ infinispanService.saveDeploymentStatus(ds);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -48,8 +48,8 @@ public class DeploymentEventHandler implements ResourceEventHandler<Deployment>
deployment.getMetadata().getNamespace(),
kubernetesService.getCluster(),
kubernetesService.environment);
- datagridService.deleteDeploymentStatus(ds);
- datagridService.deleteCamelStatuses(deployment.getMetadata().getName(), ds.getEnv());
+ infinispanService.deleteDeploymentStatus(ds);
+ infinispanService.deleteCamelStatuses(deployment.getMetadata().getName(), ds.getEnv());
} catch (Exception e){
LOGGER.error(e.getMessage());
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
index 8ded5a49..dc6fb90f 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/KubernetesService.java
@@ -27,12 +27,12 @@ import io.fabric8.openshift.api.model.ImageStream;
import io.fabric8.openshift.client.OpenShiftClient;
import io.fabric8.tekton.client.DefaultTektonClient;
import io.fabric8.tekton.pipeline.v1beta1.*;
-import io.quarkus.vertx.ConsumeEvent;
import io.vertx.mutiny.core.eventbus.EventBus;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.service.CodeService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
@@ -54,8 +54,6 @@ import static org.apache.camel.karavan.service.CodeService.APPLICATION_PROPERTIE
public class KubernetesService implements HealthCheck {
private static final Logger LOGGER = Logger.getLogger(KubernetesService.class.getName());
- public static final String START_INFORMERS = "start-informers";
- public static final String STOP_INFORMERS = "stop-informers";
public static final int INFORMERS = 4;
private static final String CAMEL_PREFIX = "camel";
private static final String KARAVAN_PREFIX = "karavan";
@@ -67,7 +65,7 @@ public class KubernetesService implements HealthCheck {
EventBus eventBus;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Produces
public KubernetesClient kubernetesClient() {
@@ -95,30 +93,29 @@ public class KubernetesService implements HealthCheck {
List<SharedIndexInformer> informers = new ArrayList<>(INFORMERS);
- @ConsumeEvent(value = START_INFORMERS, blocking = true)
- void startInformers(String data) {
+ public void startInformers(String data) {
try {
stopInformers(null);
LOGGER.info("Starting Kubernetes Informers");
SharedIndexInformer<Deployment> deploymentInformer = kubernetesClient().apps().deployments().inNamespace(getNamespace())
.withLabels(getRuntimeLabels()).inform();
- deploymentInformer.addEventHandlerWithResyncPeriod(new DeploymentEventHandler(datagridService, this), 30 * 1000L);
+ deploymentInformer.addEventHandlerWithResyncPeriod(new DeploymentEventHandler(infinispanService, this), 30 * 1000L);
informers.add(deploymentInformer);
SharedIndexInformer<Service> serviceInformer = kubernetesClient().services().inNamespace(getNamespace())
.withLabels(getRuntimeLabels()).inform();
- serviceInformer.addEventHandlerWithResyncPeriod(new ServiceEventHandler(datagridService, this), 30 * 1000L);
+ serviceInformer.addEventHandlerWithResyncPeriod(new ServiceEventHandler(infinispanService, this), 30 * 1000L);
informers.add(serviceInformer);
SharedIndexInformer<PipelineRun> pipelineRunInformer = tektonClient().v1beta1().pipelineRuns().inNamespace(getNamespace())
.withLabels(getRuntimeLabels()).inform();
- pipelineRunInformer.addEventHandlerWithResyncPeriod(new PipelineRunEventHandler(datagridService, this), 30 * 1000L);
+ pipelineRunInformer.addEventHandlerWithResyncPeriod(new PipelineRunEventHandler(infinispanService, this), 30 * 1000L);
informers.add(pipelineRunInformer);
SharedIndexInformer<Pod> podRunInformer = kubernetesClient().pods().inNamespace(getNamespace())
.withLabels(getRuntimeLabels()).inform();
- podRunInformer.addEventHandlerWithResyncPeriod(new PodEventHandler(datagridService, this), 30 * 1000L);
+ podRunInformer.addEventHandlerWithResyncPeriod(new PodEventHandler(infinispanService, this), 30 * 1000L);
informers.add(podRunInformer);
LOGGER.info("Started Kubernetes Informers");
@@ -130,7 +127,7 @@ public class KubernetesService implements HealthCheck {
@Override
public HealthCheckResponse call() {
- if (inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
if (informers.size() == INFORMERS) {
return HealthCheckResponse.up("All Kubernetes informers are running.");
} else {
@@ -141,8 +138,7 @@ public class KubernetesService implements HealthCheck {
}
}
- @ConsumeEvent(value = STOP_INFORMERS, blocking = true)
- void stopInformers(String data) {
+ public void stopInformers(String data) {
LOGGER.info("Stop Kubernetes Informers");
informers.forEach(SharedIndexInformer::close);
informers.clear();
@@ -389,11 +385,11 @@ public class KubernetesService implements HealthCheck {
return result;
}
- public String tryCreateRunner(Project project, String runnerName, String jBangOptions) {
+ public void createRunner(Project project, String runnerName, String jBangOptions) {
createPVC(runnerName);
Pod old = kubernetesClient().pods().inNamespace(getNamespace()).withName(runnerName).get();
if (old == null) {
- ProjectFile properties = datagridService.getProjectFile(project.getProjectId(), APPLICATION_PROPERTIES_FILENAME);
+ ProjectFile properties = infinispanService.getProjectFile(project.getProjectId(), APPLICATION_PROPERTIES_FILENAME);
Map<String, String> containerResources = CodeService
.getRunnerContainerResourcesMap(properties, isOpenshift(), project.getRuntime().equals("quarkus"));
Pod pod = getRunnerPod(project.getProjectId(), runnerName, jBangOptions, containerResources);
@@ -401,7 +397,6 @@ public class KubernetesService implements HealthCheck {
LOGGER.info("Created pod " + result.getMetadata().getName());
}
createService(runnerName);
- return runnerName;
}
public void deleteRunner(String name, boolean deletePVC) {
@@ -542,7 +537,7 @@ public class KubernetesService implements HealthCheck {
}
public boolean isOpenshift() {
- return inKubernetes() ? kubernetesClient().isAdaptable(OpenShiftClient.class) : false;
+ return ConfigService.inKubernetes() ? kubernetesClient().isAdaptable(OpenShiftClient.class) : false;
}
public String getCluster() {
@@ -553,8 +548,4 @@ public class KubernetesService implements HealthCheck {
return currentNamespace;
}
- public boolean inKubernetes() {
- return Objects.nonNull(System.getenv("KUBERNETES_SERVICE_HOST"));
- }
-
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PipelineRunEventHandler.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PipelineRunEventHandler.java
index 441e019c..9dcf5c1f 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PipelineRunEventHandler.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PipelineRunEventHandler.java
@@ -2,9 +2,9 @@ package org.apache.camel.karavan.kubernetes;
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
import io.fabric8.tekton.pipeline.v1beta1.PipelineRun;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.PipelineStatus;
-import org.apache.camel.karavan.datagrid.model.Project;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.PipelineStatus;
+import org.apache.camel.karavan.infinispan.model.Project;
import org.jboss.logging.Logger;
import java.time.Instant;
@@ -12,11 +12,11 @@ import java.time.Instant;
public class PipelineRunEventHandler implements ResourceEventHandler<PipelineRun> {
private static final Logger LOGGER = Logger.getLogger(PipelineRunEventHandler.class.getName());
- private DatagridService datagridService;
+ private InfinispanService infinispanService;
private KubernetesService kubernetesService;
- public PipelineRunEventHandler(DatagridService datagridService, KubernetesService kubernetesService) {
- this.datagridService = datagridService;
+ public PipelineRunEventHandler(InfinispanService infinispanService, KubernetesService kubernetesService) {
+ this.infinispanService = infinispanService;
this.kubernetesService = kubernetesService;
}
@@ -25,7 +25,7 @@ public class PipelineRunEventHandler implements ResourceEventHandler<PipelineRun
try {
LOGGER.info("onAdd " + pipelineRun.getMetadata().getName());
PipelineStatus ps = getPipelineStatus(pipelineRun);
- if (ps != null) datagridService.savePipelineStatus(ps);
+ if (ps != null) infinispanService.savePipelineStatus(ps);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -36,7 +36,7 @@ public class PipelineRunEventHandler implements ResourceEventHandler<PipelineRun
try {
LOGGER.info("onUpdate " + newPipelineRun.getMetadata().getName());
PipelineStatus ps = getPipelineStatus(newPipelineRun);
- if (ps != null) datagridService.savePipelineStatus(ps);
+ if (ps != null) infinispanService.savePipelineStatus(ps);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -48,10 +48,10 @@ public class PipelineRunEventHandler implements ResourceEventHandler<PipelineRun
LOGGER.info("onDelete " + pipelineRun.getMetadata().getName());
String projectId = pipelineRun.getMetadata().getLabels().get("karavan-project-id");
if (projectId != null) {
- Project project = datagridService.getProject(projectId);
+ Project project = infinispanService.getProject(projectId);
if (project != null) {
PipelineStatus ps = new PipelineStatus(project.getProjectId(), kubernetesService.environment);
- datagridService.deletePipelineStatus(ps);
+ infinispanService.deletePipelineStatus(ps);
}
}
} catch (Exception e){
@@ -62,7 +62,7 @@ public class PipelineRunEventHandler implements ResourceEventHandler<PipelineRun
public PipelineStatus getPipelineStatus( PipelineRun pipelineRun) {
String projectId = pipelineRun.getMetadata().getLabels().get("karavan-project-id");
if (projectId != null) {
- Project project = datagridService.getProject(projectId);
+ Project project = infinispanService.getProject(projectId);
if (project != null) {
PipelineStatus pipelineStatus = new PipelineStatus(project.getProjectId(), kubernetesService.environment);
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
index ab4aad86..3c0e6f84 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java
@@ -5,21 +5,21 @@ import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.Quantity;
import io.fabric8.kubernetes.api.model.ResourceRequirements;
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.PodStatus;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
import org.jboss.logging.Logger;
import static org.apache.camel.karavan.service.CodeService.DEFAULT_CONTAINER_RESOURCES;
-import static org.apache.camel.karavan.service.CamelService.DEVMODE_SUFFIX;
+import static org.apache.camel.karavan.shared.ConfigService.DEVMODE_SUFFIX;
public class PodEventHandler implements ResourceEventHandler<Pod> {
private static final Logger LOGGER = Logger.getLogger(PodEventHandler.class.getName());
- private final DatagridService datagridService;
+ private final InfinispanService infinispanService;
private final KubernetesService kubernetesService;
- public PodEventHandler(DatagridService datagridService, KubernetesService kubernetesService) {
- this.datagridService = datagridService;
+ public PodEventHandler(InfinispanService infinispanService, KubernetesService kubernetesService) {
+ this.infinispanService = infinispanService;
this.kubernetesService = kubernetesService;
}
@@ -28,7 +28,7 @@ public class PodEventHandler implements ResourceEventHandler<Pod> {
try {
LOGGER.info("onAdd " + pod.getMetadata().getName());
PodStatus ps = getPodStatus(pod);
- datagridService.savePodStatus(ps);
+ infinispanService.savePodStatus(ps);
} catch (Exception e){
LOGGER.error(e.getMessage(), e.getCause());
}
@@ -39,7 +39,7 @@ public class PodEventHandler implements ResourceEventHandler<Pod> {
try {
LOGGER.info("onUpdate " + newPod.getMetadata().getName());
PodStatus ps = getPodStatus(newPod);
- datagridService.savePodStatus(ps);
+ infinispanService.savePodStatus(ps);
} catch (Exception e){
LOGGER.error(e.getMessage(), e.getCause());
}
@@ -51,7 +51,7 @@ public class PodEventHandler implements ResourceEventHandler<Pod> {
LOGGER.info("onDelete " + pod.getMetadata().getName());
String deployment = pod.getMetadata().getLabels().get("app");
String projectId = deployment != null ? deployment : pod.getMetadata().getLabels().get("karavan/projectId");
- datagridService.deletePodStatus(projectId, kubernetesService.environment, pod.getMetadata().getName());
+ infinispanService.deletePodStatus(projectId, kubernetesService.environment, pod.getMetadata().getName());
} catch (Exception e){
LOGGER.error(e.getMessage(), e.getCause());
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
index 01c97b9c..9be837ee 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/ServiceEventHandler.java
@@ -2,18 +2,18 @@ package org.apache.camel.karavan.kubernetes;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.ServiceStatus;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.ServiceStatus;
import org.jboss.logging.Logger;
public class ServiceEventHandler implements ResourceEventHandler<Service> {
private static final Logger LOGGER = Logger.getLogger(ServiceEventHandler.class.getName());
- private DatagridService datagridService;
+ private InfinispanService infinispanService;
private KubernetesService kubernetesService;
- public ServiceEventHandler(DatagridService datagridService, KubernetesService kubernetesService) {
- this.datagridService = datagridService;
+ public ServiceEventHandler(InfinispanService infinispanService, KubernetesService kubernetesService) {
+ this.infinispanService = infinispanService;
this.kubernetesService = kubernetesService;
}
@@ -22,7 +22,7 @@ public class ServiceEventHandler implements ResourceEventHandler<Service> {
try {
LOGGER.info("onAdd " + service.getMetadata().getName());
ServiceStatus ds = getServiceStatus(service);
- datagridService.saveServiceStatus(ds);
+ infinispanService.saveServiceStatus(ds);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -33,7 +33,7 @@ public class ServiceEventHandler implements ResourceEventHandler<Service> {
try {
LOGGER.info("onUpdate " + newService.getMetadata().getName());
ServiceStatus ds = getServiceStatus(newService);
- datagridService.saveServiceStatus(ds);
+ infinispanService.saveServiceStatus(ds);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
@@ -48,7 +48,7 @@ public class ServiceEventHandler implements ResourceEventHandler<Service> {
service.getMetadata().getNamespace(),
kubernetesService.getCluster(),
kubernetesService.environment);
- datagridService.deleteServiceStatus(ds);
+ infinispanService.deleteServiceStatus(ds);
} catch (Exception e){
LOGGER.error(e.getMessage());
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeCommandListener.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeCommandListener.java
deleted file mode 100644
index 152ebe52..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeCommandListener.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.camel.karavan.listener;
-
-import io.quarkus.vertx.ConsumeEvent;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.DevModeCommand;
-import org.apache.camel.karavan.datagrid.model.DevModeCommandName;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.kubernetes.KubernetesService;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-import java.util.Objects;
-
-import static org.apache.camel.karavan.service.CamelService.DEVMODE_SUFFIX;
-
-@ApplicationScoped
-public class DevModeCommandListener {
-
- @ConfigProperty(name = "karavan.environment")
- String environment;
-
- @Inject
- DatagridService datagridService;
-
- @Inject
- KubernetesService kubernetesService;
-
- @ConsumeEvent(value = DatagridService.ADDRESS_DEVMODE_COMMAND, blocking = true, ordered = true)
- void receiveCommand(JsonObject message) {
- System.out.println("receiveCommand " + message);
- if (kubernetesService.inKubernetes()) {
- DevModeCommand command = message.mapTo(DevModeCommand.class);
- String runnerName = command.getProjectId() + "-" + DEVMODE_SUFFIX;
- if (Objects.equals(command.getCommandName(), DevModeCommandName.RUN)) {
- Project p = datagridService.getProject(command.getProjectId());
- kubernetesService.tryCreateRunner(p, runnerName, "");
- } else if (Objects.equals(command.getCommandName(), DevModeCommandName.DELETE)){
- kubernetesService.deleteRunner(runnerName, false);
- datagridService.deleteDevModeStatus(command.getProjectId());
- }
- }
- }
-}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeStatusListener.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeStatusListener.java
deleted file mode 100644
index d8930a39..00000000
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/listener/DevModeStatusListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.camel.karavan.listener;
-
-import io.quarkus.vertx.ConsumeEvent;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.DevModeStatus;
-import org.apache.camel.karavan.service.CamelService;
-import org.jboss.logging.Logger;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-
-@ApplicationScoped
-public class DevModeStatusListener {
-
- private static final Logger LOGGER = Logger.getLogger(DevModeStatusListener.class.getName());
-
- @Inject
- CamelService camelService;
-
- @ConsumeEvent(value = DatagridService.ADDRESS_DEVMODE_STATUS, blocking = true, ordered = true)
- void receiveCommand(JsonObject message) {
- LOGGER.info("received Status " + message);
- DevModeStatus status = message.mapTo(DevModeStatus.class);
- if (!status.getCodeLoaded() && status.getContainerId() != null) {
- camelService.reloadProjectCode(status.getProjectId());
- }
- }
-}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
index c8cca2b9..70d988d6 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.karavan.service;
-import io.quarkus.scheduler.Scheduled;
import io.quarkus.vertx.ConsumeEvent;
import io.vertx.core.json.JsonObject;
import io.vertx.mutiny.core.Vertx;
@@ -24,9 +23,13 @@ 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.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.*;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.CamelStatus;
+import org.apache.camel.karavan.infinispan.model.CamelStatusName;
+import org.apache.camel.karavan.infinispan.model.DevModeStatus;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
import org.apache.camel.karavan.kubernetes.KubernetesService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.eclipse.microprofile.faulttolerance.CircuitBreaker;
import org.jboss.logging.Logger;
@@ -37,16 +40,17 @@ import java.util.Arrays;
import java.util.Objects;
import java.util.concurrent.ExecutionException;
+import static org.apache.camel.karavan.shared.ConfigService.DEVMODE_SUFFIX;
+
@ApplicationScoped
public class CamelService {
private static final Logger LOGGER = Logger.getLogger(CamelService.class.getName());
public static final String CMD_COLLECT_CAMEL_STATUS = "collect-camel-status";
public static final String CMD_DELETE_CAMEL_STATUS = "delete-camel-status";
- public static final String DEVMODE_SUFFIX = "devmode";
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
KubernetesService kubernetesService;
@@ -73,11 +77,11 @@ public class CamelService {
LOGGER.info("Reload project code " + projectId);
String containerName = projectId + "-" + DEVMODE_SUFFIX;
try {
- datagridService.getProjectFiles(projectId).forEach(projectFile -> putRequest(containerName, projectFile.getName(), projectFile.getCode(), 1000));
+ infinispanService.getProjectFiles(projectId).forEach(projectFile -> putRequest(containerName, projectFile.getName(), projectFile.getCode(), 1000));
reloadRequest(containerName);
- DevModeStatus dms = datagridService.getDevModeStatus(projectId);
+ DevModeStatus dms = infinispanService.getDevModeStatus(projectId);
dms.setCodeLoaded(true);
- datagridService.saveDevModeStatus(dms);
+ infinispanService.saveDevModeStatus(dms);
} catch (Exception ex) {
LOGGER.error(ex.getMessage());
}
@@ -107,27 +111,25 @@ public class CamelService {
}
public String getContainerAddress(String containerName) {
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
return "http://" + containerName + "." + kubernetesService.getNamespace() + ".svc.cluster.local";
} else {
return "http://" + containerName + ":8080";
}
}
- @Scheduled(every = "{karavan.devmode-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
- void collectDevModeStatuses() {
- if (datagridService.isReady()) {
- datagridService.getDevModeStatuses().forEach(dms -> {
+ public void collectDevModeStatuses() {
+ if (infinispanService.isReady()) {
+ infinispanService.getDevModeStatuses().forEach(dms -> {
CamelStatusRequest csr = new CamelStatusRequest(dms.getProjectId(), dms.getContainerName());
eventBus.publish(CMD_COLLECT_CAMEL_STATUS, JsonObject.mapFrom(csr));
});
}
}
- @Scheduled(every = "{karavan.camel-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
- void collectNonDevModeStatuses() {
- if (datagridService.isReady()) {
- datagridService.getPodStatuses(environment).forEach(pod -> {
+ public void collectNonDevModeStatuses() {
+ if (infinispanService.isReady()) {
+ infinispanService.getPodStatuses(environment).forEach(pod -> {
CamelStatusRequest csr = new CamelStatusRequest(pod.getProjectId(), pod.getName());
eventBus.publish(CMD_COLLECT_CAMEL_STATUS, JsonObject.mapFrom(csr));
});
@@ -142,16 +144,15 @@ public class CamelService {
String status = getCamelStatus(containerName, statusName);
if (status != null) {
CamelStatus cs = new CamelStatus(dms.getProjectId(), containerName, statusName, status, environment);
- datagridService.saveCamelStatus(cs);
+ infinispanService.saveCamelStatus(cs);
}
});
}
- @Scheduled(every = "{karavan.devmode-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
- void cleanupDevModeStatuses() {
- if (datagridService.isReady()) {
- datagridService.getDevModeStatuses().forEach(dms -> {
- PodStatus pod = datagridService.getDevModePodStatuses(dms.getProjectId(), environment);
+ public void cleanupDevModeStatuses() {
+ if (infinispanService.isReady()) {
+ infinispanService.getDevModeStatuses().forEach(dms -> {
+ PodStatus pod = infinispanService.getDevModePodStatuses(dms.getProjectId(), environment);
if (pod == null) {
eventBus.publish(CMD_DELETE_CAMEL_STATUS, JsonObject.mapFrom(dms));
}
@@ -163,7 +164,7 @@ public class CamelService {
public void cleanupDevModeStatus(JsonObject data) {
DevModeStatus dms = data.mapTo(DevModeStatus.class);
Arrays.stream(CamelStatusName.values()).forEach(name -> {
- datagridService.deleteCamelStatus(dms.getProjectId(), name.name(), environment);
+ infinispanService.deleteCamelStatus(dms.getProjectId(), name.name(), environment);
});
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CodeService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CodeService.java
index 261bad1f..1c1e902b 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CodeService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/CodeService.java
@@ -26,11 +26,11 @@ import org.apache.camel.CamelContext;
import org.apache.camel.generator.openapi.RestDslGenerator;
import org.apache.camel.impl.lw.LightweightCamelContext;
import org.apache.camel.karavan.api.KameletResources;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.GitRepo;
-import org.apache.camel.karavan.datagrid.model.GitRepoFile;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.GitRepo;
+import org.apache.camel.karavan.infinispan.model.GitRepoFile;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.kubernetes.KubernetesService;
import org.jboss.logging.Logger;
import org.yaml.snakeyaml.Yaml;
@@ -56,7 +56,7 @@ public class CodeService {
KubernetesService kubernetesService;
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
Engine engine;
@@ -88,7 +88,7 @@ public class CodeService {
private String getTemplateText(String fileName) {
try {
- List<ProjectFile> files = datagridService.getProjectFiles(Project.NAME_TEMPLATES);
+ List<ProjectFile> files = infinispanService.getProjectFiles(Project.NAME_TEMPLATES);
return files.stream().filter(f -> f.getName().equalsIgnoreCase(fileName))
.map(ProjectFile::getCode).findFirst().orElse(null);
} catch (Exception e) {
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
new file mode 100644
index 00000000..64ef9255
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java
@@ -0,0 +1,120 @@
+package org.apache.camel.karavan.service;
+
+import io.quarkus.vertx.ConsumeEvent;
+import io.vertx.core.eventbus.EventBus;
+import io.vertx.core.json.JsonObject;
+import org.apache.camel.karavan.docker.DockerService;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.DevModeStatus;
+import org.apache.camel.karavan.infinispan.model.PodStatus;
+import org.apache.camel.karavan.kubernetes.KubernetesService;
+import org.apache.camel.karavan.shared.ConfigService;
+import org.apache.camel.karavan.shared.EventType;
+import org.jboss.logging.Logger;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import java.io.IOException;
+
+import static org.apache.camel.karavan.shared.EventType.*;
+
+@ApplicationScoped
+public class EventService {
+
+ private static final Logger LOGGER = Logger.getLogger(EventService.class.getName());
+ private static final String HEALTHY = "healthy";
+
+ @Inject
+ InfinispanService infinispanService;
+
+ @Inject
+ KubernetesService kubernetesService;
+
+ @Inject
+ DockerService dockerService;
+
+ @Inject
+ CamelService camelService;
+
+ @Inject
+ ProjectService projectService;
+
+ @Inject
+ ConfigService configService;
+
+ @Inject
+ EventBus bus;
+
+ @ConsumeEvent(value = START_KARAVAN, blocking = true, ordered = true)
+ void startKaravan(String data) {
+ if (!ConfigService.inKubernetes()) {
+ LOGGER.info("Starting Karavan with Docker");
+ dockerService.createNetwork();
+ dockerService.checkInfinispanHealth();
+ dockerService.startListeners();
+ dockerService.startInfinispan();
+ } else {
+ LOGGER.info("Starting Karavan in " + (kubernetesService.isOpenshift() ? "OpenShift" : "Kubernetes"));
+ startServices(HEALTHY);
+ }
+ }
+
+ @ConsumeEvent(value = INFINISPAN_STARTED, blocking = true, ordered = true)
+ void startServices(String infinispanHealth){
+ if (infinispanHealth.equals(HEALTHY)) {
+ infinispanService.start();
+ infinispanService.clearAllStatuses();
+ bus.publish(EventType.IMPORT_PROJECTS, "");
+ bus.publish(EventType.START_INFRASTRUCTURE_LISTENERS, "");
+ }
+ }
+
+ @ConsumeEvent(value = START_INFRASTRUCTURE_LISTENERS, blocking = true, ordered = true)
+ void startInfrastructureListeners(String data) {
+ LOGGER.info("Start Infrastructure Listeners");
+ if (ConfigService.inKubernetes()) {
+ kubernetesService.startInformers(data);
+ } else {
+ dockerService.startListeners();
+ }
+ }
+
+ @ConsumeEvent(value = STOP_INFRASTRUCTURE_LISTENERS, blocking = true)
+ void stopInfrastructureListeners(String data) throws IOException {
+ LOGGER.info("Stop Infrastructure Listeners");
+ if (ConfigService.inKubernetes()) {
+ kubernetesService.stopInformers(data);
+ } else {
+ dockerService.stopListeners();
+ }
+ }
+
+ @ConsumeEvent(value = IMPORT_PROJECTS, blocking = true)
+ public void importProjects(String data) {
+ projectService.importProjects(data);
+ }
+
+ @ConsumeEvent(value = ADDRESS_DEVMODE_STATUS, blocking = true, ordered = true)
+ void receiveCommand(JsonObject message) {
+ LOGGER.info("received Status " + message);
+ DevModeStatus status = message.mapTo(DevModeStatus.class);
+ if (!status.getCodeLoaded() && status.getContainerId() != null) {
+ camelService.reloadProjectCode(status.getProjectId());
+ }
+ }
+
+ @ConsumeEvent(value = CONTAINER_STATS, blocking = true, ordered = true)
+ public void saveStats(JsonObject data) {
+ String projectId = data.getString("projectId");
+ String memory = data.getString("memory");
+ String cpu = data.getString("cpu");
+ if (infinispanService.isReady()) {
+ PodStatus podStatus = infinispanService.getDevModePodStatuses(projectId, configService.getConfiguration().getEnvironment());
+ if (podStatus != null) {
+ podStatus.setCpuInfo(cpu);
+ podStatus.setMemoryInfo(memory);
+ infinispanService.savePodStatus(podStatus);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
index 4135cf34..90c8b61b 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java
@@ -19,8 +19,9 @@ package org.apache.camel.karavan.service;
import io.fabric8.kubernetes.api.model.Secret;
import io.smallrye.mutiny.tuples.Tuple2;
import io.vertx.core.Vertx;
-import org.apache.camel.karavan.datagrid.model.*;
+import org.apache.camel.karavan.infinispan.model.*;
import org.apache.camel.karavan.kubernetes.KubernetesService;
+import org.apache.camel.karavan.shared.ConfigService;
import org.eclipse.jgit.api.CheckoutCommand;
import org.eclipse.jgit.api.CloneCommand;
import org.eclipse.jgit.api.FetchCommand;
@@ -132,7 +133,7 @@ public class GitService {
public GitConfig getGitConfig() {
String propertiesPrefix = "karavan.";
String branch = ConfigProvider.getConfig().getValue(propertiesPrefix + "git-branch", String.class);
- if (kubernetesService.inKubernetes()) {
+ if (ConfigService.inKubernetes()) {
LOGGER.info("inKubernetes " + kubernetesService.getNamespace());
Secret secret = kubernetesService.getKaravanSecret();
String uri = new String(Base64.getDecoder().decode(secret.getData().get("git-repository").getBytes(StandardCharsets.UTF_8)));
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
index cb97a85b..12a1c409 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
@@ -18,91 +18,32 @@ package org.apache.camel.karavan.service;
import io.quarkus.runtime.ShutdownEvent;
import io.quarkus.runtime.StartupEvent;
-import io.quarkus.vertx.ConsumeEvent;
import io.vertx.core.eventbus.EventBus;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.Environment;
-import org.apache.camel.karavan.kubernetes.KubernetesService;
-import org.apache.camel.karavan.docker.DockerService;
-import org.apache.camel.karavan.docker.InfinispanContainer;
-import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.apache.camel.karavan.shared.EventType;
import org.jboss.logging.Logger;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
+import static org.apache.camel.karavan.shared.EventType.START_KARAVAN;
+
@ApplicationScoped
public class KaravanService {
private static final Logger LOGGER = Logger.getLogger(KaravanService.class.getName());
- public static final String DEVMODE_SUFFIX = "-devmode";
-
- private static final String HEALTHY = "healthy";
-
- @Inject
- DatagridService datagridService;
-
- @Inject
- KubernetesService kubernetesService;
-
- @Inject
- DockerService dockerService;
-
- @Inject
- InfinispanContainer infinispanContainer;
-
@Inject
EventBus bus;
- @ConfigProperty(name = "karavan.environment")
- String environment;
-
void onStart(@Observes StartupEvent ev) {
- if (!kubernetesService.inKubernetes()) {
- LOGGER.info("Start Karavan with Docker");
- dockerService.createNetwork();
- dockerService.checkDataGridHealth();
- dockerService.startListeners();
- infinispanContainer.startInfinispan();
- } else {
- LOGGER.info("Start Karavan in " + (kubernetesService.isOpenshift() ? "OpenShift" : "Kubernetes"));
- startServices(HEALTHY);
- }
- }
-
- @ConsumeEvent(value = DockerService.ADDRESS_INFINISPAN_STARTED, blocking = true, ordered = true)
- void startServices(String infinispanHealth){
- if (infinispanHealth.equals(HEALTHY)) {
- datagridService.start();
- datagridService.clearAllStatuses();
- setEnvironment();
- initialImport();
- startInformers();
- }
+ LOGGER.info("Starting Karavan");
+ bus.publish(START_KARAVAN, "");
}
void onStop(@Observes ShutdownEvent ev) {
LOGGER.info("Stop Karavan");
- bus.publish(KubernetesService.STOP_INFORMERS, "");
- }
-
- void setEnvironment() {
- String cluster = kubernetesService.getCluster();
- String namespace = kubernetesService.getNamespace();
- datagridService.saveEnvironment(new Environment(environment, cluster, namespace));
- }
-
- void initialImport() {
- bus.publish(ProjectService.IMPORT_PROJECTS, "");
+ bus.publish(EventType.STOP_INFRASTRUCTURE_LISTENERS, "");
}
- void startInformers() {
- if (kubernetesService.inKubernetes()) {
- bus.publish(KubernetesService.START_INFORMERS, "");
- } else {
-
- }
- }
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index 13dbaf38..0b223eeb 100644
--- a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -19,10 +19,10 @@ package org.apache.camel.karavan.service;
import io.quarkus.scheduler.Scheduled;
import io.quarkus.vertx.ConsumeEvent;
import io.smallrye.mutiny.tuples.Tuple2;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.GitRepo;
-import org.apache.camel.karavan.datagrid.model.Project;
-import org.apache.camel.karavan.datagrid.model.ProjectFile;
+import org.apache.camel.karavan.infinispan.InfinispanService;
+import org.apache.camel.karavan.infinispan.model.GitRepo;
+import org.apache.camel.karavan.infinispan.model.Project;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
import org.apache.camel.karavan.kubernetes.KubernetesService;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -38,16 +38,17 @@ import java.time.Instant;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import static org.apache.camel.karavan.shared.EventType.IMPORT_PROJECTS;
+
@Default
@Readiness
@ApplicationScoped
public class ProjectService implements HealthCheck{
private static final Logger LOGGER = Logger.getLogger(ProjectService.class.getName());
- public static final String IMPORT_PROJECTS = "import-projects";
@Inject
- DatagridService datagridService;
+ InfinispanService infinispanService;
@Inject
KubernetesService kubernetesService;
@@ -73,20 +74,19 @@ public class ProjectService implements HealthCheck{
}
}
- @Scheduled(every = "{karavan.git-pull-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
- void pullCommits() {
+ public void pullCommits() {
if (readyToPull.get()) {
LOGGER.info("Pull commits...");
- Tuple2<String, Integer> lastCommit = datagridService.getLastCommit();
+ Tuple2<String, Integer> lastCommit = infinispanService.getLastCommit();
gitService.getCommitsAfterCommit(lastCommit.getItem2()).forEach(commitInfo -> {
- if (!datagridService.hasCommit(commitInfo.getCommitId())) {
+ if (!infinispanService.hasCommit(commitInfo.getCommitId())) {
commitInfo.getRepos().forEach(repo -> {
Project project = importProjectFromRepo(repo);
kubernetesService.createPipelineRun(project);
});
- datagridService.saveCommit(commitInfo.getCommitId(), commitInfo.getTime());
+ infinispanService.saveCommit(commitInfo.getCommitId(), commitInfo.getTime());
}
- datagridService.saveLastCommit(commitInfo.getCommitId());
+ infinispanService.saveLastCommit(commitInfo.getCommitId());
});
}
}
@@ -94,20 +94,21 @@ public class ProjectService implements HealthCheck{
void importCommits() {
LOGGER.info("Import commits...");
gitService.getAllCommits().forEach(commitInfo -> {
- datagridService.saveCommit(commitInfo.getCommitId(), commitInfo.getTime());
- datagridService.saveLastCommit(commitInfo.getCommitId());
+ infinispanService.saveCommit(commitInfo.getCommitId(), commitInfo.getTime());
+ infinispanService.saveLastCommit(commitInfo.getCommitId());
});
readyToPull.set(true);
}
@ConsumeEvent(value = IMPORT_PROJECTS, blocking = true)
- void importProjects(String data) {
- if (datagridService.getProjects().isEmpty()) {
+ public void importProjects(String data) {
+ if (infinispanService.getProjects().isEmpty()) {
importAllProjects();
}
addTemplatesProject();
importCommits();
}
+
private void importAllProjects() {
LOGGER.info("Import projects from Git");
try {
@@ -124,11 +125,11 @@ public class ProjectService implements HealthCheck{
} else {
project = getProjectFromRepo(repo);
}
- datagridService.saveProject(project);
+ infinispanService.saveProject(project);
repo.getFiles().forEach(repoFile -> {
ProjectFile file = new ProjectFile(repoFile.getName(), repoFile.getBody(), folderName, repoFile.getLastCommitTimestamp());
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
});
});
addKameletsProject();
@@ -152,10 +153,10 @@ public class ProjectService implements HealthCheck{
LOGGER.info("Import project from GitRepo " + repo.getName());
try {
Project project = getProjectFromRepo(repo);
- datagridService.saveProject(project);
+ infinispanService.saveProject(project);
repo.getFiles().forEach(repoFile -> {
ProjectFile file = new ProjectFile(repoFile.getName(), repoFile.getBody(), repo.getName(), repoFile.getLastCommitTimestamp());
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
});
return project;
} catch (Exception e) {
@@ -174,25 +175,25 @@ public class ProjectService implements HealthCheck{
}
public Project commitAndPushProject(String projectId, String message) throws Exception {
- Project p = datagridService.getProject(projectId);
- List<ProjectFile> files = datagridService.getProjectFiles(projectId);
+ Project p = infinispanService.getProject(projectId);
+ List<ProjectFile> files = infinispanService.getProjectFiles(projectId);
RevCommit commit = gitService.commitAndPushProject(p, files, message);
String commitId = commit.getId().getName();
Long lastUpdate = commit.getCommitTime() * 1000L;
p.setLastCommit(commitId);
p.setLastCommitTimestamp(lastUpdate);
- datagridService.saveProject(p);
- datagridService.saveCommit(commitId, commit.getCommitTime());
+ infinispanService.saveProject(p);
+ infinispanService.saveCommit(commitId, commit.getCommitTime());
return p;
}
void addKameletsProject() {
LOGGER.info("Add custom kamelets project if not exists");
try {
- Project kamelets = datagridService.getProject(Project.NAME_KAMELETS);
+ Project kamelets = infinispanService.getProject(Project.NAME_KAMELETS);
if (kamelets == null) {
kamelets = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "", "", Instant.now().toEpochMilli());
- datagridService.saveProject(kamelets);
+ infinispanService.saveProject(kamelets);
commitAndPushProject(Project.NAME_KAMELETS, "Add custom kamelets");
}
} catch (Exception e) {
@@ -203,14 +204,14 @@ public class ProjectService implements HealthCheck{
void addTemplatesProject() {
LOGGER.info("Add templates project if not exists");
try {
- Project templates = datagridService.getProject(Project.NAME_TEMPLATES);
+ Project templates = infinispanService.getProject(Project.NAME_TEMPLATES);
if (templates == null) {
templates = new Project(Project.NAME_TEMPLATES, "Templates", "Templates", "", "", Instant.now().toEpochMilli());
- datagridService.saveProject(templates);
+ infinispanService.saveProject(templates);
codeService.getApplicationPropertiesTemplates().forEach((name, value) -> {
ProjectFile file = new ProjectFile(name, value, Project.NAME_TEMPLATES, Instant.now().toEpochMilli());
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
});
commitAndPushProject(Project.NAME_TEMPLATES, "Add default templates");
}
@@ -222,14 +223,14 @@ public class ProjectService implements HealthCheck{
void addPipelinesProject() {
LOGGER.info("Add pipelines project if not exists");
try {
- Project pipelines = datagridService.getProject(Project.NAME_PIPELINES);
+ Project pipelines = infinispanService.getProject(Project.NAME_PIPELINES);
if (pipelines == null) {
pipelines = new Project(Project.NAME_PIPELINES, "Pipelines", "CI/CD Pipelines", "", "", Instant.now().toEpochMilli());
- datagridService.saveProject(pipelines);
+ infinispanService.saveProject(pipelines);
codeService.getApplicationPropertiesTemplates().forEach((name, value) -> {
ProjectFile file = new ProjectFile(name, value, Project.NAME_PIPELINES, Instant.now().toEpochMilli());
- datagridService.saveProjectFile(file);
+ infinispanService.saveProjectFile(file);
});
commitAndPushProject(Project.NAME_PIPELINES, "Add default pipelines");
}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ScheduledService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ScheduledService.java
new file mode 100644
index 00000000..4a1103b4
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/service/ScheduledService.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.karavan.service;
+
+import io.quarkus.scheduler.Scheduled;
+import org.apache.camel.karavan.docker.DockerService;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+@ApplicationScoped
+public class ScheduledService {
+
+ @Inject
+ DockerService dockerService;
+
+ @Inject
+ ProjectService projectService;
+
+ @Inject
+ CamelService camelService;
+
+ @Scheduled(every = "{karavan.container-stats-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
+ void collectContainersStats() {
+ dockerService.collectContainersStats();
+ }
+
+ @Scheduled(every = "{karavan.devmode-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
+ void collectDevModeCamelStatuses() {
+ camelService.collectDevModeStatuses();
+ }
+
+ @Scheduled(every = "{karavan.camel-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
+ void collectNonDevModeCamelStatuses() {
+ camelService.collectNonDevModeStatuses();
+ }
+
+ @Scheduled(every = "{karavan.devmode-status-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
+ void cleanupDevModeStatuses() {
+ camelService.cleanupDevModeStatuses();
+ }
+
+ @Scheduled(every = "{karavan.git-pull-interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP)
+ void pullCommitsFromGit() {
+ projectService.pullCommits();
+ }
+
+}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/ConfigService.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/ConfigService.java
new file mode 100644
index 00000000..c8efcdb8
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/ConfigService.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.karavan.shared;
+
+import io.quarkus.runtime.StartupEvent;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
+import java.util.List;
+import java.util.Objects;
+
+@ApplicationScoped
+public class ConfigService {
+
+ public static final String DEVMODE_SUFFIX = "-devmode";
+
+ @ConfigProperty(name = "karavan.version")
+ String version;
+
+ @ConfigProperty(name = "karavan.environment")
+ String environment;
+
+ @ConfigProperty(name = "karavan.environments")
+ List<String> environments;
+
+ @ConfigProperty(name = "karavan.default-runtime")
+ String runtime;
+
+ @ConfigProperty(name = "karavan.runtimes")
+ List<String> runtimes;
+
+ private Configuration configuration;
+
+ void onStart(@Observes StartupEvent ev) {
+ configuration = new Configuration(
+ version,
+ inKubernetes() ? "kubernetes" : "docker",
+ environment,
+ environments,
+ runtime,
+ runtimes
+ );
+ }
+
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ public static boolean inKubernetes() {
+ return Objects.nonNull(System.getenv("KUBERNETES_SERVICE_HOST"));
+ }
+}
\ No newline at end of file
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java
new file mode 100644
index 00000000..2e39bbb0
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/Configuration.java
@@ -0,0 +1,72 @@
+package org.apache.camel.karavan.shared;
+
+import java.util.List;
+
+public class Configuration {
+ private String version;
+ private String infrastructure;
+ private String environment;
+ private List<String> environments;
+ private String runtime;
+ private List<String> runtimes;
+
+ public Configuration() {
+ }
+
+ public Configuration(String version, String infrastructure, String environment, List<String> environments, String runtime, List<String> runtimes) {
+ this.version = version;
+ this.infrastructure = infrastructure;
+ this.environment = environment;
+ this.environments = environments;
+ this.runtime = runtime;
+ this.runtimes = runtimes;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getInfrastructure() {
+ return infrastructure;
+ }
+
+ public void setInfrastructure(String infrastructure) {
+ this.infrastructure = infrastructure;
+ }
+
+ public String getEnvironment() {
+ return environment;
+ }
+
+ public void setEnvironment(String environment) {
+ this.environment = environment;
+ }
+
+ public List<String> getEnvironments() {
+ return environments;
+ }
+
+ public void setEnvironments(List<String> environments) {
+ this.environments = environments;
+ }
+
+ public String getRuntime() {
+ return runtime;
+ }
+
+ public void setRuntime(String runtime) {
+ this.runtime = runtime;
+ }
+
+ public List<String> getRuntimes() {
+ return runtimes;
+ }
+
+ public void setRuntimes(List<String> runtimes) {
+ this.runtimes = runtimes;
+ }
+}
diff --git a/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
new file mode 100644
index 00000000..7b7af56e
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/main/java/org/apache/camel/karavan/shared/EventType.java
@@ -0,0 +1,24 @@
+package org.apache.camel.karavan.shared;
+
+public class EventType {
+
+ public static final String START_KARAVAN = "START_KARAVAN";
+
+ // Start Kubernetes or Docker event Listeners
+ public static final String START_INFRASTRUCTURE_LISTENERS = "START_INFRASTRUCTURE_LISTENERS";
+ public static final String STOP_INFRASTRUCTURE_LISTENERS = "STOP_INFRASTRUCTURE_LISTENERS";
+
+ // Import projects from Git repository
+ public static final String IMPORT_PROJECTS = "IMPORT_PROJECTS";
+
+
+
+ public static final String INFINISPAN_STARTED = "INFINISPAN_STARTED";
+ public static final String INFINISPAN_HEALTH = "INFINISPAN_HEALTH";
+
+ public static final String CONTAINER_STATS = "ADDRESS_CONTAINER_STATS";
+
+ public static final String ADDRESS_DEVMODE_STATUS = "ADDRESS_DEVMODE_STATUS";
+ public static final String ADDRESS_DEVMODE_COMMAND_INTERNAL = "ADDRESS_DEVMODE_COMMAND_INTERNAL";
+ public static final String ADDRESS_DEVMODE_STATUS_INTERNAL = "ADDRESS_DEVMODE_STATUS_INTERNAL";
+}
diff --git a/karavan-cloud/karavan-app/src/main/resources/application.properties b/karavan-cloud/karavan-app/src/main/resources/application.properties
index 9d5ac6fe..b153e02b 100644
--- a/karavan-cloud/karavan-app/src/main/resources/application.properties
+++ b/karavan-cloud/karavan-app/src/main/resources/application.properties
@@ -1,5 +1,6 @@
karavan.version=3.21.1-SNAPSHOT
karavan.environment=dev
+karavan.environments=dev,test,prod
karavan.default-runtime=quarkus
karavan.runtimes=quarkus,spring-boot
karavan.camel-status-interval=10s
@@ -7,6 +8,7 @@ karavan.devmode-status-interval=2s
karavan.container-status-interval=10s
karavan.container-stats-interval=10s
quarkus.scheduler.enabled=true
+runner.image=marat/karavan
# Git repository Configuration
karavan.git-repository=${GIT_REPOSITORY}
diff --git a/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java b/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java
deleted file mode 100644
index 4a07ba7f..00000000
--- a/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/datagrid/DataGridTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.camel.karavan.datagrid;
-
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.vertx.ConsumeEvent;
-import io.vertx.core.json.JsonObject;
-import org.apache.camel.karavan.datagrid.DatagridService;
-import org.apache.camel.karavan.datagrid.model.*;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@QuarkusTest
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class DataGridTest {
-
- @Inject
- DatagridService datagridService;
-
- private List<DevModeCommand> commandsReceived = new ArrayList<>();
-
- @BeforeAll
- public void setup() {
- datagridService.start();
- commandsReceived.clear();
- }
-
- @ConsumeEvent(DatagridService.ADDRESS_DEVMODE_COMMAND)
- void receiveCommand(JsonObject message) {
- System.out.println("receiveCommand " + message);
- commandsReceived.add(message.mapTo(DevModeCommand.class));
- }
-
- @Test
- public void testContainersStatuses() throws InterruptedException {
- ContainerInfo ci = new ContainerInfo("demo", "id", "image", List.of(8080, 8081, 8082), "dev");
- datagridService.saveContainerInfo(ci);
- List<ContainerInfo> list = datagridService.getContainerInfos("dev");
- System.out.println(list);
- assertEquals(1, list.size());
- }
-
- @Test
- public void sendCommand() throws InterruptedException {
- List<DevModeCommand> commandsSent = List.of(
- DevModeCommand.createForProject(DevModeCommandName.RUN, "test1"),
- DevModeCommand.createForProject(DevModeCommandName.RELOAD, "test1"),
- DevModeCommand.createForProject(DevModeCommandName.DELETE, "test1"),
- DevModeCommand.createForProject(DevModeCommandName.RUN, "test1")
- );
- commandsSent.forEach(devModeCommand -> datagridService.sendDevModeCommand(devModeCommand));
-
- CountDownLatch latch = new CountDownLatch(4);
- latch.await(5, TimeUnit.SECONDS);
- assertEquals(commandsSent.size(), commandsReceived.size());
- assertEquals(commandsSent.get(0).getCommandName().name(), commandsReceived.get(0).getCommandName().name());
- assertEquals(commandsSent.get(1).getCommandName().name(), commandsReceived.get(1).getCommandName().name());
- assertEquals(commandsSent.get(2).getCommandName().name(), commandsReceived.get(2).getCommandName().name());
- }
-
- @Test
- public void testProjectFiles() throws InterruptedException {
- List<ProjectFile> files = datagridService.getProjectFiles("xxx");
- assertEquals(0, files.size());
- }
-
- @Test
- public void testCamelStatuses() throws InterruptedException {
- CamelStatus cs = new CamelStatus("test1", "container1", CamelStatusName.context, "", "dev");
- datagridService.saveCamelStatus(cs);
- List<CamelStatus> list = datagridService.getCamelStatusesByEnv("dev", CamelStatusName.context);
- System.out.println(list);
- assertEquals(1, list.size());
- }
-}
diff --git a/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/infinispan/DataGridTest.java b/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/infinispan/DataGridTest.java
new file mode 100644
index 00000000..0ed05edb
--- /dev/null
+++ b/karavan-cloud/karavan-app/src/test/java/org/apache/camel/karavan/infinispan/DataGridTest.java
@@ -0,0 +1,54 @@
+package org.apache.camel.karavan.infinispan;
+
+
+import io.quarkus.test.junit.QuarkusTest;
+import org.apache.camel.karavan.infinispan.model.CamelStatus;
+import org.apache.camel.karavan.infinispan.model.CamelStatusName;
+import org.apache.camel.karavan.infinispan.model.ContainerInfo;
+import org.apache.camel.karavan.infinispan.model.ProjectFile;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@QuarkusTest
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class DataGridTest {
+
+ @Inject
+ InfinispanService infinispanService;
+
+ @BeforeAll
+ public void setup() {
+ infinispanService.start();
+ }
+
+ @Test
+ public void testContainersStatuses() throws InterruptedException {
+ ContainerInfo ci = new ContainerInfo("demo", "id", "image", List.of(8080, 8081, 8082), "dev");
+ infinispanService.saveContainerInfo(ci);
+ List<ContainerInfo> list = infinispanService.getContainerInfos("dev");
+ System.out.println(list);
+ assertEquals(1, list.size());
+ }
+
+ @Test
+ public void testProjectFiles() throws InterruptedException {
+ List<ProjectFile> files = infinispanService.getProjectFiles("xxx");
+ assertEquals(0, files.size());
+ }
+
+ @Test
+ public void testCamelStatuses() throws InterruptedException {
+ CamelStatus cs = new CamelStatus("test1", "container1", CamelStatusName.context, "", "dev");
+ infinispanService.saveCamelStatus(cs);
+ List<CamelStatus> list = infinispanService.getCamelStatusesByEnv("dev", CamelStatusName.context);
+ System.out.println(list);
+ assertEquals(1, list.size());
+ }
+}