diff --git a/apiserver/schema/services/tasks.conf b/apiserver/schema/services/tasks.conf index b7fe26b..7767de1 100644 --- a/apiserver/schema/services/tasks.conf +++ b/apiserver/schema/services/tasks.conf @@ -1948,6 +1948,17 @@ Fails if the following parameters in the task were not filled: type: string } } + "999.0": ${enqueue."2.19"} { + request.properties.verify_watched_queue { + description: If passed then check wheter there are any workers watiching the queue + type: boolean + default: false + } + response.properties.queue_watched { + description: Returns true if there are workers or autscalers working with the queue + type: boolean + } + } } enqueue_many { "2.13": ${_definitions.change_many_request} { @@ -1981,6 +1992,17 @@ enqueue_many { type: string } } + "999.0": ${enqueue_many."2.19"} { + request.properties.verify_watched_queue { + description: If passed then check wheter there are any workers watiching the queue + type: boolean + default: false + } + response.properties.queue_watched { + description: Returns true if there are workers or autscalers working with the queue + type: boolean + } + } } dequeue { "1.5" { diff --git a/apiserver/services/tasks.py b/apiserver/services/tasks.py index 1b9ff84..377e85c 100644 --- a/apiserver/services/tasks.py +++ b/apiserver/services/tasks.py @@ -850,6 +850,11 @@ def enqueue(call: APICall, company_id, request: EnqueueRequest): queue_name=request.queue_name, force=request.force, ) + if request.verify_watched_queue: + res_queue = nested_get(res, ("fields", "execution.queue")) + if res_queue: + res["queue_watched"] = queue_bll.check_for_workers(company_id, res_queue) + call.result.data_model = EnqueueResponse(queued=queued, **res) @@ -871,12 +876,20 @@ def enqueue_many(call: APICall, company_id, request: EnqueueManyRequest): ), ids=request.ids, ) + extra = {} + if request.verify_watched_queue and results: + _id, (queued, res) = results[0] + res_queue = nested_get(res, ("fields", "execution.queue")) + if res_queue: + extra["queue_watched"] = queue_bll.check_for_workers(company_id, res_queue) + call.result.data_model = EnqueueManyResponse( succeeded=[ EnqueueBatchItem(id=_id, queued=bool(queued), **res) for _id, (queued, res) in results ], failed=failures, + **extra, ) diff --git a/apiserver/tests/automated/test_batch_operations.py b/apiserver/tests/automated/test_batch_operations.py index 83cd2cd..e2d8c0f 100644 --- a/apiserver/tests/automated/test_batch_operations.py +++ b/apiserver/tests/automated/test_batch_operations.py @@ -7,9 +7,6 @@ class TestBatchOperations(TestService): comment = "this is a comment" delete_params = dict(can_fail=True, force=True) - def setUp(self, version="2.13"): - super().setUp(version=version) - def test_tasks(self): tasks = [self._temp_task() for _ in range(2)] models = [