Browse Source

HUE-2176 [oozie] Progress report on dashboard can slow the page a lot

Adding an API to get the Oozie logs of any job:
e.g.
http://127.0.0.1:8000/oozie/get_oozie_job_log/0000028-140711130513496-oozie-oozi-W
Romain Rigaux 11 năm trước cách đây
mục cha
commit
80872495dc

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundle.mako

@@ -261,7 +261,7 @@ ${ layout.menubar(section='bundles', dashboard=True) }
       </div>
 
       <div class="tab-pane" id="log">
-        <pre>${ oozie_bundle.log.decode('utf-8', 'replace') }</pre>
+        <pre></pre>
       </div>
 
       <div class="tab-pane" id="definition">

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako

@@ -279,7 +279,7 @@ ${ layout.menubar(section='coordinators', dashboard=True) }
       </div>
 
       <div class="tab-pane" id="log">
-        <pre>${ oozie_coordinator.log.decode('utf-8', 'replace') }</pre>
+        <pre></pre>
       </div>
 
       <div class="tab-pane" id="definition">

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow.mako

@@ -279,7 +279,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
         </div>
 
         <div class="tab-pane" id="log">
-          <pre>${ oozie_workflow.log.decode('utf-8', 'replace') }</pre>
+          <pre></pre>
         </div>
 
         <div class="tab-pane" id="definition">

+ 1 - 0
apps/oozie/src/oozie/urls.py

@@ -98,6 +98,7 @@ urlpatterns += patterns(
   url(r'^manage_oozie_jobs/(?P<job_id>[-\w]+)/(?P<action>(start|suspend|resume|kill|rerun))$', 'manage_oozie_jobs', name='manage_oozie_jobs'),
 
   url(r'^submit_external_job/(?P<application_path>.+?)$', 'submit_external_job', name='submit_external_job'),
+  url(r'^get_oozie_job_log/(?P<job_id>[-\w]+)$', 'get_oozie_job_log', name='get_oozie_job_log'),
 
   url(r'^list_oozie_info/$', 'list_oozie_info', name='list_oozie_info'),
 

+ 13 - 0
apps/oozie/src/oozie/views/dashboard.py

@@ -347,6 +347,19 @@ def list_oozie_workflow_action(request, action):
   })
 
 
+@show_oozie_error
+def get_oozie_job_log(request, job_id):
+  oozie_job = check_job_access_permission(request, job_id)
+
+  return_obj = {
+    'id': oozie_job.id,
+    'status':  oozie_job.status,
+    'log': oozie_job.log,
+  }
+
+  return HttpResponse(encode_json_for_js(return_obj), mimetype="application/json")
+
+
 @show_oozie_error
 def list_oozie_info(request):
   api = get_oozie(request.user)