azkaban-uncached

Merge changes from master.

11/18/2013 5:27:59 PM

Details

diff --git a/src/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java b/src/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
index b1d78c9..669cff4 100644
--- a/src/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
+++ b/src/java/azkaban/webapp/servlet/LoginAbstractAzkabanServlet.java
@@ -64,9 +64,9 @@ public abstract class LoginAbstractAzkabanServlet extends AbstractAzkabanServlet
 		contextType.put(".jpeg", "image/jpeg");
 		contextType.put(".gif", "image/gif");
 		contextType.put(".jpg", "image/jpeg");
+		contextType.put(".tl", "text/dust-template");
 	}
 	
-	
 	private File webResourceDirectory = null;
 	
 	private MultipartParser multipartParser;
diff --git a/src/java/azkaban/webapp/servlet/velocity/executionspage.vm b/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
index fc126c4..f416d20 100644
--- a/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
@@ -17,7 +17,7 @@
 <!DOCTYPE html> 
 <html>
 	<head>
-#parse( "azkaban/webapp/servlet/velocity/style.vm" )
+#parse("azkaban/webapp/servlet/velocity/style.vm")
 		<script type="text/javascript" src="${context}/js/jquery/jquery-1.9.1.js"></script>    
 		<script type="text/javascript" src="${context}/js/underscore-1.4.4-min.js"></script>
 		<script type="text/javascript" src="${context}/js/namespace.js"></script>
@@ -35,7 +35,7 @@
 	</head>
 	<body>
 		#set($current_page="executing")
-#parse( "azkaban/webapp/servlet/velocity/nav.vm" )
+#parse("azkaban/webapp/servlet/velocity/nav.vm")
 		<div class="messaging"><p id="messageClose">X</p><p id="message"></p></div>  
 
 		<div class="content">
@@ -63,8 +63,8 @@
 						</tr>
 					</thead>
 					<tbody>
-						#if($runningFlows)
-#foreach($flow in $runningFlows)
+#if($runningFlows)
+	#foreach($flow in $runningFlows)
 						<tr class="row" >
 							<td class="tb-name">
 								<a href="${context}/executor?execid=${flow.executionId}">${flow.executionId}</a>
@@ -81,7 +81,7 @@
 							<td><div class="status ${flow.status}">$utils.formatStatus(${flow.status})</div></td>
 							<td></td>
 						</tr>
-#end
+	#end
 #else
 						<tr><td></td><td class="last">No Executing Flows</td></tr>
 #end
@@ -106,8 +106,8 @@
 						</tr>
 					</thead>
 					<tbody>
-						#if($recentlyFinished)
-#foreach($flow in $recentlyFinished)
+#if($recentlyFinished.isEmpty())
+	#foreach($flow in $recentlyFinished)
 						<tr class="row" >
 							<td class="tb-name execId">
 								<a href="${context}/executor?execid=${flow.executionId}">${flow.executionId}</a>
@@ -124,7 +124,7 @@
 							<td><div class="status ${flow.status}">$utils.formatStatus(${flow.status})</div></td>
 							<td></td>
 						</tr>
-#end
+	#end
 #else
 						<tr><td></td><td class="last">No Recently Finished</td></tr>
 #end	
diff --git a/src/java/azkaban/webapp/servlet/velocity/historypage.vm b/src/java/azkaban/webapp/servlet/velocity/historypage.vm
index 0b39bc2..8c833d2 100644
--- a/src/java/azkaban/webapp/servlet/velocity/historypage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/historypage.vm
@@ -82,8 +82,8 @@
 						</tr>
 					</thead>
 					<tbody>
-						#if($flowHistory)
-#foreach($flow in $flowHistory)
+#if(!$flowHistory.isEmpty())
+	#foreach($flow in $flowHistory)
 						<tr class="row" >
 							<td class="tb-name execId">
 								<a href="${context}/executor?execid=${flow.executionId}">${flow.executionId}</a>
@@ -101,9 +101,9 @@
 							<td><div class="status ${flow.status}">$utils.formatStatus(${flow.status})</div></td>
 							<td></td>
 						</tr>
-#end
+	#end
 #else
-						<tr><td class="last">No History Results Found</td></tr>
+						<tr><td class="last" colspan="9">No History Results Found</td></tr>
 #end
 					</tbody>
 				</table>
