Pārlūkot izejas kodu

HUE-1176 [jb] Basic skeleton to fetch Oozie workflow job logs

Romain Rigaux 9 gadi atpakaļ
vecāks
revīzija
dc3e79c9aa

+ 7 - 0
apps/jobbrowser/src/jobbrowser/apis/base_api.py

@@ -54,3 +54,10 @@ class Api():
   def logs(self, appid): return {'progress': 0, 'logs': {'default': ''}}
 
   def profile(self, appid): return {} # Tasks, XML, counters...
+
+
+class MockDjangoRequest():
+  def __init__(self, user):
+    self.user = user
+    self.jt = None
+    self.GET = {}

+ 2 - 8
apps/jobbrowser/src/jobbrowser/apis/job_api.py

@@ -20,7 +20,7 @@ import logging
 
 from django.utils.translation import ugettext as _
 
-from jobbrowser.apis.base_api import Api
+from jobbrowser.apis.base_api import Api, MockDjangoRequest
 from jobbrowser.views import job_attempt_logs_json
 
 
@@ -106,16 +106,10 @@ class YarnApi(Api):
     # name = 'stdout'
     # attempt_index
     # offset=log_offset
-    data = job_attempt_logs_json(YarnRequest(self.user), job=appid)
+    data = job_attempt_logs_json(MockDjangoRequest(self.user), job=appid)
     return {'progress': 0, 'logs': {'default': json.loads(data.content)['log']}}
 
 
-class YarnRequest():
-  def __init__(self, user):
-    self.user = user
-    self.jt = None
-
-
 class YarnAtsApi(Api):
   pass
 

+ 1 - 0
apps/jobbrowser/src/jobbrowser/apis/schedule_api.py

@@ -23,6 +23,7 @@ from liboozie.oozie_api import get_oozie
 from notebook.connectors.oozie_batch import OozieApi
 
 from jobbrowser.apis.base_api import Api
+from oozie.views.dashboard import get_oozie_job_log
 
 
 LOG = logging.getLogger(__name__)

+ 7 - 3
apps/jobbrowser/src/jobbrowser/apis/workflow_api.py

@@ -16,10 +16,11 @@
 # limitations under the License.
 
 import logging
+import json
 
 from django.utils.translation import ugettext as _
 
-from jobbrowser.apis.base_api import Api
+from jobbrowser.apis.base_api import Api, MockDjangoRequest
 from liboozie.oozie_api import get_oozie
 from notebook.connectors.oozie_batch import OozieApi
 
@@ -28,6 +29,7 @@ LOG = logging.getLogger(__name__)
 
 try:
   from oozie.conf import OOZIE_JOBS_COUNT
+  from oozie.views.dashboard import get_oozie_job_log
 except Exception, e:
   LOG.exception('Some application are not enabled for Job Browser v2: %s' % e)
 
@@ -56,5 +58,7 @@ class WorkflowApi(Api):
 
     return {'id': workflow.id, 'name': workflow.appName, 'status': workflow.status}
 
-  def progress(self, appid):
-    pass
+  def logs(self, appid):
+    data = get_oozie_job_log(MockDjangoRequest(self.user), job_id=appid)
+
+    return {'progress': 0, 'logs': {'default': json.loads(data.content)['log']}}

+ 14 - 23
apps/jobbrowser/src/jobbrowser/templates/apps.mako

@@ -294,14 +294,13 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
     <li><a href="#job-mapreduce-page-counters" data-toggle="tab">${ _('Counters') }</a></li>
   </ul>
 
-  <div class="tab-content" id="job-mapreduce-page-logs">
-    %for name in ['stdout', 'stderr', 'syslog']:
+  <div class="tab-content active" id="job-mapreduce-page-logs">
+    % for name in ['stdout', 'stderr', 'syslog']:
       <a href="javascript:void(0)" data-bind="click: fetchLogs, text: '${ name }'"></a>
     % endfor
     </br>
 
-    <pre data-bind="html: logs['default']">
-    </pre>
+    <pre data-bind="html: logs['default']"></pre>
   </div>
 
   <div class="tab-content" id="job-mapreduce-page-attempts">
@@ -378,7 +377,6 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
   ${ _('Submitted') } <span data-bind="text: submitted"></span>
   
   </br></br>
-  <span>
   Variables</br>
   Duration 8s</br>
   </br></br>
@@ -389,36 +387,29 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
   Stop | Resume
 
-  </br>
+  <br/>
 
   <ul class="nav nav-tabs">
-    <li class="active"><a href="#job-mapreduce-page-logs" data-toggle="tab">${ _('Graph') }</a></li>
-    <li><a href="#job-mapreduce-page-attempts" data-toggle="tab">${ _('Logs') }</a></li>
-    <li><a href="#job-mapreduce-page-tasks" data-toggle="tab">${ _('Tasks') }</a></li>
-    <li><a href="#job-mapreduce-page-metadata" data-toggle="tab">${ _('Metadata') }</a></li>
+    <li class="active"><a href="#workflow-page-graph" data-toggle="tab">${ _('Graph') }</a></li>
+    <li><a href="#workflow-page-logs" data-toggle="tab">${ _('Logs') }</a></li>
+    <li><a href="#workflow-page-tasks" data-toggle="tab">${ _('Tasks') }</a></li>
+    <li><a href="#workflow-page-metadata" data-toggle="tab">${ _('Metadata') }</a></li>
   </ul>
 
-  <div class="tab-content" id="job-mapreduce-page-logs">
-    <table class="table table-condensed">
-    </table>
+  <div class="tab-content active" id="workflow-page-graph">
+    Graph
   </div>
 
-  <div class="tab-content" id="job-mapreduce-page-attempts">
-    <table class="table table-condensed">
-    </table>
+  <div class="tab-content" id="workflow-page-logs">
+    <pre data-bind="html: logs['default']"></pre>
   </div>
 
-  <div class="tab-content" id="job-mapreduce-page-tasks">
-    <table class="table table-condensed">
-    </table>
-  </div>
-  
-  <div class="tab-content" id="job-mapreduce-page-metadata">
+  <div class="tab-content" id="workflow-page-tasks">
     <table class="table table-condensed">
     </table>
   </div>
   
-  <div class="tab-content" id="job-mapreduce-page-counters">
+  <div class="tab-content" id="workflow-page-metadata">
     <table class="table table-condensed">
     </table>
   </div>