This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push:
new 4ec0f0bd Fix #1408
4ec0f0bd is described below
commit 4ec0f0bdd233ab02dd9adb731d02a19463b7a763
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Fri Sep 13 19:29:22 2024 -0400
Fix #1408
---
.../apache/camel/karavan/docker/DockerService.java | 2 +-
.../src/main/webui/src/api/ProjectService.ts | 3 +--
.../src/main/webui/src/project/DevModeToolbar.tsx | 27 +++++++++++++++++++---
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
index 4df0da97..025077c7 100644
---
a/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
+++
b/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java
@@ -323,7 +323,7 @@ public class DockerService {
if (containers.size() == 1) {
Container container = containers.get(0);
if (container.getState().equals("running") ||
container.getState().equals("paused")) {
- try (StopContainerCmd cmd =
getDockerClient().stopContainerCmd(container.getId())) {
+ try (StopContainerCmd cmd =
getDockerClient().stopContainerCmd(container.getId()).withTimeout(1)) {
cmd.exec();
}
}
diff --git a/karavan-app/src/main/webui/src/api/ProjectService.ts
b/karavan-app/src/main/webui/src/api/ProjectService.ts
index 575f0aa7..ff6c1511 100644
--- a/karavan-app/src/main/webui/src/api/ProjectService.ts
+++ b/karavan-app/src/main/webui/src/api/ProjectService.ts
@@ -66,7 +66,6 @@ export class ProjectService {
KaravanApi.manageContainer(project.projectId, 'devmode',
project.projectId, 'stop', 'never',res => {
useDevModeStore.setState({status: 'none'})
if (res.status === 200) {
- useLogStore.setState({showLog: false, type: 'container'})
} else {
EventBus.sendAlert('Error stopping DevMode container',
res.statusText, 'warning')
}
@@ -75,7 +74,7 @@ export class ProjectService {
public static pauseDevModeContainer(project: Project) {
useDevModeStore.setState({status: 'wip'})
- KaravanApi.manageContainer(project.projectId, 'devmode',
project.projectId, 'pause', 'never',res => {
+ KaravanApi.manageContainer(project.projectId, 'devmode',
project.projectId, 'pause', 'never', res => {
useDevModeStore.setState({status: 'none'})
if (res.status === 200) {
useLogStore.setState({showLog: false, type: 'container'})
diff --git a/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
b/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
index e8af4bcc..c1af0221 100644
--- a/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
+++ b/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
@@ -31,13 +31,14 @@ 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 {useLogStore, useProjectStore, useStatusesStore} from
"../api/ProjectStore";
+import {useAppConfigStore, useLogStore, useProjectStore, useStatusesStore}
from "../api/ProjectStore";
import {ProjectService} from "../api/ProjectService";
import {shallow} from "zustand/shallow";
import UpIcon from "@patternfly/react-icons/dist/esm/icons/running-icon";
import DownIcon from
"@patternfly/react-icons/dist/esm/icons/error-circle-o-icon";
import {ContainerStatus} from "../api/ProjectModels";
import "./DevModeToolbar.css"
+import StopIcon from "@patternfly/react-icons/dist/js/icons/stop-icon";
interface Props {
reloadOnly?: boolean
@@ -45,6 +46,7 @@ interface Props {
export function DevModeToolbar(props: Props) {
+ const [config] = useAppConfigStore((state) => [state.config], shallow);
const [project, refreshTrace] = useProjectStore((state) => [state.project,
state.refreshTrace], shallow)
const [containers] = useStatusesStore((state) => [state.containers],
shallow);
const [verbose, setVerbose] = useState(false);
@@ -52,6 +54,7 @@ export function DevModeToolbar(props: Props) {
const [setShowLog] = useLogStore((s) => [s.setShowLog], shallow);
const [currentContainerStatus] = useState<ContainerStatus>();
+ const isKubernetes = config.infrastructure === 'kubernetes'
const containerStatuses = containers.filter(c => c.projectId ===
project.projectId) || [];
const containersProject = containerStatuses.filter(c => c.type ===
'project') || [];
@@ -61,6 +64,7 @@ export function DevModeToolbar(props: Props) {
const containerDevMode = containerStatuses.filter(c => c.type ===
'devmode').at(0);
const commands = containerDevMode?.commands || ['run'];
const isRunning = containerDevMode?.state === 'running';
+ const showLogDevMode = containerDevMode && ['running', 'paused',
'exited'].includes(containerDevMode?.state);
const inTransit = containerDevMode?.inTransit;
const color = (isRunning || allRunning) ? "green" : "grey";
const icon = (isRunning || allRunning) ? <UpIcon/> : <DownIcon/>;
@@ -79,7 +83,9 @@ export function DevModeToolbar(props: Props) {
{containersProject.length > 0 && <FlexItem>
<Label icon={icon} color={color}>
<Tooltip content={"Show log"}
position={TooltipPosition.bottom}>
- <Button className='labeled-button' variant="link"
isDisabled={!allRunning}
+ <Button className='labeled-button'
+ variant="link"
+ isDisabled={!allRunning}
onClick={e => {}}>
{project.projectId}
</Button>
@@ -91,7 +97,9 @@ export function DevModeToolbar(props: Props) {
{containerDevMode?.containerId && <FlexItem>
<Label icon={icon} color={color}>
<Tooltip content={"Show log"}
position={TooltipPosition.bottom}>
- <Button className='labeled-button' variant="link"
isDisabled={!isRunning}
+ <Button className='labeled-button'
+ variant="link"
+ isDisabled={!showLogDevMode}
onClick={e =>
setShowLog(true, 'container',
containerDevMode.containerName)}>
{containerDevMode.containerName}
@@ -133,6 +141,19 @@ export function DevModeToolbar(props: Props) {
</Button>
</Tooltip>
</FlexItem>}
+ {inDevMode && !isKubernetes && <FlexItem
className="dev-action-button-place">
+ <Tooltip content="Stop container"
position={TooltipPosition.bottomEnd}>
+ <Button className="dev-action-button" size="sm"
+ isDisabled={!commands.includes('stop') || inTransit}
+ variant={"control"}
+ icon={<StopIcon/>}
+ onClick={() => {
+ setShowSpinner(true);
+ ProjectService.stopDevModeContainer(project);
+ }}>
+ </Button>
+ </Tooltip>
+ </FlexItem>}
{inDevMode && <FlexItem className="dev-action-button-place">
<Tooltip content="Delete container"
position={TooltipPosition.bottomEnd}>
<Button className="dev-action-button" size="sm"