Details
diff --git a/src/java/azkaban/webapp/AzkabanWebServer.java b/src/java/azkaban/webapp/AzkabanWebServer.java
index 380e52f..173379c 100644
--- a/src/java/azkaban/webapp/AzkabanWebServer.java
+++ b/src/java/azkaban/webapp/AzkabanWebServer.java
@@ -45,6 +45,7 @@ import azkaban.utils.Utils;
import azkaban.webapp.servlet.AzkabanServletContextListener;
import azkaban.webapp.servlet.ExecutionServlet;
import azkaban.webapp.servlet.FlowExecutorServlet;
+import azkaban.webapp.servlet.HistoryServlet;
import azkaban.webapp.servlet.IndexServlet;
import azkaban.webapp.servlet.ProjectManagerServlet;
import azkaban.webapp.session.SessionCache;
@@ -348,6 +349,7 @@ public class AzkabanWebServer {
root.addServlet(new ServletHolder(new ProjectManagerServlet()),"/manager");
root.addServlet(new ServletHolder(new FlowExecutorServlet()),"/executor");
root.addServlet(new ServletHolder(new ExecutionServlet()),"/executions");
+ root.addServlet(new ServletHolder(new HistoryServlet()), "/history");
root.setAttribute(AzkabanServletContextListener.AZKABAN_SERVLET_CONTEXT_KEY, app);
diff --git a/src/java/azkaban/webapp/servlet/HistoryServlet.java b/src/java/azkaban/webapp/servlet/HistoryServlet.java
new file mode 100644
index 0000000..e2b9abf
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/HistoryServlet.java
@@ -0,0 +1,32 @@
+package azkaban.webapp.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import azkaban.webapp.session.Session;
+
+public class HistoryServlet extends LoginAbstractAzkabanServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void handleGet(HttpServletRequest req, HttpServletResponse resp,
+ Session session) throws ServletException, IOException {
+ Page page = newPage(req, resp, session, "azkaban/webapp/servlet/velocity/historypage.vm");
+
+
+
+ page.render();
+ }
+
+ @Override
+ protected void handlePost(HttpServletRequest req, HttpServletResponse resp,
+ Session session) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/src/java/azkaban/webapp/servlet/velocity/historypage.vm b/src/java/azkaban/webapp/servlet/velocity/historypage.vm
new file mode 100644
index 0000000..4296ebc
--- /dev/null
+++ b/src/java/azkaban/webapp/servlet/velocity/historypage.vm
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+ <head>
+#parse( "azkaban/webapp/servlet/velocity/style.vm" )
+ <script type="text/javascript" src="${context}/js/jquery/jquery.js"></script>
+ <script type="text/javascript" src="${context}/js/namespace.js"></script>
+ <script type="text/javascript" src="${context}/js/underscore-1.2.1-min.js"></script>
+ <script type="text/javascript" src="${context}/js/backbone-0.5.3-min.js"></script>
+ <script type="text/javascript" src="${context}/js/jquery.simplemodal.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.nav.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.main.view.js"></script>
+ <script type="text/javascript">
+ var contextURL = "${context}";
+ var currentTime = ${currentTime};
+ var timezone = "${timezone}";
+ var errorMessage = ${error_message};
+ var successMessage = ${success_message};
+ </script>
+ </head>
+ <body>
+ #set($current_page="history")
+#parse( "azkaban/webapp/servlet/velocity/nav.vm" )
+ <div class="messaging"><p id="messageClose">X</p><p id="message"></p></div>
+
+ <div class="content">
+ <div id="all-jobs-content">
+ <div class="section-hd">
+ <h2>History</h2>
+ <form method="get">
+ <input type="hidden" name="action" value="search">
+ <input type="submit" value="Search" class="search-btn">
+ <input id="searchtextbox" type="text" placeholder="by job name or wildcard" value="" class="search-input" name="job">
+ </form>
+ </div>
+ </div>
+
+ <div class="executionInfo">
+ <table id="executingJobs">
+ <thead>
+ <tr>
+ <th>Flow</th>
+ <th>User</th>
+ <th class="date">Start Time</th>
+ <th class="date">End Time</th>
+ <th class="elapse">Elapsed</th>
+ <th class="status">Status</th>
+ <th class="action">Action</th>
+ </tr>
+ </thead>
+ <tbody>
+ #if($runningFlows)
+#foreach($flow in $runningFlows)
+ <tr class="row" >
+ <td class="tb-name">
+ <a href="${context}/execution?execid=${flow.executionId}">${flow.flowId}</a>
+ </td>
+ <td>${flow.submitUser}</td>
+ <td>$utils.formatDate(${flow.startTime})</td>
+ <td>$utils.formatDate(${flow.endTime})</td>
+ <td>$utils.formatDuration(${flow.startTime}, ${flow.endTime})</td>
+ <td>${flow.status}</td>
+ <td></td>
+ </tr>
+#end
+#else
+ <tr><td class="last">No History Found</td></tr>
+#end
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file