diff --git a/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm b/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
index c15f548..0987dd6 100644
--- a/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
@@ -81,8 +81,8 @@
 						</tr>
 					</thead>
 					<tbody>
-						#if($schedules)
-#foreach($sched in $schedules)
+#if(!$schedules.isEmpty())
+	#foreach($sched in $schedules)
 						<tr class="row" >
 
 							<td>${sched.scheduleId}</td>
@@ -100,7 +100,7 @@
 							<td><button id="removeSchedBtn" onclick="removeSched(${sched.scheduleId})" >Remove Schedule</button></td>
 							<td><button id="addSlaBtn" onclick="slaView.initFromSched(${sched.scheduleId}, '${sched.flowName}')" >Set SLA</button></td>
 						</tr>
-#end
+	#end
 #else
 						<tr><td class="last">No Scheduled Flow Found</td></tr>
 #end
diff --git a/src/web/js/azkaban.exflow.view.js b/src/web/js/azkaban.exflow.view.js
index ea1e6c8..377703b 100644
--- a/src/web/js/azkaban.exflow.view.js
+++ b/src/web/js/azkaban.exflow.view.js
@@ -646,14 +646,13 @@ var logUpdaterFunction = function() {
 var exNodeClickCallback = function(event) {
 	console.log("Node clicked callback");
 	var jobId = event.currentTarget.jobid;
-	var attempt = event.currentTarget.attempt;
 	var requestURL = contextURL + "/manager?project=" + projectName + "&flow=" + flowId + "&job=" + jobId;
-	var visualizerURL = contextURL + "/visualizer?execid=" + execId + "&job=" + jobId + "&attempt=" + attempt;
+	var visualizerURL = contextURL + "/pigvisualizer?execid=" + execId + "&jobid=" + jobId;
 
 	var menu = [	
-			{title: "Open Job...", callback: function() {window.location.href=requestURL;}},
+			{title: "Open Job...", callback: function() {window.location.href = requestURL;}},
 			{title: "Open Job in New Window...", callback: function() {window.open(requestURL);}},
-			{title: "Open Job Visualizer...", callback: function() {window.open(visualizerURL);}}
+			{title: "Visualize Job...", callback: function() {window.location.href = visualizerURL;}}
 	];
 
 	contextMenuView.show(event, menu);
@@ -662,14 +661,13 @@ var exNodeClickCallback = function(event) {
 var exJobClickCallback = function(event) {
 	console.log("Node clicked callback");
 	var jobId = event.currentTarget.jobid;
-	var attempt = event.currentTarget.attempt;
 	var requestURL = contextURL + "/manager?project=" + projectName + "&flow=" + flowId + "&job=" + jobId;
-	var visualizerURL = contextURL + "/visualizer?execid=" + execId + "&job=" + jobId + "&attempt=" + attempt;
+	var visualizerURL = contextURL + "/pigvisualizer?execid=" + execId + "&jobid=" + jobId;
 
 	var menu = [	
-			{title: "Open Job...", callback: function() {window.location.href=requestURL;}},
+			{title: "Open Job...", callback: function() {window.location.href = requestURL;}},
 			{title: "Open Job in New Window...", callback: function() {window.open(requestURL);}},
-			{title: "Open Job Visualizer...", callback: function() {window.open(visualizerURL);}}
+			{title: "Visualize Job...", callback: function() {window.location.href = visualizerURL;}}
 	];
 
 	contextMenuView.show(event, menu);
diff --git a/src/web/js/azkaban.joblog.view.js b/src/web/js/azkaban.joblog.view.js
index 5be3c28..eafd9c9 100644
--- a/src/web/js/azkaban.joblog.view.js
+++ b/src/web/js/azkaban.joblog.view.js
@@ -62,7 +62,7 @@ azkaban.JobLogView = Backbone.View.extend({
 						var endTime = date.getTime();
 						if ((endTime - startTime) > 10000) {
 							finished = true;
-							showDialog("Alert","The log are taking a long time to finish loading. Azkaban has stopped loading them. Please click Refresh to restart the load.");
+							showDialog("Alert","The log is taking a long time to finish loading. Azkaban has stopped loading them. Please click Refresh to restart the load.");
 						} 
 	
 						var re = /(https?:\/\/(([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?))/g;