azkaban-aplcache

Adding Base history servlet.

8/29/2012 6:05:07 AM

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