浏览代码

[jb] Still display logs even if syslog is missing

Add Log icon on the single job page
Romain Rigaux 12 年之前
父节点
当前提交
e377e6c

+ 4 - 3
apps/jobbrowser/src/jobbrowser/models.py

@@ -450,12 +450,13 @@ class TaskAttempt(object):
 
     et = lxml.html.parse(data)
     log_sections = et.findall('body/pre')
-    if len(log_sections) != 3:
+    logs = [ section.text for section in log_sections ]
+    if len(logs) < 3:
       LOGGER.warn('Error parsing task attempt log for %s at "%s". Found %d (not 3) log sections' %
                   (self.attemptId, url, len(log_sections)))
       err = _("Hue encountered an error while retrieving logs from '%s'.") % (url,)
-      return (err, err, err)
-    return [ section.text for section in log_sections ]
+      logs += [err] * (3 - len(logs))
+    return logs
 
 
 class Tracker(object):

+ 6 - 4
apps/jobbrowser/src/jobbrowser/templates/job.mako

@@ -107,7 +107,7 @@ ${ commonheader(_('Job: %(jobId)s - Job Browser') % dict(jobId=job.jobId_short),
                         ${comps.get_status(job)}
                     </li>
                     <li class="nav-header">${_('Logs')}</li>
-                    <li><a href="${ url('jobbrowser.views.job_single_logs', job=job.jobId) }">${_('View logs')}</a></li>
+                    <li><a href="${ url('jobbrowser.views.job_single_logs', job=job.jobId) }"><i class="icon-tasks"></i> ${_('Logs')}</a></li>
                     % if job.status.lower() == 'running' or job.status.lower() == 'pending':
                         <li class="nav-header">${_('Kill Job')}</li>
                         <li>
@@ -138,9 +138,11 @@ ${ commonheader(_('Job: %(jobId)s - Job Browser') % dict(jobId=job.jobId_short),
                             dir_name = basename.split('/')[-1]
                         %>
                         % if location_url != None:
-                                <a href="${location_url}" title="${output_dir}">${dir_name}</a>
-                        % else:
-                            ${dir_name}
+                            <a href="${location_url}" title="${output_dir}">
+                        % endif
+                        <i class="icon-folder-open"></i> ${dir_name}
+                        % if location_url != None:
+                            </a>
                         % endif
                         </li>
                     % endif

+ 1 - 0
apps/jobbrowser/src/jobbrowser/tests.py

@@ -423,6 +423,7 @@ class TestJobBrowserWithHadoop(unittest.TestCase, OozieServerProvider):
     response = self.client.get('/jobbrowser/jobs/%s/single_logs' % (hadoop_job_id))
     assert_true('syslog' in response.content)
     assert_true('<div class="tab-pane active" id="logsSysLog">' in response.content or
+                '<div class="tab-pane active" id="logsStdErr">' in response.content or # Depending on Hadoop
                 '<div class="tab-pane active" id="logsStdOut">' in response.content, # For jenkins
                 response.content)