浏览代码

HUE-3797 [scheduler] Adding basic celery beat page in Job browser

Romain 6 年之前
父节点
当前提交
10edc8b24a

+ 9 - 9
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -394,8 +394,8 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
                   <div class="jb-panel" data-bind="template: { name: 'queries-page${ SUFFIX }' }"></div>
                   <div class="jb-panel" data-bind="template: { name: 'queries-page${ SUFFIX }' }"></div>
                 <!-- /ko -->
                 <!-- /ko -->
 
 
-                <!-- ko if: mainType() == 'beats' -->
-                  <div class="jb-panel" data-bind="template: { name: 'beats-page${ SUFFIX }' }"></div>
+                <!-- ko if: mainType() == 'celery-beat' -->
+                  <div class="jb-panel" data-bind="template: { name: 'celery-beat-page${ SUFFIX }' }"></div>
                 <!-- /ko -->
                 <!-- /ko -->
 
 
                 <!-- ko if: mainType() == 'workflows' -->
                 <!-- ko if: mainType() == 'workflows' -->
@@ -1670,7 +1670,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 </script>
 </script>
 
 
 
 
-<script type="text/html" id="beats-page${ SUFFIX }">
+<script type="text/html" id="celery-beat-page${ SUFFIX }">
   <div class="row-fluid">
   <div class="row-fluid">
     <div data-bind="css: {'span2': !$root.isMini(), 'span12': $root.isMini() }">
     <div data-bind="css: {'span2': !$root.isMini(), 'span12': $root.isMini() }">
       <div class="sidebar-nav">
       <div class="sidebar-nav">
@@ -1700,10 +1700,10 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
               <div class="bar" data-bind="style: {'width': progress() + '%'}"></div>
               <div class="bar" data-bind="style: {'width': progress() + '%'}"></div>
             </div>
             </div>
           </li>
           </li>
-          <li class="nav-header">${ _('Duration') }</li>
-          <li><span data-bind="text: duration().toHHMMSS()"></span></li>
-          <li class="nav-header">${ _('Submitted') }</li>
-          <li><span data-bind="moment: {data: submitted, format: 'LLL'}"></span></li>
+          ##<li class="nav-header">${ _('Duration') }</li>
+          ##<li><span data-bind="text: duration().toHHMMSS()"></span></li>
+          ##<li class="nav-header">${ _('Submitted') }</li>
+          ##<li><span data-bind="moment: {data: submitted, format: 'LLL'}"></span></li>
         </ul>
         </ul>
       </div>
       </div>
     </div>
     </div>
@@ -3389,7 +3389,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           {'interface': 'dataware2-clusters', 'label': '${ _ko('Warehouses') }', 'condition': dataWarehouse2InterfaceCondition},
           {'interface': 'dataware2-clusters', 'label': '${ _ko('Warehouses') }', 'condition': dataWarehouse2InterfaceCondition},
           {'interface': 'engines', 'label': '${ _ko('') }', 'condition': enginesInterfaceCondition},
           {'interface': 'engines', 'label': '${ _ko('') }', 'condition': enginesInterfaceCondition},
           {'interface': 'queries', 'label': '${ _ko('Queries') }', 'condition': queryInterfaceCondition},
           {'interface': 'queries', 'label': '${ _ko('Queries') }', 'condition': queryInterfaceCondition},
-          {'interface': 'celery-beat', 'label': '${ _ko('Beat Schedules') }', 'condition': schedulerBeatInterfaceCondition},
+          {'interface': 'celery-beat', 'label': '${ _ko('Scheduled Tasks') }', 'condition': schedulerBeatInterfaceCondition},
           {'interface': 'workflows', 'label': '${ _ko('Workflows') }', 'condition': schedulerInterfaceCondition},
           {'interface': 'workflows', 'label': '${ _ko('Workflows') }', 'condition': schedulerInterfaceCondition},
           {'interface': 'schedules', 'label': '${ _ko('Schedules') }', 'condition': schedulerInterfaceCondition},
           {'interface': 'schedules', 'label': '${ _ko('Schedules') }', 'condition': schedulerInterfaceCondition},
           {'interface': 'bundles', 'label': '${ _ko('Bundles') }', 'condition': schedulerExtraInterfaceCondition},
           {'interface': 'bundles', 'label': '${ _ko('Bundles') }', 'condition': schedulerExtraInterfaceCondition},
@@ -3578,7 +3578,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           case 'oozie-info':
           case 'oozie-info':
           case 'jobs':
           case 'jobs':
           case 'queries':
           case 'queries':
-          case 'beats':
+          case 'celery-beat':
           case 'workflows':
           case 'workflows':
           case 'schedules':
           case 'schedules':
           case 'bundles':
           case 'bundles':

+ 27 - 19
desktop/core/src/desktop/lib/scheduler/lib/beat.py

@@ -72,7 +72,33 @@ class CeleryBeatApi(Api):
 
 
 
 
   def list_tasks(self, user):
   def list_tasks(self, user):
-    return [{
+    return [
+      self._get_task(task)
+      for task in PeriodicTask.objects.filter(description=user.username)
+    ]
+
+  def list_task(self, task_id):
+    return self._get_task(PeriodicTask.objects.get(id=task_id))
+
+
+  def action(self, schedule_id, schedule_ids=None, action='pause'):
+    if schedule_ids is None:
+      schedule_ids = [schedule_id]
+
+    task = PeriodicTask.objects.get(id__in=schedule_ids, description=user.username)
+
+    if action == 'pause':
+      task.enabled = False
+      task.saved()
+    elif action == 'resume':
+      task.enabled = False
+      task.saved()
+    elif action == 'delete':
+      task.delete()
+
+
+  def _get_task(self, task):
+    return {
         'id': task.id,
         'id': task.id,
         'name': task.name,
         'name': task.name,
         'description': task.description,
         'description': task.description,
@@ -95,21 +121,3 @@ class CeleryBeatApi(Api):
         'crontab': task.crontab,
         'crontab': task.crontab,
         'solar': task.solar
         'solar': task.solar
       }
       }
-      for task in PeriodicTask.objects.filter(description=user.username)
-    ]
-
-
-  def action(self, schedule_id, schedule_ids=None, action='pause'):
-    if schedule_ids is None:
-      schedule_ids = [schedule_id]
-
-    task = PeriodicTask.objects.get(id__in=schedule_ids, description=user.username)
-
-    if action == 'pause':
-      task.enabled = False
-      task.saved()
-    elif action == 'resume':
-      task.enabled = False
-      task.saved()
-    elif action == 'delete':
-      task.delete()