You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hama.apache.org by ed...@apache.org on 2014/08/28 08:37:57 UTC

svn commit: r1621061 - in /hama/trunk/core/src/main: java/org/apache/hama/manager/LogView.java java/org/apache/hama/util/BSPServletUtil.java resources/webapp/bspmaster/bspjob.jsp resources/webapp/commons/tpl/tpl.logview.html

Author: edwardyoon
Date: Thu Aug 28 06:37:56 2014
New Revision: 1621061

URL: http://svn.apache.org/r1621061
Log:
HAMA-910: Web UI Improvement

Modified:
    hama/trunk/core/src/main/java/org/apache/hama/manager/LogView.java
    hama/trunk/core/src/main/java/org/apache/hama/util/BSPServletUtil.java
    hama/trunk/core/src/main/resources/webapp/bspmaster/bspjob.jsp
    hama/trunk/core/src/main/resources/webapp/commons/tpl/tpl.logview.html

Modified: hama/trunk/core/src/main/java/org/apache/hama/manager/LogView.java
URL: http://svn.apache.org/viewvc/hama/trunk/core/src/main/java/org/apache/hama/manager/LogView.java?rev=1621061&r1=1621060&r2=1621061&view=diff
==============================================================================
--- hama/trunk/core/src/main/java/org/apache/hama/manager/LogView.java (original)
+++ hama/trunk/core/src/main/java/org/apache/hama/manager/LogView.java Thu Aug 28 06:37:56 2014
@@ -37,7 +37,9 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
+import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -45,8 +47,16 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hama.bsp.BSPJobID;
+import org.apache.hama.bsp.BSPMaster;
+import org.apache.hama.bsp.ClusterStatus;
+import org.apache.hama.bsp.GroomServerStatus;
+import org.apache.hama.bsp.JobStatus;
 import org.apache.hama.manager.util.UITemplate;
 
