Jelajahi Sumber

HUE-1176 [jb] Task attempt page revamp

Romain Rigaux 9 tahun lalu
induk
melakukan
0323837aa2

+ 7 - 14
apps/jobbrowser/src/jobbrowser/apis/job_api.py

@@ -158,11 +158,9 @@ class YarnMapReduceTaskApi(Api):
 
 
   def logs(self, appid, app_type):
-    if app_type == 'MAPREDUCE':
-      response = job_attempt_logs_json(MockDjangoRequest(self.user), job=appid)
-      logs = json.loads(response.content)['log']
-    else:
-      logs = None
+    response = job_attempt_logs_json(MockDjangoRequest(self.user), job=self.app_id)
+    logs = json.loads(response.content)['log']
+
     return {'progress': 0, 'logs': {'default': logs}}
 
 
@@ -210,18 +208,13 @@ class YarnMapReduceTaskAttemptApi(Api):
 
 
   def logs(self, appid, app_type):
-    if app_type == 'MAPREDUCE':
-      response = job_attempt_logs_json(MockDjangoRequest(self.user), job=appid)
-      logs = json.loads(response.content)['log']
-    else:
-      logs = None
-    return {'progress': 0, 'logs': {'default': logs}}
+    task = NativeYarnApi(self.user).get_task(jobid=self.app_id, task_id=self.task_id).get_attempt(self.attempt_id)
+    stdout, stderr, syslog = task.get_task_log()
+
+    return {'progress': 0, 'logs': {'default': stdout, 'stdout': stdout, 'stderr': stderr, 'syslog': syslog}}
 
 
   def profile(self, appid, app_type, app_property):
-    if app_property == 'attempts':
-      task = NativeYarnApi(self.user).get_task(jobid=self.app_id, task_id=appid)
-      return task.attempts
 
     return {}
 

+ 42 - 3
apps/jobbrowser/src/jobbrowser/templates/apps.mako

@@ -462,10 +462,49 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 </script>
 
 <script type="text/html" id="job-mapreduce-task-attempt-page">
-  Logs | Metadata | Counters
 
-  <br/><br/>
-  Attempt | Container
+  <ul class="nav nav-tabs">
+    <li class="active"><a href="#job-mapreduce-task-attempt-page-logs" data-toggle="tab">${ _('Logs') }</a></li>
+    <li><a href="#job-mapreduce-task-attempt-page-metadata" data-toggle="tab">${ _('Metadata') }</a></li>
+    <li><a href="#job-mapreduce-task-attempt-page-counters" data-toggle="tab">${ _('Counters') }</a></li>
+  </ul>
+
+  <div class="tab-content">
+    <div class="tab-pane active" id="job-mapreduce-task-attempt-page-logs">
+      <ul class="nav nav-tabs">
+        <li class="active"><a href="#job-mapreduce-task-attempt-page-logs-attempts" data-toggle="tab">${ _('Attempts') }</a></li>
+        <li><a href="#job-mapreduce-task-attempt-page-logs-container" data-toggle="tab">${ _('Container') }</a></li>
+      </ul>
+
+      <div class="tab-content">
+        <div class="tab-pane active" id="job-mapreduce-task-attempt-page-logs-attempts">
+          % 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>
+        </div>
+
+        <div class="tab-pane" id="job-mapreduce-task-attempt-page-logs-container">
+          % for name in ['container-stdout', 'container-stderr', 'container-syslog']:
+            <a href="javascript:void(0)" data-bind="click: fetchLogs, text: '${ name }'"></a>
+          % endfor
+          </br>
+          <pre data-bind="html: logs['default']"></pre>
+        </div>
+      </div>
+    </div>
+
+    <div class="tab-pane" id="job-mapreduce-task-attempt-page-metadata">
+      <table class="table table-condensed">
+      </table>
+    </div>
+
+    <div class="tab-pane" id="job-mapreduce-task-attempt-page-counters">
+      <table class="table table-condensed">
+      </table>
+    </div>
+  </div>
 
 </script>