mirror of
https://github.com/clearml/clearml-server
synced 2025-03-03 02:33:02 +00:00
Support queue_name in tasks enqueue
This commit is contained in:
parent
6c2dcb5c8a
commit
b90165b4e4
@ -96,6 +96,7 @@ class UpdateRequest(TaskUpdateRequest):
|
||||
|
||||
class EnqueueRequest(UpdateRequest):
|
||||
queue = StringField()
|
||||
queue_name = StringField()
|
||||
|
||||
|
||||
class DeleteRequest(UpdateRequest):
|
||||
@ -262,6 +263,7 @@ class StopManyRequest(TaskBatchRequest):
|
||||
|
||||
class EnqueueManyRequest(TaskBatchRequest):
|
||||
queue = StringField()
|
||||
queue_name = StringField()
|
||||
validate_tasks = BoolField(default=False)
|
||||
|
||||
|
||||
|
@ -50,6 +50,18 @@ class QueueBLL(object):
|
||||
queue.save()
|
||||
return queue
|
||||
|
||||
def get_by_name(
|
||||
self,
|
||||
company_id: str,
|
||||
queue_name: str,
|
||||
only: Optional[Sequence[str]] = None,
|
||||
) -> Queue:
|
||||
qs = Queue.objects(name=queue_name, company=company_id)
|
||||
if only:
|
||||
qs = qs.only(*only)
|
||||
|
||||
return qs.first()
|
||||
|
||||
def get_by_id(
|
||||
self, company_id: str, queue_id: str, only: Optional[Sequence[str]] = None
|
||||
) -> Queue:
|
||||
|
@ -108,9 +108,23 @@ def enqueue_task(
|
||||
queue_id: str,
|
||||
status_message: str,
|
||||
status_reason: str,
|
||||
queue_name: str = None,
|
||||
validate: bool = False,
|
||||
force: bool = False,
|
||||
) -> Tuple[int, dict]:
|
||||
if queue_id and queue_name:
|
||||
raise errors.bad_request.ValidationError(
|
||||
"Either queue id or queue name should be provided"
|
||||
)
|
||||
|
||||
if queue_name:
|
||||
queue = queue_bll.get_by_name(
|
||||
company_id=company_id, queue_name=queue_name, only=("id",)
|
||||
)
|
||||
if not queue:
|
||||
queue = queue_bll.create(company_id=company_id, name=queue_name)
|
||||
queue_id = queue.id
|
||||
|
||||
if not queue_id:
|
||||
# try to get default queue
|
||||
queue_id = queue_bll.get_default(company_id).id
|
||||
|
@ -1898,7 +1898,7 @@ Fails if the following parameters in the task were not filled:
|
||||
]
|
||||
properties {
|
||||
queue {
|
||||
description: "Queue id. If not provided, task is added to the default queue."
|
||||
description: "Queue id. If not provided and no queue name is passed then task is added to the default queue."
|
||||
type: string
|
||||
}
|
||||
}
|
||||
@ -1914,6 +1914,12 @@ Fails if the following parameters in the task were not filled:
|
||||
}
|
||||
}
|
||||
}
|
||||
"2.19": ${enqueue."1.5"} {
|
||||
request.properties.queue_name {
|
||||
description: The name of the queue. If the queue does not exist then it is auto-created. Cannot be used together with the queue id
|
||||
type: string
|
||||
}
|
||||
}
|
||||
}
|
||||
enqueue_many {
|
||||
"2.13": ${_definitions.change_many_request} {
|
||||
@ -1922,7 +1928,7 @@ enqueue_many {
|
||||
properties {
|
||||
ids.description: "IDs of the tasks to enqueue"
|
||||
queue {
|
||||
description: "Queue id. If not provided, tasks are added to the default queue."
|
||||
description: "Queue id. If not provided and no queue name is passed then tasks are added to the default queue."
|
||||
type: string
|
||||
}
|
||||
validate_tasks {
|
||||
@ -1941,6 +1947,12 @@ enqueue_many {
|
||||
}
|
||||
}
|
||||
}
|
||||
"2.19": ${enqueue_many."2.13"} {
|
||||
request.properties.queue_name {
|
||||
description: The name of the queue. If the queue does not exist then it is auto-created. Cannot be used together with the queue id
|
||||
type: string
|
||||
}
|
||||
}
|
||||
}
|
||||
dequeue {
|
||||
"1.5" {
|
||||
|
@ -861,6 +861,7 @@ def enqueue(call: APICall, company_id, request: EnqueueRequest):
|
||||
queue_id=request.queue,
|
||||
status_message=request.status_message,
|
||||
status_reason=request.status_reason,
|
||||
queue_name=request.queue_name,
|
||||
force=request.force,
|
||||
)
|
||||
call.result.data_model = EnqueueResponse(queued=queued, **res)
|
||||
@ -879,6 +880,7 @@ def enqueue_many(call: APICall, company_id, request: EnqueueManyRequest):
|
||||
queue_id=request.queue,
|
||||
status_message=request.status_message,
|
||||
status_reason=request.status_reason,
|
||||
queue_name=request.queue_name,
|
||||
validate=request.validate_tasks,
|
||||
),
|
||||
ids=request.ids,
|
||||
|
@ -20,7 +20,7 @@ class TestBatchOperations(TestService):
|
||||
ids = [*tasks, missing_id]
|
||||
|
||||
# enqueue
|
||||
res = self.api.tasks.enqueue_many(ids=ids)
|
||||
res = self.api.tasks.enqueue_many(ids=ids, queue_name="test")
|
||||
self._assert_succeeded(res, tasks)
|
||||
self._assert_failed(res, [missing_id])
|
||||
data = self.api.tasks.get_all_ex(id=ids).tasks
|
||||
|
Loading…
Reference in New Issue
Block a user