Skip to content
Snippets Groups Projects
Commit b33808be authored by Nico Vermaas's avatar Nico Vermaas
Browse files

propagate logentry.status to task.status

parent 6d4f1df2
No related branches found
No related tags found
No related merge requests found
Pipeline #8566 passed
atdb/docs/ATDB-LDV Workflow Diagram.png

94.7 KiB | W: | H:

atdb/docs/ATDB-LDV Workflow Diagram.png

102 KiB | W: | H:

atdb/docs/ATDB-LDV Workflow Diagram.png
atdb/docs/ATDB-LDV Workflow Diagram.png
atdb/docs/ATDB-LDV Workflow Diagram.png
atdb/docs/ATDB-LDV Workflow Diagram.png
  • 2-up
  • Swipe
  • Onion skin
# Generated by Django 3.1.4 on 2021-01-28 09:36
import datetime
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Workflow',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('workflow_uri', models.CharField(blank=True, max_length=30, null=True, unique=True)),
('repository', models.CharField(blank=True, max_length=100, null=True)),
('commit_id', models.CharField(blank=True, max_length=15, null=True)),
('path', models.CharField(blank=True, max_length=100, null=True)),
],
),
migrations.CreateModel(
name='Task',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('taskID', models.CharField(blank=True, db_index=True, max_length=30, null=True)),
('task_type', models.CharField(default='task', max_length=20)),
('filter', models.CharField(blank=True, max_length=30, null=True)),
('new_status', models.CharField(default='defining', max_length=50, null=True)),
('status', models.CharField(blank=True, db_index=True, default='unknown', max_length=50, null=True)),
('new_workflow_id', models.CharField(blank=True, max_length=15, null=True)),
('new_workflow_uri', models.CharField(blank=True, max_length=100, null=True)),
('skip', models.BooleanField(default=False)),
('creationTime', models.DateTimeField(blank=True, default=datetime.datetime.utcnow)),
('priority', models.IntegerField(null=True)),
('purge_policy', models.CharField(blank=True, default='no', max_length=5, null=True)),
('stage_request_id', models.IntegerField(default=0, null=True)),
('project', models.CharField(blank=True, default='unknown', max_length=100, null=True)),
('sas_id', models.CharField(blank=True, max_length=15, null=True)),
('inputs', models.JSONField(blank=True, null=True)),
('outputs', models.JSONField(blank=True, null=True)),
('predecessor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='successors', to='taskdatabase.task')),
('workflow', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tasks', to='taskdatabase.workflow')),
],
),
migrations.CreateModel(
name='Status',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(default='unknown', max_length=50)),
('timestamp', models.DateTimeField(blank=True, default=datetime.datetime.utcnow)),
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='status_history', to='taskdatabase.task')),
],
),
migrations.CreateModel(
name='LogEntry',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cpu_cycles', models.IntegerField(blank=True, null=True)),
('wall_clock_time', models.IntegerField(blank=True, null=True)),
('url_to_log_file', models.CharField(blank=True, max_length=100, null=True)),
('step_name', models.CharField(blank=True, max_length=30, null=True)),
('start_time', models.DateTimeField(blank=True, null=True)),
('end_time', models.DateTimeField(blank=True, null=True)),
('status', models.CharField(blank=True, default='defined', max_length=50, null=True)),
('description', models.CharField(blank=True, max_length=100, null=True)),
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='log_entries', to='taskdatabase.task')),
],
),
]
# Generated by Django 3.1.4 on 2021-01-28 10:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('taskdatabase', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='task',
name='skip',
),
migrations.AddField(
model_name='task',
name='metrics',
field=models.JSONField(blank=True, null=True),
),
migrations.AddField(
model_name='task',
name='resume',
field=models.BooleanField(default=True),
),
migrations.AlterField(
model_name='task',
name='stage_request_id',
field=models.IntegerField(null=True),
),
]
......@@ -178,6 +178,13 @@ class LogEntryListViewAPI(generics.ListCreateAPIView):
filter_backends = (filters.DjangoFilterBackend,)
filter_class = LogEntryFilter
# overriding the POST, because the status that comes in with the LogEntry
# also needs to propagate to the task.new_status
def perform_create(self, serializer):
log_entry = serializer.save()
task = log_entry.task
task.new_status = log_entry.status
task.save()
# example: /atdb/workflows/5/
# calling this view serializes a task in the REST API
......@@ -189,9 +196,9 @@ class LogEntryDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
queryset = LogEntry.objects.all()
serializer_class = LogEntrySerializer
# overriding the update, because the status that comes in with the LogEntry
# overriding the POST, because the status that comes in with the LogEntry
# also needs to propagate to the task.new_status
def perform_update(self, serializer):
def perform_create(self, serializer):
log_entry = serializer.save()
task = log_entry.task
task.new_status = log_entry.status
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment