From 2332b8589b4e3752f2dfd5a6b2a87c1f3cf56c7f Mon Sep 17 00:00:00 2001
From: clearml <>
Date: Thu, 5 Dec 2024 22:14:03 +0200
Subject: [PATCH] Update the task execution queue in queues.add_task

---
 apiserver/apimodels/queues.py         |  4 ++++
 apiserver/schema/services/queues.conf |  7 +++++++
 apiserver/services/queues.py          | 16 ++++++++++------
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/apiserver/apimodels/queues.py b/apiserver/apimodels/queues.py
index e03b517..d784137 100644
--- a/apiserver/apimodels/queues.py
+++ b/apiserver/apimodels/queues.py
@@ -56,6 +56,10 @@ class TaskRequest(QueueRequest):
     task = StringField(required=True)
 
 
+class AddTaskRequest(TaskRequest):
+    update_execution_queue = BoolField(default=True)
+
+
 class MoveTaskRequest(TaskRequest):
     count = IntField(default=1)
 
diff --git a/apiserver/schema/services/queues.conf b/apiserver/schema/services/queues.conf
index 7617fde..1e7c8cd 100644
--- a/apiserver/schema/services/queues.conf
+++ b/apiserver/schema/services/queues.conf
@@ -447,6 +447,13 @@ add_task {
             }
         }
     }
+    "999.0": ${add_task."2.4"} {
+        request.properties.update_execution_queue {
+            description: If set to false then the task 'execution.queue' is not updated
+            type: boolean
+            default: true
+        }
+    }
 }
 get_next_task {
     "2.4" {
diff --git a/apiserver/services/queues.py b/apiserver/services/queues.py
index 8674a80..9598844 100644
--- a/apiserver/services/queues.py
+++ b/apiserver/services/queues.py
@@ -20,6 +20,7 @@ from apiserver.apimodels.queues import (
     GetNextTaskRequest,
     GetByIdRequest,
     GetAllRequest,
+    AddTaskRequest,
 )
 from apiserver.bll.model import Metadata
 from apiserver.bll.queue import QueueBLL
@@ -154,13 +155,16 @@ def delete(call: APICall, company_id, req_model: DeleteRequest):
     call.result.data = {"deleted": 1}
 
 
-@endpoint("queues.add_task", min_version="2.4", request_data_model=TaskRequest)
-def add_task(call: APICall, company_id, req_model: TaskRequest):
-    call.result.data = {
-        "added": queue_bll.add_task(
-            company_id=company_id, queue_id=req_model.queue, task_id=req_model.task
+@endpoint("queues.add_task", min_version="2.4")
+def add_task(call: APICall, company_id, request: AddTaskRequest):
+    added = queue_bll.add_task(
+        company_id=company_id, queue_id=request.queue, task_id=request.task
+    )
+    if added and request.update_execution_queue:
+        Task.objects(id=request.task).update(
+            execution__queue=request.queue, multi=False
         )
-    }
+    call.result.data = {"added": added}
 
 
 @endpoint("queues.get_next_task", request_data_model=GetNextTaskRequest)