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