From faa052933ebc1e5e7a3b8b1a70cc80b6ca4b8316 Mon Sep 17 00:00:00 2001 From: Lance Cain <90141999+mizady@users.noreply.github.com> Date: Fri, 9 Aug 2024 10:27:25 -0400 Subject: [PATCH] add restart button added restart service/container button as well as fixed start/stop buttons for correct statuses of healthy/unhealthy --- .../docker-socket-handler.ts | 19 +++++++++++++++++++ backend/stack.ts | 14 ++++++++++++-- frontend/src/components/Container.vue | 19 +++++++++++++++---- frontend/src/pages/Compose.vue | 13 +++++++++++++ 4 files changed, 59 insertions(+), 6 deletions(-) diff --git a/backend/agent-socket-handlers/docker-socket-handler.ts b/backend/agent-socket-handlers/docker-socket-handler.ts index ae9bf18..b14a389 100644 --- a/backend/agent-socket-handlers/docker-socket-handler.ts +++ b/backend/agent-socket-handlers/docker-socket-handler.ts @@ -274,6 +274,25 @@ export class DockerSocketHandler extends AgentSocketHandler { } }); + agentSocket.on('restartService', async (stackName: unknown, serviceName: unknown, callback) => { + try { + checkLogin(socket); + + if (typeof stackName !== 'string' || typeof serviceName !== 'string') { + throw new Error('Invalid stackName or serviceName'); + } + + const stack = await Stack.getStack(server, stackName, true); + await stack.restartService(socket, serviceName); + callbackResult({ + ok: true, + msg: `Service ${serviceName} restarted` + }, callback); + } catch (e) { + callbackError(e, callback); + } + }); + // getExternalNetworkList agentSocket.on("getDockerNetworkList", async (callback) => { try { diff --git a/backend/stack.ts b/backend/stack.ts index 8605f02..bddd012 100644 --- a/backend/stack.ts +++ b/backend/stack.ts @@ -535,7 +535,7 @@ export class Stack { const terminalName = getComposeTerminalName(socket.endpoint, this.name); const exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", ["compose", "up", "-d", serviceName], this.path); if (exitCode !== 0) { - throw new Error(`Failed to start service ${serviceName}, please check the terminal output for more information.`); + throw new Error(`Failed to start service ${serviceName}, please check logs for more information.`); } return exitCode; @@ -545,7 +545,17 @@ export class Stack { const terminalName = getComposeTerminalName(socket.endpoint, this.name); const exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", ["compose", "stop", serviceName], this.path); if (exitCode !== 0) { - throw new Error(`Failed to stop service ${serviceName}, please check the terminal output for more information.`); + throw new Error(`Failed to stop service ${serviceName}, please check logs for more information.`); + } + + return exitCode; + } + + async restartService(socket: DockgeSocket, serviceName: string): Promise { + const terminalName = getComposeTerminalName(socket.endpoint, this.name); + const exitCode = await Terminal.exec(this.server, socket, terminalName, "docker", ["compose", "restart", serviceName], this.path); + if (exitCode !== 0) { + throw new Error(`Failed to restart service ${serviceName}, please check logs for more information.`); } return exitCode; diff --git a/frontend/src/components/Container.vue b/frontend/src/components/Container.vue index 0ca135a..13cf20e 100644 --- a/frontend/src/components/Container.vue +++ b/frontend/src/components/Container.vue @@ -1,7 +1,7 @@