From f1a8d5b31c1c96b840febab74907ea63541d8ea7 Mon Sep 17 00:00:00 2001
From: "@Antelox" <anteloxrce@gmail.com>
Date: Thu, 8 Jun 2023 23:19:59 +0200
Subject: [PATCH 1/2] Replace restart_tasks and delete_tasks methods with the
 relative KartonBackend methods

---
 karton/dashboard/app.py | 27 ++++++---------------------
 1 file changed, 6 insertions(+), 21 deletions(-)

diff --git a/karton/dashboard/app.py b/karton/dashboard/app.py
index 98a272d..575c504 100644
--- a/karton/dashboard/app.py
+++ b/karton/dashboard/app.py
@@ -18,7 +18,6 @@
     request,
     send_from_directory,
 )
-from karton.core import Producer
 from karton.core.backend import KartonMetrics
 from karton.core.base import KartonBase
 from karton.core.inspect import KartonAnalysis, KartonQueue, KartonState
@@ -51,21 +50,6 @@ class KartonDashboard(KartonBase):
 )
 
 
-def restart_tasks(tasks: List[Task]) -> None:
-    identity = "karton.dashboard-retry"
-    producer = Producer(identity=identity)
-
-    for task in tasks:
-        # spawn a new task and mark the original one as finished
-        producer.send_task(task.fork_task())
-        karton.backend.set_task_status(task=task, status=TaskState.FINISHED)
-
-
-def cancel_tasks(tasks: List[Task]) -> None:
-    for task in tasks:
-        karton.backend.set_task_status(task=task, status=TaskState.FINISHED)
-
-
 class TaskView:
     """
     All problems in computer science can be solved by another
@@ -280,7 +264,8 @@ def restart_crashed_queue_tasks(queue_name):
     if not queue:
         return jsonify({"error": "Queue doesn't exist"}), 404
 
-    restart_tasks(queue.crashed_tasks)
+    for task in queue.crashed_tasks:
+        karton.backend.restart_task(task)
     return redirect(request.referrer)
 
 
@@ -291,7 +276,7 @@ def cancel_crashed_queue_tasks(queue_name):
     if not queue:
         return jsonify({"error": "Queue doesn't exist"}), 404
 
-    cancel_tasks(queue.crashed_tasks)
+    karton.backend.delete_tasks(queue.crashed_tasks)
     return redirect(request.referrer)
 
 
@@ -302,7 +287,7 @@ def cancel_pending_queue_tasks(queue_name):
     if not queue:
         return jsonify({"error": "Queue doesn't exist"}), 404
 
-    cancel_tasks(queue.pending_tasks)
+    karton.backend.delete_tasks(queue.pending_tasks)
     return redirect(request.referrer)
 
 
@@ -312,7 +297,7 @@ def restart_task(task_id):
     if not task:
         return jsonify({"error": "Task doesn't exist"}), 404
 
-    restart_tasks([task])
+    karton.backend.restart_task(task)
     return redirect(request.referrer)
 
 
@@ -322,7 +307,7 @@ def cancel_task(task_id):
     if not task:
         return jsonify({"error": "Task doesn't exist"}), 404
 
-    cancel_tasks([task])
+    karton.backend.delete_tasks([task])
     return redirect(request.referrer)
 
 

From 048be00510f5d10804fc3a0dd29de30649d25628 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Praszmo?= <michalpr@cert.pl>
Date: Tue, 20 Jun 2023 09:50:29 +0200
Subject: [PATCH 2/2] Revert cancel refactor

---
 karton/dashboard/app.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/karton/dashboard/app.py b/karton/dashboard/app.py
index 575c504..64d9681 100644
--- a/karton/dashboard/app.py
+++ b/karton/dashboard/app.py
@@ -50,6 +50,11 @@ class KartonDashboard(KartonBase):
 )
 
 
+def cancel_tasks(tasks: List[Task]) -> None:
+    for task in tasks:
+        karton.backend.set_task_status(task=task, status=TaskState.FINISHED)
+
+
 class TaskView:
     """
     All problems in computer science can be solved by another
@@ -276,7 +281,7 @@ def cancel_crashed_queue_tasks(queue_name):
     if not queue:
         return jsonify({"error": "Queue doesn't exist"}), 404
 
-    karton.backend.delete_tasks(queue.crashed_tasks)
+    cancel_tasks(queue.crashed_tasks)
     return redirect(request.referrer)
 
 
@@ -287,7 +292,7 @@ def cancel_pending_queue_tasks(queue_name):
     if not queue:
         return jsonify({"error": "Queue doesn't exist"}), 404
 
-    karton.backend.delete_tasks(queue.pending_tasks)
+    cancel_tasks(queue.pending_tasks)
     return redirect(request.referrer)
 
 
@@ -307,7 +312,7 @@ def cancel_task(task_id):
     if not task:
         return jsonify({"error": "Task doesn't exist"}), 404
 
-    karton.backend.delete_tasks([task])
+    cancel_tasks([task])
     return redirect(request.referrer)