Activity stream and timeout

Update activity stream to show approval node info, add meaningful log
message for expired approval nodes in the Task Manager timeout
function.
This commit is contained in:
beeankha 2019-08-06 21:11:30 -04:00 committed by Ryan Petrello
parent 0522d45ab0
commit 8c17990750
No known key found for this signature in database
GPG Key ID: F2AA5F2122351777
2 changed files with 5 additions and 3 deletions

View File

@ -121,6 +121,8 @@ SUMMARIZABLE_FK_FIELDS = {
'job_template': DEFAULT_SUMMARY_FIELDS,
'workflow_job_template': DEFAULT_SUMMARY_FIELDS,
'workflow_job': DEFAULT_SUMMARY_FIELDS,
'workflow_approval_template': DEFAULT_SUMMARY_FIELDS,
'workflow_approval': DEFAULT_SUMMARY_FIELDS,
'schedule': DEFAULT_SUMMARY_FIELDS + ('next_run',),
'unified_job_template': DEFAULT_SUMMARY_FIELDS + ('unified_job_type',),
'last_job': DEFAULT_SUMMARY_FIELDS + ('finished', 'status', 'failed', 'license_error'),

View File

@ -520,15 +520,15 @@ class TaskManager():
logger.debug("{} couldn't be scheduled on graph, waiting for next cycle".format(task.log_format))
def timeout_approval_node(self):
workflow_approval = WorkflowApproval.objects.filter(status='pending').prefetch_related('workflow_approval_template')
workflow_approvals = WorkflowApproval.objects.filter(status='pending').prefetch_related('workflow_approval_template')
now = tz_now()
for task in workflow_approval:
for task in workflow_approvals:
# TODO: copy the timeout to the job itself at launch time, not the template
approval_timeout_seconds = timedelta(seconds=task.workflow_approval_template.timeout)
if task.workflow_approval_template.timeout == 0:
continue
if (now - task.created) >= approval_timeout_seconds:
logger.info("This approval node has timed out.")
logger.info("The approval node {} ({}) has expired after {} seconds.".format(task.name, task.id, task.workflow_approval_template.timeout))
task.status = 'failed'
task.job_explanation = _("This approval node has timed out.")
task.save(update_fields=['status', 'job_explanation'])