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/27 22:22:46 UTC
[camel-karavan] 01/03: projects fix for #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 6d30dbabef13e9f27a9ff43241247088970c9bb7
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Jul 26 16:58:30 2023 -0400
projects fix for #817
---
.../org/apache/camel/karavan/docker/DockerService.java | 11 +++++++++++
.../org/apache/camel/karavan/service/KaravanService.java | 13 +++++++++----
.../org/apache/camel/karavan/service/ProjectService.java | 8 ++++----
.../src/main/webui/src/project/DevModeToolbar.tsx | 9 +++++----
.../src/main/webui/src/projects/ProjectsPage.tsx | 15 +++++++++------
5 files changed, 38 insertions(+), 18 deletions(-)
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index b7a6fa5e..af1d67f6 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -89,6 +89,17 @@ public class DockerService {
private DockerClient dockerClient;
+ public boolean checkDocker() {
+ try {
+ getDockerClient().pingCmd().exec();
+ LOGGER.info("Docker is available");
+ return true;
+ } catch (Exception e) {
+ LOGGER.error("Error connecting Docker: " + e.getMessage());
+ return false;
+ }
+ }
+
public void runDevmodeContainer(Project project, String jBangOptions) throws InterruptedException {
String projectId = project.getProjectId();
LOGGER.infof("DevMode starting for %s with JBANG_OPTIONS=%s", projectId, jBangOptions);
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
index 2f5aa7ad..ee801b94 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/KaravanService.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.karavan.service;
+import io.quarkus.runtime.Quarkus;
import io.quarkus.runtime.ShutdownEvent;
import io.quarkus.runtime.StartupEvent;
import io.vertx.core.eventbus.EventBus;
@@ -52,10 +53,14 @@ public class KaravanService {
LOGGER.info("Starting Karavan Headless in Docker");
} else {
LOGGER.info("Starting Karavan with Docker");
- dockerService.createNetwork();
- dockerService.startListeners();
- dockerService.startInfinispan();
- dockerService.checkInfinispanHealth();
+ if (!dockerService.checkDocker()){
+ Quarkus.asyncExit();
+ } else {
+ dockerService.createNetwork();
+ dockerService.startListeners();
+ dockerService.startInfinispan();
+ dockerService.checkInfinispanHealth();
+ }
}
} else {
LOGGER.info("Starting Karavan in " + (kubernetesService.isOpenshift() ? "OpenShift" : "Kubernetes"));
diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
index 815eab38..7c05cea0 100644
--- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
+++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java
@@ -229,10 +229,10 @@ public class ProjectService implements HealthCheck{
void addServicesProject() {
LOGGER.info("Add services project if not exists");
try {
- Project templates = infinispanService.getProject(Project.Type.services.name());
- if (templates == null) {
- templates = new Project(Project.Type.services.name(), "Services", "Development Services", "", "", Instant.now().toEpochMilli(), Project.Type.services);
- infinispanService.saveProject(templates);
+ Project services = infinispanService.getProject(Project.Type.services.name());
+ if (services == null) {
+ services = new Project(Project.Type.services.name(), "Services", "Development Services", "", "", Instant.now().toEpochMilli(), Project.Type.services);
+ infinispanService.saveProject(services);
codeService.getServices().forEach((name, value) -> {
ProjectFile file = new ProjectFile(name, value, Project.Type.services.name(), Instant.now().toEpochMilli());
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx b/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
index 58dae7ea..9777019b 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
@@ -4,6 +4,7 @@ import '../designer/karavan.css';
import RocketIcon from "@patternfly/react-icons/dist/esm/icons/rocket-icon";
import ReloadIcon from "@patternfly/react-icons/dist/esm/icons/bolt-icon";
import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/trash-icon";
+import PauseIcon from "@patternfly/react-icons/dist/esm/icons/pause-icon";
import {useDevModeStore, useLogStore, useProjectStore} from "../api/ProjectStore";
import {ProjectService} from "../api/ProjectService";
import {shallow} from "zustand/shallow";
@@ -74,7 +75,7 @@ export const DevModeToolbar = (props: Props) => {
</Button>
</Tooltip>
</FlexItem>}
- {<FlexItem>
+ <FlexItem>
<Tooltip content="Stop container" position={TooltipPosition.bottom}>
<Button isSmall
isDisabled={!commands.includes('stop') || inTransit}
@@ -83,8 +84,8 @@ export const DevModeToolbar = (props: Props) => {
onClick={() => ProjectService.stopDevModeContainer(project)}>
</Button>
</Tooltip>
- </FlexItem>}
- {<FlexItem>
+ </FlexItem>
+ <FlexItem>
<Tooltip content="Delete container" position={TooltipPosition.bottom}>
<Button isSmall
isDisabled={!commands.includes('delete') || inTransit}
@@ -93,6 +94,6 @@ export const DevModeToolbar = (props: Props) => {
onClick={() => ProjectService.deleteDevModeContainer(project)}>
</Button>
</Tooltip>
- </FlexItem>}
+ </FlexItem>
</Flex>);
}
diff --git a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
index dd03c5dc..9b8c0d74 100644
--- a/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
@@ -40,9 +40,7 @@ export const ProjectsPage = () => {
const interval = setInterval(() => {
if (projects.length === 0) setLoading(true);
if (!["create", "delete", "select", "copy"].includes(operation)) {
- ProjectService.refreshProjects();
- ProjectService.refreshAllDeploymentStatuses();
- ProjectService.refreshAllContainerStatuses();
+ refresh();
}
}, 1300);
return () => {
@@ -50,14 +48,19 @@ export const ProjectsPage = () => {
};
}, [operation]);
+ function refresh() {
+ ProjectService.refreshProjects();
+ ProjectService.refreshAllDeploymentStatuses();
+ ProjectService.refreshAllContainerStatuses();
+ setLoading(false);
+ }
function getTools() {
return <Toolbar id="toolbar-group-types">
<ToolbarContent>
<ToolbarItem>
<Button variant="link" icon={<RefreshIcon/>} onClick={e => {
- ProjectService.refreshProjects();
- ProjectService.refreshAllDeploymentStatuses();
- ProjectService.refreshAllContainerStatuses();
+ setLoading(true);
+ refresh();
}}/>
</ToolbarItem>
<ToolbarItem>