mark task as failued if ADO notification fails (#77)

This commit is contained in:
bmc-msft
2020-10-01 22:00:08 -04:00
committed by GitHub
parent 4ce9060dd0
commit 8b6ea9f66b
2 changed files with 29 additions and 3 deletions

View File

@ -19,8 +19,10 @@ from azure.devops.v6_0.work_item_tracking.work_item_tracking_client import (
WorkItemTrackingClient,
)
from memoization import cached
from onefuzztypes.models import ADOTemplate, Report
from onefuzztypes.enums import ErrorCode, TaskState
from onefuzztypes.models import ADOTemplate, Error, Report
from ..tasks.main import Task
from .common import Render
@ -194,13 +196,36 @@ class ADO:
self.create_new()
def fail_task(report: Report, error: Exception) -> None:
logging.error(
"ADO report failed: job_id:%s task_id:%s err:%s",
report.job_id,
report.task_id,
error,
)
task = Task.get(report.job_id, report.task_id)
if task:
task.error = Error(code=ErrorCode.NOTIFICATION_FAILURE, errors=[str(error)])
task.state = TaskState.stopping
task.save()
def notify_ado(
config: ADOTemplate, container: str, filename: str, report: Report
) -> None:
logging.info(
"notify ado: job_id:%s task_id:%s container:%s filename:%s",
report.job_id,
report.task_id,
container,
filename,
)
try:
ado = ADO(container, filename, config, report)
ado.process()
except AzureDevOpsServiceError as err:
logging.error("ADO report failed: %s", err)
fail_task(report, err)
except ValueError as err:
logging.error("ADO report value error: %s", err)
fail_task(report, err)