From f318f94f4d138363a550e62d8f26c496271e81a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Wed, 7 Mar 2018 15:15:28 +0100 Subject: [PATCH 1/3] Implement handling of deployment failures --- src/app/services/processcommand.ts | 1 + src/app/services/processmanager.service.ts | 4 ++-- src/app/webide/webide.component.html | 4 +++- src/app/webide/webide.component.ts | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/services/processcommand.ts b/src/app/services/processcommand.ts index f275533..d10a17e 100644 --- a/src/app/services/processcommand.ts +++ b/src/app/services/processcommand.ts @@ -1,4 +1,5 @@ export class ProcessCommand { command: string; process_name: string; + error: boolean } diff --git a/src/app/services/processmanager.service.ts b/src/app/services/processmanager.service.ts index 3e948a6..f757b8a 100644 --- a/src/app/services/processmanager.service.ts +++ b/src/app/services/processmanager.service.ts @@ -16,9 +16,9 @@ export class ProcessManagerService { this.webSocketService.connect(); } - subscribeCallback(process_name: string, callback: (event: any) => void) { + subscribeCallback(process_name: string, error: boolean, callback: (event: any) => void) { this.webSocketService.observeKey(this.key) - .pipe(filter(message => message.data.process_name === process_name)).subscribe(callback); + .pipe(filter(message => message.data.process_name === process_name && message.data.error === error)).subscribe(callback); } sendCommand(command: string, process_name: string) { diff --git a/src/app/webide/webide.component.html b/src/app/webide/webide.component.html index f2c6bfd..96bcb4c 100644 --- a/src/app/webide/webide.component.html +++ b/src/app/webide/webide.component.html @@ -27,7 +27,9 @@ [class.btn-success]="deployButtonState === 'DEPLOYED'" [class.btn-info]="deployButtonState === 'DEPLOYING'" [class.disabled]="deployButtonState === 'DEPLOYING' || deployButtonState === 'DEPLOYED'" + [class.btn-danger]="deployButtonState === 'FAILED'" >Deploy Deploy -
Reloading app...
+
Reloading app...
+ Deployment failed diff --git a/src/app/webide/webide.component.ts b/src/app/webide/webide.component.ts index e221950..5def77f 100644 --- a/src/app/webide/webide.component.ts +++ b/src/app/webide/webide.component.ts @@ -50,7 +50,8 @@ export class WebideComponent implements OnInit { this.subscribeWS(); this.requestCode(); this.processManagerService.init(); - this.processManagerService.subscribeCallback('login', (event) => { this.setDeployButtonState('DEPLOYED'); }); + this.processManagerService.subscribeCallback('login', false, (event) => { this.setDeployButtonState('DEPLOYED'); }); + this.processManagerService.subscribeCallback('login', true, (event) => { this.setDeployButtonState('FAILED'); }); this.resetAutoSaveCountdown(); } From 955ddac7c6c6295b4ed23f050755389cbe630c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Wed, 7 Mar 2018 16:30:25 +0100 Subject: [PATCH 2/3] Improve handling of deployment failures --- src/app/services/processcommand.ts | 2 +- src/app/services/processmanager.service.ts | 14 +++++++++++--- src/app/webide/webide.component.ts | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/app/services/processcommand.ts b/src/app/services/processcommand.ts index d10a17e..6a8d725 100644 --- a/src/app/services/processcommand.ts +++ b/src/app/services/processcommand.ts @@ -1,5 +1,5 @@ export class ProcessCommand { command: string; process_name: string; - error: boolean + error?: string; } diff --git a/src/app/services/processmanager.service.ts b/src/app/services/processmanager.service.ts index f757b8a..80b8544 100644 --- a/src/app/services/processmanager.service.ts +++ b/src/app/services/processmanager.service.ts @@ -16,9 +16,17 @@ export class ProcessManagerService { this.webSocketService.connect(); } - subscribeCallback(process_name: string, error: boolean, callback: (event: any) => void) { - this.webSocketService.observeKey(this.key) - .pipe(filter(message => message.data.process_name === process_name && message.data.error === error)).subscribe(callback); + subscribeCallback(process_name: string, callback: (event: any) => void) { + this.observeProcessMessage(process_name).subscribe(callback); + } + + subscribeErrorCallback(process_name: string, callback: (event: any) => void) { + this.observeProcessMessage(process_name).pipe(filter(message => 'error' in message.data)).subscribe(callback); + } + + observeProcessMessage(process_name: string) { + return this.webSocketService.observeKey(this.key) + .pipe(filter(message => message.data.process_name === process_name)); } sendCommand(command: string, process_name: string) { diff --git a/src/app/webide/webide.component.ts b/src/app/webide/webide.component.ts index 5def77f..0c41590 100644 --- a/src/app/webide/webide.component.ts +++ b/src/app/webide/webide.component.ts @@ -50,8 +50,8 @@ export class WebideComponent implements OnInit { this.subscribeWS(); this.requestCode(); this.processManagerService.init(); - this.processManagerService.subscribeCallback('login', false, (event) => { this.setDeployButtonState('DEPLOYED'); }); - this.processManagerService.subscribeCallback('login', true, (event) => { this.setDeployButtonState('FAILED'); }); + this.processManagerService.subscribeCallback('login', (event) => { this.setDeployButtonState('DEPLOYED'); }); + this.processManagerService.subscribeErrorCallback('login', (event) => { this.setDeployButtonState('FAILED'); }); this.resetAutoSaveCountdown(); } From e595b0ccc1159e389ed61e43ef748252a01983fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Wed, 7 Mar 2018 17:14:30 +0100 Subject: [PATCH 3/3] Replace any with actual type in ProcessManagerService --- src/app/services/processmanager.service.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/services/processmanager.service.ts b/src/app/services/processmanager.service.ts index 80b8544..f8d289c 100644 --- a/src/app/services/processmanager.service.ts +++ b/src/app/services/processmanager.service.ts @@ -3,6 +3,7 @@ import { Injectable } from '@angular/core'; import { WebSocketService } from './websocket.service'; import { ProcessCommand } from './processcommand'; import { filter } from 'rxjs/operators'; +import { WSMessage } from './wsmessage'; @Injectable() @@ -16,11 +17,11 @@ export class ProcessManagerService { this.webSocketService.connect(); } - subscribeCallback(process_name: string, callback: (event: any) => void) { + subscribeCallback(process_name: string, callback: (event: WSMessage) => void) { this.observeProcessMessage(process_name).subscribe(callback); } - subscribeErrorCallback(process_name: string, callback: (event: any) => void) { + subscribeErrorCallback(process_name: string, callback: (event: WSMessage) => void) { this.observeProcessMessage(process_name).pipe(filter(message => 'error' in message.data)).subscribe(callback); }