+/**
+ * Log viewer class for for BSP Server.
+ */
 public class LogView {
 
   /**
@@ -196,11 +206,11 @@ public class LogView {
 
       String logfilePath = logDirPath + "/" + fileName;
 
-      if (pageType.equals("download")) {
+      if (pageType.equals("download")) { // download log file
 
         LogView.downloadFile(response, logfilePath);
 
-      } else {
+      } else { // log viewer 
 
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
@@ -221,7 +231,7 @@ public class LogView {
         out.println(uit.convert(tplHead, vars));
         vars.clear();
 
-        if (pageType.equals("list")) { // list page
+        if (pageType.equals("list")) { // list 
 
           String[] listArea = new String[4];
           listArea[0] = uit.getArea(tplfile, "list0");
@@ -259,7 +269,7 @@ public class LogView {
           vars.clear();
           out.println(uit.convert(listArea[3], vars));
 
-        } else if (pageType.equals("detail")) { // detail page
+        } else if (pageType.equals("detail")) { // detail 
 
           String[] detailArea = new String[4];
           detailArea[0] = uit.getArea(tplfile, "detail0");
@@ -295,7 +305,7 @@ public class LogView {
 
           out.println(uit.convert(detailArea[2], vars));
 
-        } else if (pageType.equals("tail")) { // tail page
+        } else if (pageType.equals("tail")) { // tail 
           String tailLine = request.getParameter("tailLine");
           tailLine = (tailLine == null) ? "100" : tailLine;
 
@@ -353,14 +363,53 @@ public class LogView {
           vars.clear();
           out.println(uit.convert(tailArea[2], vars));
 
+        } else if (pageType.equals("tasklist")) { // job list
+          String jobId = request.getParameter("jobId");
+          String[] listArea = new String[3];
+          listArea[0] = uit.getArea(tplfile, "tasklist0");
+          listArea[1] = uit.getArea(tplfile, "tasklist1");
+          listArea[2] = uit.getArea(tplfile, "tasklist2");
+
+          ServletContext ctx = getServletContext();
+          BSPMaster tracker = (BSPMaster) ctx.getAttribute("bsp.master");
+          ClusterStatus status = tracker.getClusterStatus(true);
+          JobStatus jobStatus = tracker.getJobStatus(BSPJobID.forName(jobId));
+
+          vars.put("hamaLogDir", hamaLogDir);
+          vars.put("dirName", dirName);
+          vars.put("targetUri", targetUri);
+          vars.put("jobId", jobId);
+          vars.put("jobStatus", jobStatus.getState().toString());
+          vars.put("jobName", jobStatus.getName());
+
+          out.println(uit.convert(listArea[0], vars));
+          vars.clear();
+
+          for (Entry<String, GroomServerStatus> entry : status
+              .getActiveGroomServerStatus().entrySet()) {
+            vars.put("jobId", jobId);
+            vars.put("dirName", dirName);
+            vars.put("serverName", entry.getKey());
+            vars.put("hostName", entry.getValue().getGroomHostName());
+            vars.put("targetUri", targetUri);
+            vars.put("type", "dir");
+            out.println(uit.convert(listArea[1], vars));
+
+          }
+
+          vars.clear();
+          out.println(uit.convert(listArea[2], vars));
         }
 
-        vars.clear();
         out.println(tplTail);
       }
 
     }
 
+    /**
+     * Get Hama log Directory
+     * @return hama log directory
+     */
     private static String getLogHomeDir() {
       Map<String, String> env = System.getenv();
       String hamaHome = env.get("HAMA_HOME");

Modified: hama/trunk/core/src/main/java/org/apache/hama/util/BSPServletUtil.java
URL: http://svn.apache.org/viewvc/hama/trunk/core/src/main/java/org/apache/hama/util/BSPServletUtil.java?rev=1621061&r1=1621060&r2=1621061&view=diff
==============================================================================
--- hama/trunk/core/src/main/java/org/apache/hama/util/BSPServletUtil.java (original)
+++ hama/trunk/core/src/main/java/org/apache/hama/util/BSPServletUtil.java Thu Aug 28 06:37:56 2014
@@ -78,7 +78,9 @@ public class BSPServletUtil extends Serv
         sb.append("</td><td>");
         sb.append(new Date(status.getStartTime()));
         sb.append("</td><td>");
-        sb.append("<a href=\"/logView?dir=tasklogs/");
+        sb.append("<a href=\"/logView?type=tasklist&jobId=");
+        sb.append(status.getJobID());            
+        sb.append("&dir=tasklogs/");
         sb.append(status.getJobID());
         sb.append("\">view</a>");
         sb.append("</td></tr>\n");

Modified: hama/trunk/core/src/main/resources/webapp/bspmaster/bspjob.jsp
URL: http://svn.apache.org/viewvc/hama/trunk/core/src/main/resources/webapp/bspmaster/bspjob.jsp?rev=1621061&r1=1621060&r2=1621061&view=diff
==============================================================================
--- hama/trunk/core/src/main/resources/webapp/bspmaster/bspjob.jsp (original)
+++ hama/trunk/core/src/main/resources/webapp/bspmaster/bspjob.jsp Thu Aug 28 06:37:56 2014
@@ -60,7 +60,7 @@
       <td>
         <% if(status.getFinishTime() != 0L) {out.write(new Date(status.getFinishTime()).toString());} %>
       </td>
-      <td><a href="/logView?dir=tasklogs/<%=idString%>">view</a></td>      
+      <td><a href="/logView?dir=tasklogs/<%=idString%>&jobId=<%=idString%>&type=tasklist">view</a></td>      
     </tr>
 
   </table>
@@ -110,9 +110,6 @@
   </div>
   <p/>
   <hr>
-    <h2>Job Logs</h2>
-    <a href="/logView?dir=tasklogs/<%=idString%>">Log</a> directory
-  <hr>
   <a href="bspmaster.jsp"><i>Back to BSPMaster</i></a>
 
   <%

Modified: hama/trunk/core/src/main/resources/webapp/commons/tpl/tpl.logview.html
URL: http://svn.apache.org/viewvc/hama/trunk/core/src/main/resources/webapp/commons/tpl/tpl.logview.html?rev=1621061&r1=1621060&r2=1621061&view=diff
==============================================================================
--- hama/trunk/core/src/main/resources/webapp/commons/tpl/tpl.logview.html (original)
+++ hama/trunk/core/src/main/resources/webapp/commons/tpl/tpl.logview.html Thu Aug 28 06:37:56 2014
@@ -162,13 +162,55 @@ ${logLine}
 </div>  
 <!--{area,end,logtail2}-->
 
+<!--{area,begin,tasklist0}-->
+<h2>${jobName}</h2>
+<div class="block-detail">
+<ul>
+    <li><span>Job ID : </span>${jobId}</li>
+    <li><span>Status : </span>${jobStatus}</li>
+</ul>
+</div>
+
+<hr>
+<div class="block-list-log">
+<table class="full-width">
+<thead>
+  <tr>
+    <th>Job ID</th>
+    <th>Server Name</th>
+    <th>Hostname</th>
+    <th>Directory</th>
+    <th>Type</th>    
+    <th>Etc</th>
+  </tr>
+</thead>  
+<tbody>
+<!--{area,end,tasklist0}-->
+
+<!--{area,begin,tasklist1}-->
+  <tr>
+    <td><a href="/bspjob.jsp?jobid=${jobId}">${jobId}</a></td>    
+    <td><a href="http://${serverName}/">${serverName}</a></td>
+    <td>${hostName}</td>    
+    <td><a href="http://${serverName}/logView?dir=${dirName}/${fileName}">/${dirName}</a></td>
+    <td>${type}</td>    
+    <td>
+      <a href="http://${serverName}/logView?dir=${dirName}/${fileName}" class="link-container"><span class="link-title">view</span></a>
+    </td>
+  </tr>
+<!--{area,end,tasklist1}-->
+
+<!--{area,begin,tasklist2}-->
+</tbody>
+</table>
+</div>
+<!--{area,end,tasklist2}-->
 
 <!--{area,begin,tail}-->
 <hr />
 <div id="footer" class="contents">
-<a href='http://hama.apache.org/'>Apache Hama</a>
+  <a href='http://hama.apache.org/'>Apache Hama</a>
 </div>
-</body></html>
 </body>
 </html>
 <!--{area,end,tail}-->
\ No newline at end of file