azkaban-uncached
Changes
src/web/js/azkaban.scheduled.view.js 6(+3 -3)
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>
src/web/js/azkaban.scheduled.view.js 6(+3 -3)
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");