Adding support for terminated workflow executions.

- When terminating, adding started_at and finished_at timestamps
Updated workflow_template.proto to return the count of terminated executions.
- Updating supporting code
This commit is contained in:
Aleksandr Melnikov
2020-05-14 17:13:44 -07:00
parent 61704062ba
commit 62c8f5dcb2
3 changed files with 21 additions and 0 deletions

View File

@@ -126,6 +126,7 @@ message WorkflowExecutionStatisticReport {
int32 running = 3; int32 running = 3;
int32 completed = 4; int32 completed = 4;
int32 failed = 5; int32 failed = 5;
int32 terminated = 6;
} }
message CronWorkflowStatisticsReport { message CronWorkflowStatisticsReport {

View File

@@ -944,6 +944,24 @@ func (c *Client) SuspendWorkflowExecution(namespace, uid string) (err error) {
} }
func (c *Client) TerminateWorkflowExecution(namespace, uid string) (err error) { func (c *Client) TerminateWorkflowExecution(namespace, uid string) (err error) {
query, args, err := sb.Update("workflow_executions").
Set("phase", "Terminated").
Set("started_at", time.Time.UTC(time.Now())).
Set("finished_at", time.Time.UTC(time.Now())).
Where(sq.Eq{
"uid": uid,
"namespace": namespace,
}).
ToSql()
if err != nil {
return err
}
if _, err := c.DB.Exec(query, args...); err != nil {
return err
}
err = argoutil.TerminateWorkflow(c.ArgoprojV1alpha1().Workflows(namespace), uid) err = argoutil.TerminateWorkflow(c.ArgoprojV1alpha1().Workflows(namespace), uid)
return return
@@ -1242,6 +1260,7 @@ func (c *Client) GetWorkflowExecutionStatisticsForTemplates(workflowTemplates ..
COUNT(*) FILTER (WHERE finished_at IS NULL AND (phase = 'Running' OR phase = 'Pending')) running, COUNT(*) FILTER (WHERE finished_at IS NULL AND (phase = 'Running' OR phase = 'Pending')) running,
COUNT(*) FILTER (WHERE finished_at IS NOT NULL AND phase = 'Succeeded') completed, COUNT(*) FILTER (WHERE finished_at IS NOT NULL AND phase = 'Succeeded') completed,
COUNT(*) FILTER (WHERE finished_at IS NOT NULL AND (phase = 'Failed' OR phase = 'Error')) failed, COUNT(*) FILTER (WHERE finished_at IS NOT NULL AND (phase = 'Failed' OR phase = 'Error')) failed,
COUNT(*) FILTER (WHERE phase = 'Terminated') terminated,
COUNT(*) total` COUNT(*) total`
query, args, err := sb.Select(statsSelect). query, args, err := sb.Select(statsSelect).

View File

@@ -38,6 +38,7 @@ func apiWorkflowTemplate(wft *v1.WorkflowTemplate) *api.WorkflowTemplate {
Running: wft.WorkflowExecutionStatisticReport.Running, Running: wft.WorkflowExecutionStatisticReport.Running,
Completed: wft.WorkflowExecutionStatisticReport.Completed, Completed: wft.WorkflowExecutionStatisticReport.Completed,
Failed: wft.WorkflowExecutionStatisticReport.Failed, Failed: wft.WorkflowExecutionStatisticReport.Failed,
Terminated: wft.WorkflowExecutionStatisticReport.Terminated,
} }
} }