Canvas: Add Reload button on Monitoring page
Change-Id: I593d9068870bcd5f0d43680af4a08d814a18a2a9
diff --git a/apps/canvas/back/src/project_monitor.ts b/apps/canvas/back/src/project_monitor.ts
index c0ea56c..b494854 100644
--- a/apps/canvas/back/src/project_monitor.ts
+++ b/apps/canvas/back/src/project_monitor.ts
@@ -75,6 +75,25 @@
hasLogs(): boolean {
return this.logs.size > 0;
}
+
+ async reloadWorker(workerId: string): Promise<void> {
+ const workerAddress = this.workers.get(workerId);
+ if (!workerAddress) {
+ throw new Error(`Worker ${workerId} not found in service ${this.serviceName}`);
+ }
+ try {
+ const response = await fetch(`${workerAddress}/update`, { method: "POST" });
+ if (!response.ok) {
+ throw new Error(
+ `Failed to trigger reload for worker ${workerId} at ${workerAddress}: ${response.statusText}`,
+ );
+ }
+ console.log(`Reload triggered for worker ${workerId} in service ${this.serviceName}`);
+ } catch (error) {
+ console.error(`Error reloading worker ${workerId} in service ${this.serviceName}:`, error);
+ throw error; // Re-throw to be caught by ProjectMonitor
+ }
+ }
}
export class ProjectMonitor {
@@ -131,4 +150,12 @@
}
return new Map();
}
+
+ async reloadWorker(serviceName: string, workerId: string): Promise<void> {
+ const serviceMonitor = this.serviceMonitors.get(serviceName);
+ if (!serviceMonitor) {
+ throw new Error(`Service ${serviceName} not found`);
+ }
+ await serviceMonitor.reloadWorker(workerId);
+ }
}