Canvas: Add Reload button on Monitoring page
Change-Id: I593d9068870bcd5f0d43680af4a08d814a18a2a9
diff --git a/apps/canvas/back/src/index.ts b/apps/canvas/back/src/index.ts
index de18582..cfd8955 100644
--- a/apps/canvas/back/src/index.ts
+++ b/apps/canvas/back/src/index.ts
@@ -662,6 +662,27 @@
}
};
+const handleReloadWorker: express.Handler = async (req, resp) => {
+ const projectId = Number(req.params["projectId"]);
+ const serviceName = req.params["serviceName"];
+ const workerId = req.params["workerId"];
+
+ const projectMonitor = projectMonitors.get(projectId);
+ if (!projectMonitor) {
+ resp.status(404).send({ error: "Project monitor not found" });
+ return;
+ }
+
+ try {
+ await projectMonitor.reloadWorker(serviceName, workerId);
+ resp.status(200).send({ message: "Worker reload initiated" });
+ } catch (error) {
+ console.error(`Failed to reload worker ${workerId} in service ${serviceName} for project ${projectId}:`, error);
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
+ resp.status(500).send({ error: `Failed to reload worker: ${errorMessage}` });
+ }
+};
+
const auth = (req: express.Request, resp: express.Response, next: express.NextFunction) => {
const userId = req.get("x-forwarded-userid");
const username = req.get("x-forwarded-user");
@@ -750,11 +771,13 @@
projectRouter.get("/:projectId/repos/github", handleGithubRepos);
projectRouter.post("/:projectId/github-token", handleUpdateGithubToken);
projectRouter.get("/:projectId/env", handleEnv);
+ projectRouter.post("/:projectId/reload/:serviceName/:workerId", handleReloadWorker);
projectRouter.post("/:projectId/reload", handleReload);
projectRouter.get("/:projectId/logs/:service/:workerId", handleServiceLogs);
projectRouter.post("/:projectId/remove-deployment", handleRemoveDeployment);
projectRouter.get("/", handleProjectAll);
projectRouter.post("/", handleProjectCreate);
+
app.use("/api/project", projectRouter); // Mount the authenticated router
app.use("/", express.static("../front/dist"));