azkaban-uncached

fix set sla checkbox values

3/11/2013 5:37:49 PM

Details

diff --git a/src/java/azkaban/webapp/servlet/ScheduleServlet.java b/src/java/azkaban/webapp/servlet/ScheduleServlet.java
index 4365986..613c205 100644
--- a/src/java/azkaban/webapp/servlet/ScheduleServlet.java
+++ b/src/java/azkaban/webapp/servlet/ScheduleServlet.java
@@ -54,6 +54,7 @@ import azkaban.scheduler.Schedule;
 import azkaban.scheduler.Schedule.FlowOptions;
 import azkaban.scheduler.Schedule.SlaOptions;
 import azkaban.scheduler.ScheduleManager;
+import azkaban.scheduler.ScheduleManagerException;
 import azkaban.sla.SLA;
 import azkaban.sla.SLA.SlaRule;
 import azkaban.sla.SLA.SlaAction;
@@ -122,11 +123,9 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
 			SlaOptions slaOptions= new SlaOptions();
 			
 			String slaEmails = getParam(req, "slaEmails");
-			System.out.println(slaEmails); 
 			String[] emailSplit = slaEmails.split("\\s*,\\s*|\\s*;\\s*|\\s+");
 			
 			Map<String, String> settings = getParamGroup(req, "settings");
-			System.out.println(settings);
 			List<SlaSetting> slaSettings = new ArrayList<SlaSetting>();
 			for(String set : settings.keySet()) {
 				SlaSetting s;
@@ -142,6 +141,10 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
 			}
 			
 			if(slaSettings.size() > 0) {
+				if(slaEmails.equals("")) {
+					ret.put("error", "Please put correct email settings for your SLA actions");
+					return;
+				}
 				slaOptions.setSlaEmails(Arrays.asList(emailSplit));
 				slaOptions.setSettings(slaSettings);
 			}
@@ -156,13 +159,13 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
 			}
 			
 		} catch (ServletException e) {
-			ret.put("error", e);
+			ret.put("error", e.getMessage());
 		}
 		
 	}
 
 	
-	private SlaSetting parseSlaSetting(String set) {
+	private SlaSetting parseSlaSetting(String set) throws ScheduleManagerException {
 		// "" + Duration + EmailAction + KillAction
 		String[] parts = set.split(",", -1);
 		String id = parts[0];
@@ -170,17 +173,23 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
 		String duration = parts[2];
 		String emailAction = parts[3];
 		String killAction = parts[4];
-		if(emailAction.equals("on") || killAction.equals("on")) {
+		if(emailAction.equals("true") || killAction.equals("true")) {
 			SlaSetting r = new SlaSetting();			
 			r.setId(id);
 			r.setRule(SlaRule.valueOf(rule));
-			ReadablePeriod dur = parseDuration(duration);
+			ReadablePeriod dur;
+			try {
+				dur = parseDuration(duration);
+			}
+			catch (Exception e) {
+				throw new ScheduleManagerException("Unable to parse duration for a SLA that needs to take actions!", e);
+			}
 			r.setDuration(dur);
 			List<SlaAction> actions = new ArrayList<SLA.SlaAction>();
-			if(emailAction.equals("on")) {
+			if(emailAction.equals("true")) {
 				actions.add(SlaAction.EMAIL);
 			}
-			if(killAction.equals("on")) {
+			if(killAction.equals("true")) {
 				actions.add(SlaAction.KILL);
 			}
 			r.setActions(actions);
diff --git a/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm b/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
index 64d5a9d..6feab19 100644
--- a/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/scheduledflowpage.vm
@@ -144,23 +144,7 @@
 										</tbody>
 									</table>
 								</div>
-								<!--h4 style="visibility: hidden">Job SLA Rules</h4>
-								<div class="tableDiv" style="visibility: hidden">
-									<table id="jobRulesTbl">
-										<thead>
-											<tr>
-												<th>Flow/Job Id</th>
-												<th>Finish In</th>
-												<th>Duration</th>
-												<th>Email Action</th>
-												<th>Kill Action</th>
-											</tr>
-										</thead>
-										<tbody>
-											<tr id="addRow"><td id="addRow-col" colspan="4"><span class="addIcon"></span><a href="#">Add Row</a></td></tr>
-										</tbody>
-									</table>
-								</div-->
+							
 							</div>
 						</div>
 					</div>
diff --git a/src/web/js/azkaban.scheduled.view.js b/src/web/js/azkaban.scheduled.view.js
index b66374b..2c1ee76 100644
--- a/src/web/js/azkaban.scheduled.view.js
+++ b/src/web/js/azkaban.scheduled.view.js
@@ -219,8 +219,8 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 			var id = rFlowRule.cells[0].firstChild.value;
 			var rule = rFlowRule.cells[1].firstChild.value;
 			var duration = rFlowRule.cells[2].firstChild.value;
-			var email = rFlowRule.cells[3].firstChild.value;
-			var kill = rFlowRule.cells[4].firstChild.value;
+			var email = rFlowRule.cells[3].firstChild.checked;
+			var kill = rFlowRule.cells[4].firstChild.checked;
 			settings[row] = id + "," + rule + "," + duration + "," + email + "," + kill; 
 		}
 
@@ -257,7 +257,7 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		var ruleBoxOptions = this.ruleBoxOptions;
 
 		var tFlowRules = document.getElementById("flowRulesTbl").tBodies[0];
-		var rFlowRule = tFlowRules.insertRow(0);
+		var rFlowRule = tFlowRules.insertRow(tFlowRules.rows.length-1);
 		
 		var cId = rFlowRule.insertCell(-1);
 		var idSelect = document.createElement("select");