mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-22 05:50:34 +00:00
Use sqlalchemy events to emit jsonpatches to the client.
This commit is contained in:
@ -105,12 +105,6 @@ class CheckJobsMixin:
|
||||
return
|
||||
else:
|
||||
job.status = 'queued'
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/status'.format(job.id),
|
||||
'value': job.status
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
finally:
|
||||
self.send_job_notification(job)
|
||||
|
||||
@ -125,12 +119,6 @@ class CheckJobsMixin:
|
||||
+ '(job.status: {} -> failed)'.format(job.status)
|
||||
)
|
||||
job.status = 'failed'
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/status'.format(job.id),
|
||||
'value': job.status
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
except docker.errors.APIError as e:
|
||||
logging.error(
|
||||
'Get "{}" service raised '.format(service_name)
|
||||
@ -152,12 +140,6 @@ class CheckJobsMixin:
|
||||
task_state = service_tasks[0].get('Status').get('State')
|
||||
if job.status == 'queued' and task_state != 'pending':
|
||||
job.status = 'running'
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/status'.format(job.id),
|
||||
'value': job.status
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
elif job.status == 'running' and task_state in ['complete', 'failed']: # noqa
|
||||
try:
|
||||
service.remove()
|
||||
@ -178,26 +160,8 @@ class CheckJobsMixin:
|
||||
db.session.add(job_result)
|
||||
db.session.flush()
|
||||
db.session.refresh(job_result)
|
||||
patch_operation = {
|
||||
'op': 'add',
|
||||
'path': '/jobs/{}/results/{}'.format(job.id, job_result.id), # noqa
|
||||
'value': job_result.to_dict()
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation) # noqa
|
||||
job.end_date = datetime.utcnow()
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/end_date'.format(job.id),
|
||||
'value': job.end_date.timestamp()
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
job.status = task_state
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/status'.format(job.id),
|
||||
'value': job.status
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
finally:
|
||||
self.send_job_notification(job)
|
||||
|
||||
@ -207,12 +171,6 @@ class CheckJobsMixin:
|
||||
service = self.docker.services.get(service_name)
|
||||
except docker.errors.NotFound:
|
||||
job.status = 'canceled'
|
||||
patch_operation = {
|
||||
'op': 'replace',
|
||||
'path': '/jobs/{}/status'.format(job.id),
|
||||
'value': job.status
|
||||
}
|
||||
self.buffer_user_patch_operation(job, patch_operation)
|
||||
except docker.errors.APIError as e:
|
||||
logging.error(
|
||||
'Get "{}" service raised '.format(service_name)
|
||||
|
Reference in New Issue
Block a user