浏览代码

[api] Refactor task server private API endpoints (#4076)

- Change taskserver API endpoint URLs for consistency
- Also introduce some request paramater handling because of above change.
- This is required for the ad-hoc taskserver UI refactoring.
Harsh Gupta 7 月之前
父节点
当前提交
adf189e90f
共有 2 个文件被更改,包括 34 次插入13 次删除
  1. 28 7
      desktop/core/src/desktop/api2.py
  2. 6 6
      desktop/core/src/desktop/urls.py

+ 28 - 7
desktop/core/src/desktop/api2.py

@@ -33,7 +33,7 @@ from django.shortcuts import redirect
 from django.utils.html import escape
 from django.utils.translation import gettext as _
 from django.views.decorators.csrf import ensure_csrf_cookie
-from django.views.decorators.http import require_POST
+from django.views.decorators.http import require_GET, require_POST
 
 from beeswax import common
 from beeswax.management.commands import beeswax_install_examples
@@ -734,7 +734,7 @@ def share_document(request):
 
 @api_error_handler
 @require_POST
-def handle_submit(request):
+def handle_task_submit(request):
   # Extract the task name and params from the request
   try:
     data = json.loads(request.body)
@@ -783,7 +783,8 @@ def handle_submit(request):
 
 
 @api_error_handler
-def get_taskserver_tasks(request):
+@require_GET
+def get_tasks(request):
   if not TASK_SERVER_V2.ENABLED.get():
     return JsonResponse({'error': 'Task server is not enabled'}, status=400)
 
@@ -810,7 +811,16 @@ def get_taskserver_tasks(request):
 
 
 @api_error_handler
-def check_upload_status(request, task_id):
+@require_GET
+def check_upload_task_status(request):
+  task_id = request.GET.get('task_id')
+  if not task_id:
+    return JsonResponse({'error': "Missing parameters: task_id is required"}, status=400)
+
+  return _check_upload_task_status(task_id)
+
+
+def _check_upload_task_status(task_id):
   redis_client = parse_broker_url(TASK_SERVER_V2.BROKER_URL.get())
   try:
     task_key = f'celery-task-meta-{task_id}'
@@ -834,9 +844,14 @@ def check_upload_status(request, task_id):
 
 
 @api_error_handler
-def kill_task(request, task_id):
+@require_POST
+def kill_task(request):
+  task_id = request.POST.get('task_id')
+  if not task_id:
+    return JsonResponse({'error': "Missing parameters: task_id is required"}, status=400)
+
   # Check the current status of the task
-  status_response = check_upload_status(request, task_id)
+  status_response = _check_upload_task_status(task_id)
   status_data = json.loads(status_response.content)
 
   if status_data.get('isFinalized') or status_data.get('isRevoked') or status_data.get('isFailure'):
@@ -850,7 +865,13 @@ def kill_task(request, task_id):
     return JsonResponse({'status': 'error', 'message': f'Failed to terminate task {task_id}: {str(e)}'})
 
 
-def get_task_logs(request, task_id):
+@api_error_handler
+@require_GET
+def get_task_logs(request):
+  task_id = request.GET.get('task_id')
+  if not task_id:
+    return JsonResponse({'error': "Missing parameters: task_id is required"}, status=400)
+
   log_dir = os.getenv("DESKTOP_LOG_DIR", DEFAULT_LOG_DIR)
   log_file = "%s/celery.log" % (log_dir)
   task_log = []

+ 6 - 6
desktop/core/src/desktop/urls.py

@@ -149,12 +149,12 @@ dynamic_patterns += [
   re_path(r'^desktop/api2/doc/restore/?$', desktop_api2.restore_document),
   re_path(r'^desktop/api2/doc/share/link/?$', desktop_api2.share_document_link),
   re_path(r'^desktop/api2/doc/share/?$', desktop_api2.share_document),
-  re_path(r'^desktop/api2/taskserver/handle_submit/?$', desktop_api2.handle_submit, name="desktop_api2.handle_submit"),
-  re_path(r'^desktop/api2/taskserver/get_taskserver_tasks/?$', desktop_api2.get_taskserver_tasks, name="desktop_api2.get_taskserver_tasks"),
-  re_path(r'^desktop/api2/taskserver/get_task_logs/(?P<task_id>[^/]+)/?$', desktop_api2.get_task_logs, name="desktop_api2.get_task_logs"),
-  re_path(r'^desktop/api2/taskserver/check_upload_status/(?P<task_id>[^/]+)/?$', desktop_api2.check_upload_status,
-          name="desktop_api2.check_upload_status"),
-  re_path(r'^desktop/api2/taskserver/kill_task/(?P<task_id>[^/]+)/?$', desktop_api2.kill_task, name="desktop_api2.kill_task"),
+  re_path(r'^desktop/api2/taskserver/tasks/?$', desktop_api2.get_tasks, name="taskserver_get_tasks"),
+  re_path(r'^desktop/api2/taskserver/task/submit/?$', desktop_api2.handle_task_submit, name="taskserver_handle_task_submit"),
+  re_path(r'^desktop/api2/taskserver/task/logs/?$', desktop_api2.get_task_logs, name="taskserver_get_task_logs"),
+  re_path(r'^desktop/api2/taskserver/task/check_upload_status/?$', desktop_api2.check_upload_task_status,
+          name="taskserver_check_upload_task_status"),
+  re_path(r'^desktop/api2/taskserver/task/kill/?$', desktop_api2.kill_task, name="taskserver_kill_task"),
 
   re_path(r'^desktop/api2/get_config/?$', desktop_api2.get_config),
   re_path(r'^desktop/api2/get_hue_config/?$', desktop_api2.get_hue_config),