]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/controllers/task.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / pybind / mgr / dashboard / controllers / task.py
1 # -*- coding: utf-8 -*-
2
3 from ..services import progress
4 from ..tools import TaskManager
5 from . import APIDoc, APIRouter, EndpointDoc, RESTController
6
7 TASK_SCHEMA = {
8 "executing_tasks": (str, "ongoing executing tasks"),
9 "finished_tasks": ([{
10 "name": (str, "finished tasks name"),
11 "metadata": ({
12 "pool": (int, "")
13 }, ""),
14 "begin_time": (str, "Task begin time"),
15 "end_time": (str, "Task end time"),
16 "duration": (int, ""),
17 "progress": (int, "Progress of tasks"),
18 "success": (bool, ""),
19 "ret_value": (bool, ""),
20 "exception": (bool, "")
21 }], "")
22 }
23
24
25 @APIRouter('/task')
26 @APIDoc("Task Management API", "Task")
27 class Task(RESTController):
28 @EndpointDoc("Display Tasks",
29 parameters={
30 'name': (str, 'Task Name'),
31 },
32 responses={200: TASK_SCHEMA})
33 def list(self, name=None):
34 executing_t, finished_t = TaskManager.list_serializable(name)
35
36 e, f = progress.get_progress_tasks()
37 executing_t.extend(e)
38 finished_t.extend(f)
39
40 executing_t.sort(key=lambda t: t['begin_time'], reverse=True)
41 finished_t.sort(key=lambda t: t['end_time'], reverse=True)
42
43 return {
44 'executing_tasks': executing_t,
45 'finished_tasks': finished_t
46 }