diff --git a/netbox/core/api/serializers_/tasks.py b/netbox/core/api/serializers_/tasks.py index 1bf474286..5365ee4ea 100644 --- a/netbox/core/api/serializers_/tasks.py +++ b/netbox/core/api/serializers_/tasks.py @@ -47,7 +47,7 @@ class BackgroundTaskSerializer(serializers.Serializer): class BackgroundQueueSerializer(serializers.Serializer): name = serializers.CharField() - url = serializers.SerializerMethodField() + # Note: Queue names are not url safe so not returning a url field jobs = serializers.IntegerField() oldest_job_timestamp = serializers.CharField() index = serializers.IntegerField() diff --git a/netbox/core/api/urls.py b/netbox/core/api/urls.py index 0b9fb7f53..c18d6f2f5 100644 --- a/netbox/core/api/urls.py +++ b/netbox/core/api/urls.py @@ -12,7 +12,6 @@ router.register('jobs', views.JobViewSet) router.register('object-changes', views.ObjectChangeViewSet) router.register('background-queues', views.QueueViewSet, basename='rqqueue') router.register('background-workers', views.WorkerViewSet, basename='rqworker') -# router.register('background-tasks/(?P.+)/', views.TaskViewSet, basename='rqtask') router.register('background-tasks', views.TaskViewSet, basename='rqtask') urlpatterns = router.urls diff --git a/netbox/core/api/views.py b/netbox/core/api/views.py index ff976b66d..f854d48c6 100644 --- a/netbox/core/api/views.py +++ b/netbox/core/api/views.py @@ -108,6 +108,7 @@ class BaseRQListView(viewsets.ViewSet): class QueueViewSet(BaseRQListView): """ Retrieve a list of RQ Queues. + Note: Queue names are not URL safe so not returning a detail view. """ serializer_class = serializers.BackgroundQueueSerializer lookup_field = 'name' @@ -118,17 +119,6 @@ class QueueViewSet(BaseRQListView): def get_data(self): return get_statistics(run_maintenance_tasks=True)["queues"] - def retrieve(self, request, name): - queues = self.get_data() - if not queues: - raise Http404 - - for queue in queues: - if queue['name'] == name: - return Response(self.serializer_class(queue, context={'request': request}).data) - - raise Http404 - class WorkerViewSet(BaseRQListView): """ diff --git a/netbox/core/tests/test_api.py b/netbox/core/tests/test_api.py index 844073caf..54a79ea12 100644 --- a/netbox/core/tests/test_api.py +++ b/netbox/core/tests/test_api.py @@ -5,7 +5,6 @@ from django_rq.workers import get_worker from django.urls import reverse from django.utils import timezone from rq.job import Job as RQ_Job, JobStatus -from rq.registry import DeferredJobRegistry, FailedJobRegistry, FinishedJobRegistry, StartedJobRegistry from users.models import Token, User from utilities.testing import APITestCase, APIViewTestCases, TestCase @@ -151,49 +150,11 @@ class BackgroundTaskTestCase(TestCase): self.assertIn('high', str(response.content)) self.assertIn('low', str(response.content)) - def test_background_tasks_list_default(self): - queue = get_queue('default') - queue.enqueue(self.dummy_job_default) - - response = self.client.get(reverse('core-api:rqtask-list', args=["default",]), **self.header) - self.assertEqual(response.status_code, 200) - self.assertIn('BackgroundTaskTestCase.dummy_job_default', str(response.content)) - - def test_background_tasks_list_finished(self): - queue = get_queue('default') - job = queue.enqueue(self.dummy_job_default) - - registry = FinishedJobRegistry(queue.name, queue.connection) - registry.add(job, 2) - response = self.client.get(reverse('core-api:rqtask-finished', args=["default",]), **self.header) - self.assertEqual(response.status_code, 200) - self.assertIn(job.id, str(response.content)) - - def test_background_tasks_list_failed(self): - queue = get_queue('default') - job = queue.enqueue(self.dummy_job_default) - - registry = FailedJobRegistry(queue.name, queue.connection) - registry.add(job, 2) - response = self.client.get(reverse('core-api:rqtask-failed', args=["default"]), **self.header) - self.assertEqual(response.status_code, 200) - self.assertIn(job.id, str(response.content)) - - def test_background_tasks_list_deferred(self): - queue = get_queue('default') - job = queue.enqueue(self.dummy_job_default) - - registry = DeferredJobRegistry(queue.name, queue.connection) - registry.add(job, 2) - response = self.client.get(reverse('core-api:rqtask-deferred', args=["default",]), **self.header) - self.assertEqual(response.status_code, 200) - self.assertIn(job.id, str(response.content)) - def test_background_task(self): queue = get_queue('default') job = queue.enqueue(self.dummy_job_default) - response = self.client.get(reverse('core-api:rqtaskdetail-detail', args=[job.id]), **self.header) + response = self.client.get(reverse('core-api:rqtask-detail', args=[job.id]), **self.header) self.assertEqual(response.status_code, 200) self.assertIn(str(job.id), str(response.content)) self.assertIn('origin', str(response.content)) @@ -204,7 +165,7 @@ class BackgroundTaskTestCase(TestCase): queue = get_queue('default') job = queue.enqueue(self.dummy_job_default) - response = self.client.post(reverse('core-api:rqtaskdetail-delete', args=[job.id]), **self.header) + response = self.client.post(reverse('core-api:rqtask-delete', args=[job.id]), **self.header) self.assertEqual(response.status_code, 200) self.assertFalse(RQ_Job.exists(job.id, connection=queue.connection)) queue = get_queue('default') @@ -220,7 +181,7 @@ class BackgroundTaskTestCase(TestCase): self.assertTrue(job.is_failed) # Re-enqueue the failed job and check that its status has been reset - response = self.client.post(reverse('core-api:rqtaskdetail-requeue', args=[job.id]), **self.header) + response = self.client.post(reverse('core-api:rqtask-requeue', args=[job.id]), **self.header) self.assertEqual(response.status_code, 200) job = RQ_Job.fetch(job.id, queue.connection) self.assertFalse(job.is_failed) @@ -240,7 +201,7 @@ class BackgroundTaskTestCase(TestCase): self.assertIsNone(job.enqueued_at) # Force-enqueue the deferred job - response = self.client.post(reverse('core-api:rqtaskdetail-enqueue', args=[job.id]), **self.header) + response = self.client.post(reverse('core-api:rqtask-enqueue', args=[job.id]), **self.header) self.assertEqual(response.status_code, 200) # Check that job's status is updated correctly @@ -256,7 +217,7 @@ class BackgroundTaskTestCase(TestCase): worker.prepare_job_execution(job) self.assertEqual(job.get_status(), JobStatus.STARTED) - response = self.client.post(reverse('core-api:rqtaskdetail-stop', args=[job.id]), **self.header) + response = self.client.post(reverse('core-api:rqtask-stop', args=[job.id]), **self.header) self.assertEqual(response.status_code, 200) worker.monitor_work_horse(job, queue) # Sets the job as Failed and removes from Started started_job_registry = StartedJobRegistry(queue.name, connection=queue.connection)