azkaban-aplcache
Changes
src/web/js/azkaban.flow.view.js 1(+1 -0)
Details
diff --git a/src/java/azkaban/scheduler/LocalFileScheduleLoader.java b/src/java/azkaban/scheduler/LocalFileScheduleLoader.java
index a81f27f..64d7654 100644
--- a/src/java/azkaban/scheduler/LocalFileScheduleLoader.java
+++ b/src/java/azkaban/scheduler/LocalFileScheduleLoader.java
@@ -13,8 +13,11 @@ import java.util.List;
import org.apache.log4j.Logger;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
-import org.joda.time.Days;
+
import org.joda.time.DurationFieldType;
+import org.joda.time.Months;
+import org.joda.time.Weeks;
+import org.joda.time.Days;
import org.joda.time.Hours;
import org.joda.time.Minutes;
import org.joda.time.ReadablePeriod;
@@ -272,6 +275,12 @@ public class LocalFileScheduleLoader implements ScheduleLoader {
int periodInt = Integer.parseInt(periodStr.substring(0, periodStr.length() - 1));
switch (periodUnit) {
+ case 'M':
+ period = Months.months(periodInt);
+ break;
+ case 'w':
+ period = Weeks.weeks(periodInt);
+ break;
case 'd':
period = Days.days(periodInt);
break;
@@ -299,7 +308,15 @@ public class LocalFileScheduleLoader implements ScheduleLoader {
return "n";
}
- if (period.get(DurationFieldType.days()) > 0) {
+ if (period.get(DurationFieldType.months()) > 0) {
+ int months = period.get(DurationFieldType.months());
+ periodStr = months + "M";
+ }
+ else if (period.get(DurationFieldType.weeks()) > 0) {
+ int weeks = period.get(DurationFieldType.weeks());
+ periodStr = weeks + "w";
+ }
+ else if (period.get(DurationFieldType.days()) > 0) {
int days = period.get(DurationFieldType.days());
periodStr = days + "d";
}
diff --git a/src/java/azkaban/scheduler/ScheduledFlow.java b/src/java/azkaban/scheduler/ScheduledFlow.java
index 25b80f4..0b1f486 100644
--- a/src/java/azkaban/scheduler/ScheduledFlow.java
+++ b/src/java/azkaban/scheduler/ScheduledFlow.java
@@ -236,7 +236,7 @@ public class ScheduledFlow {
return "ScheduledFlow{" +
// "scheduleStatus=" + schedStatus +
"nextExecTime=" + nextExecTime +
- ", period=" + period +
+ ", period=" + period.toString() +
", firstSchedTime=" + firstSchedTime +
", submitTime=" + submitTime +
", userSubmit=" + userSubmit +
diff --git a/src/java/azkaban/webapp/servlet/ScheduleServlet.java b/src/java/azkaban/webapp/servlet/ScheduleServlet.java
index b000573..e165df2 100644
--- a/src/java/azkaban/webapp/servlet/ScheduleServlet.java
+++ b/src/java/azkaban/webapp/servlet/ScheduleServlet.java
@@ -11,6 +11,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.joda.time.DateTime;
+import org.joda.time.Months;
+import org.joda.time.Weeks;
import org.joda.time.Days;
import org.joda.time.Hours;
import org.joda.time.LocalDateTime;
@@ -111,9 +113,8 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
int hour = getIntParam(req, "hour");
int minutes = getIntParam(req, "minutes");
boolean isPm = getParam(req, "am_pm").equalsIgnoreCase("pm");
-// int hour = 0;
-// int minutes = 0;
-// boolean isPm = false;
+
+
String scheduledDate = req.getParameter("date");
DateTime day = null;
if(scheduledDate == null || scheduledDate.trim().length() == 0) {
@@ -128,15 +129,20 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
}
ReadablePeriod thePeriod = null;
- if(hasParam(req, "is_recurring"))
- thePeriod = parsePeriod(req);
+ try {
+ if(hasParam(req, "is_recurring"))
+ thePeriod = parsePeriod(req);
+ }
+ catch(Exception e){
+ ret.put("error", e.getMessage());
+ }
if(isPm && hour < 12)
hour += 12;
hour %= 24;
String userSubmit = user.getUserId();
- String userExec = getParam(req, "userExec");
+ String userExec = userSubmit;//getParam(req, "userExec");
String scheduleId = projectId + "." + flowId;
DateTime submitTime = new DateTime();
DateTime firstSchedTime = day.withHourOfDay(hour).withMinuteOfHour(minutes).withSecondOfMinute(0);
@@ -155,7 +161,11 @@ public class ScheduleServlet extends LoginAbstractAzkabanServlet {
private ReadablePeriod parsePeriod(HttpServletRequest req) throws ServletException {
int period = getIntParam(req, "period");
String periodUnits = getParam(req, "period_units");
- if("d".equals(periodUnits))
+ if("M".equals(periodUnits))
+ return Months.months(period);
+ else if("w".equals(periodUnits))
+ return Weeks.weeks(period);
+ else if("d".equals(periodUnits))
return Days.days(period);
else if("h".equals(periodUnits))
return Hours.hours(period);
diff --git a/src/java/azkaban/webapp/servlet/velocity/flowpage.vm b/src/java/azkaban/webapp/servlet/velocity/flowpage.vm
index aa5f899..3e2c673 100644
--- a/src/java/azkaban/webapp/servlet/velocity/flowpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/flowpage.vm
@@ -118,7 +118,7 @@
<h3>Schedulemm A Flow</h3>
<div id="errorMsg" class="box-error-message">$errorMsg</div>
- <div class="message">
+ <!--div class="message">
<fieldset>
<dl>
<dt><label for="path">Project Name</label></dt>
@@ -130,13 +130,13 @@
<input name="redirect" type="hidden" value="$!context/" />
</dl>
</fieldset>
- </div>
+ </div-->
<div class="box">
<form id="sched-form" method="post" action="${context}/">
<div class="sched-form">
<div>
- <!input type="hidden" name="action" value="schedule"/-->
+ <!--input type="hidden" name="action" value="schedule"/-->
Schedule to run at
<input id="hour" type="text" size="2" value="12"/> :
<input id="minutes" type="text" size="2" value="00"/>
@@ -155,6 +155,8 @@
repeat every
<input id="period" type="text" size="2" value="1"/>
<select id="period_units">
+ <option value="M">Months</option>
+ <option value="w">Weeks</option>
<option value="d">Days</option>
<option value="h">Hours</option>
<option value="m">Minutes</option>
src/web/js/azkaban.flow.view.js 1(+1 -0)
diff --git a/src/web/js/azkaban.flow.view.js b/src/web/js/azkaban.flow.view.js
index 85165de..891bda0 100644
--- a/src/web/js/azkaban.flow.view.js
+++ b/src/web/js/azkaban.flow.view.js
@@ -904,6 +904,7 @@ azkaban.ScheduleFlowView = Backbone.View.extend({
}
else{
$("#errorMsg").text("Flow " + projectName + "." + flowName + " scheduled!" );
+ alert("Flow " + projectName + "." + flowName + " scheduled!");
window.location = contextURL + "/manager?project=" + projectName + "&flow=" + flowName ;
}
}