You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2018/08/18 00:20:06 UTC
[06/14] helix git commit: Simple workflow pause/resume
Simple workflow pause/resume
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/d192afcc
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/d192afcc
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/d192afcc
Branch: refs/heads/master
Commit: d192afccfd950092ab902d9be042aa8a73a4c80e
Parents: 3c3f289
Author: Vivo Xu <vx...@linkedin.com>
Authored: Wed Feb 28 13:46:55 2018 -0800
Committer: Vivo Xu <vx...@linkedin.com>
Committed: Wed Aug 8 15:32:21 2018 -0700
----------------------------------------------------------------------
.../app/workflow/shared/workflow.service.ts | 10 ++++++
.../workflow-detail.component.html | 14 ++++++++
.../workflow-detail.component.ts | 38 +++++++++++++++++---
3 files changed, 57 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/d192afcc/helix-front/client/app/workflow/shared/workflow.service.ts
----------------------------------------------------------------------
diff --git a/helix-front/client/app/workflow/shared/workflow.service.ts b/helix-front/client/app/workflow/shared/workflow.service.ts
index 9be5337..0602a15 100644
--- a/helix-front/client/app/workflow/shared/workflow.service.ts
+++ b/helix-front/client/app/workflow/shared/workflow.service.ts
@@ -17,4 +17,14 @@ export class WorkflowService extends HelixService {
.request(`/clusters/${ clusterName }/workflows/${ workflowName }`)
.map(data => new Workflow(data, clusterName));
}
+
+ public stop(clusterName: string, workflowName: string) {
+ return this
+ .post(`/clusters/${ clusterName }/workflows/${ workflowName }?command=stop`, null);
+ }
+
+ public resume(clusterName: string, workflowName: string) {
+ return this
+ .post(`/clusters/${ clusterName }/workflows/${ workflowName }?command=resume`, null);
+ }
}
http://git-wip-us.apache.org/repos/asf/helix/blob/d192afcc/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.html
----------------------------------------------------------------------
diff --git a/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.html b/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.html
index 276e116..e6c816a 100644
--- a/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.html
+++ b/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.html
@@ -13,6 +13,20 @@
<hi-key-value-pair name="Failure Threshold" prop="config.FailureThreshold"></hi-key-value-pair>
<hi-key-value-pair name="Expiry" prop="config.Expiry"></hi-key-value-pair>
</hi-key-value-pairs>
+ <span fxFlex="1 1 auto"></span>
+ <button mat-mini-fab *ngIf="can" [matMenuTriggerFor]="menu">
+ <mat-icon>menu</mat-icon>
+ </button>
+ <mat-menu #menu="matMenu">
+ <button mat-menu-item (click)="stopWorkflow()">
+ <mat-icon>pause_circle_outline</mat-icon>
+ <span>Pause this Workflow</span>
+ </button>
+ <button mat-menu-item (click)="resumeWorkflow()">
+ <mat-icon>play_circle_outline</mat-icon>
+ <span>Resume this workflow</span>
+ </button>
+ </mat-menu>
</mat-toolbar-row>
</mat-toolbar>
<section fxLayout="column" fxLayoutAlign="center center">
http://git-wip-us.apache.org/repos/asf/helix/blob/d192afcc/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.ts
----------------------------------------------------------------------
diff --git a/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.ts b/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.ts
index a8adcfa..e90af41 100644
--- a/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.ts
+++ b/helix-front/client/app/workflow/workflow-detail/workflow-detail.component.ts
@@ -15,6 +15,8 @@ export class WorkflowDetailComponent implements OnInit {
isLoading = true;
workflow: Workflow;
clusterName: string;
+ workflowName: string;
+ can = false;
constructor(
protected route: ActivatedRoute,
@@ -24,12 +26,38 @@ export class WorkflowDetailComponent implements OnInit {
ngOnInit() {
this.clusterName = this.route.snapshot.params['cluster_name'];
+ this.workflowName = this.route.snapshot.params['workflow_name'];
- this.service
- .get(
- this.route.snapshot.params['cluster_name'],
- this.route.snapshot.params['workflow_name']
- )
+ this.service.can().subscribe(data => this.can = data);
+
+ this.loadWorkflow();
+ }
+
+ stopWorkflow() {
+ this.service.stop(this.clusterName, this.workflowName)
+ .subscribe(
+ () => {
+ this.helper.showSnackBar('Pause command sent.');
+ this.loadWorkflow();
+ },
+ error => this.helper.showError(error)
+ );
+ }
+
+ resumeWorkflow() {
+ this.service.resume(this.clusterName, this.workflowName)
+ .subscribe(
+ () => {
+ this.helper.showSnackBar('Resume command sent.');
+ this.loadWorkflow();
+ },
+ error => this.helper.showError(error)
+ );
+ }
+
+ protected loadWorkflow() {
+ this.isLoading = true;
+ this.service.get(this.clusterName, this.workflowName)
.subscribe(
workflow => this.workflow = workflow,
error => this.helper.showError(error),