From 2d5f2eb52067993b749e6e718a84f3696c8b22d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Lesage?= <tlesage@teklia.com> Date: Tue, 23 Apr 2024 18:20:40 +0200 Subject: [PATCH] Add Task.original_task --- arkindex/ponos/api.py | 1 + .../migrations/0008_task_original_task.py | 19 +++++++++++++++++++ arkindex/ponos/models.py | 9 ++++++++- arkindex/ponos/serializers.py | 2 ++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 arkindex/ponos/migrations/0008_task_original_task.py diff --git a/arkindex/ponos/api.py b/arkindex/ponos/api.py index 0c123b1082..9334dc0e82 100644 --- a/arkindex/ponos/api.py +++ b/arkindex/ponos/api.py @@ -251,6 +251,7 @@ class TaskRestart(ProcessACLMixin, CreateAPIView): copy.save() # Copy the original task + copy.original_task_id = copy.id copy.id = uuid.uuid4() copy.slug = basename copy.state = State.Pending diff --git a/arkindex/ponos/migrations/0008_task_original_task.py b/arkindex/ponos/migrations/0008_task_original_task.py new file mode 100644 index 0000000000..36e072befc --- /dev/null +++ b/arkindex/ponos/migrations/0008_task_original_task.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.7 on 2024-04-23 12:19 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("ponos", "0007_remove_task_has_docker_socket"), + ] + + operations = [ + migrations.AddField( + model_name="task", + name="original_task", + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="restarts", to="ponos.task"), + ), + ] diff --git a/arkindex/ponos/models.py b/arkindex/ponos/models.py index 2eaaee05e7..bfc1864aaa 100644 --- a/arkindex/ponos/models.py +++ b/arkindex/ponos/models.py @@ -313,13 +313,20 @@ class Task(models.Model): related_name="children", symmetrical=False, ) - container = models.CharField( max_length=64, null=True, blank=True, ) + original_task = models.ForeignKey( + "self", + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name="restarts" + ) + created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) expiry = models.DateTimeField(default=expiry_default) diff --git a/arkindex/ponos/serializers.py b/arkindex/ponos/serializers.py index 932cc7c0c9..392e993f43 100644 --- a/arkindex/ponos/serializers.py +++ b/arkindex/ponos/serializers.py @@ -89,6 +89,7 @@ class TaskSerializer(TaskLightSerializer): "agent", "gpu", "extra_files", + "original_task_id" ) read_only_fields = TaskLightSerializer.Meta.read_only_fields + ( "logs", @@ -96,6 +97,7 @@ class TaskSerializer(TaskLightSerializer): "agent", "gpu", "extra_files", + "original_task_id" ) @extend_schema_field(serializers.CharField()) -- GitLab