azkaban-memoizeit
Changes
src/java/azkaban/webapp/servlet/ExecutorServlet.java 190(+97 -93)
src/less/navbar.less 22(+20 -2)
Details
src/java/azkaban/webapp/servlet/ExecutorServlet.java 190(+97 -93)
diff --git a/src/java/azkaban/webapp/servlet/ExecutorServlet.java b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
index ad572ed..6cc091b 100644
--- a/src/java/azkaban/webapp/servlet/ExecutorServlet.java
+++ b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
@@ -66,7 +66,8 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
}
@Override
- protected void handleGet(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
+ protected void handleGet(HttpServletRequest req, HttpServletResponse resp,
+ Session session) throws ServletException, IOException {
if (hasParam(req, "ajax")) {
handleAJAXAction(req, resp, session);
}
@@ -83,6 +84,98 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
}
}
+ private void handleAJAXAction(HttpServletRequest req,
+ HttpServletResponse resp, Session session)
+ throws ServletException, IOException {
+ HashMap<String, Object> ret = new HashMap<String, Object>();
+ String ajaxName = getParam(req, "ajax");
+
+ if (hasParam(req, "execid")) {
+ int execid = getIntParam(req, "execid");
+ ExecutableFlow exFlow = null;
+
+ try {
+ exFlow = executorManager.getExecutableFlow(execid);
+ } catch (ExecutorManagerException e) {
+ ret.put("error", "Error fetching execution '" + execid + "': " + e.getMessage());
+ }
+
+ if (exFlow == null) {
+ ret.put("error", "Cannot find execution '" + execid + "'");
+ }
+ else {
+ if (ajaxName.equals("fetchexecflow")) {
+ ajaxFetchExecutableFlow(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("fetchexecflowupdate")) {
+ ajaxFetchExecutableFlowUpdate(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("cancelFlow")) {
+ ajaxCancelFlow(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("restartFlow")) {
+ ajaxRestartFlow(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("pauseFlow")) {
+ ajaxPauseFlow(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("resumeFlow")) {
+ ajaxResumeFlow(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("fetchExecFlowLogs")) {
+ ajaxFetchExecFlowLogs(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("fetchExecJobLogs")) {
+ ajaxFetchJobLogs(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("fetchExecJobSummary")) {
+ ajaxFetchJobSummary(req, resp, ret, session.getUser(), exFlow);
+ }
+ else if (ajaxName.equals("retryFailedJobs")) {
+ ajaxRestartFailed(req, resp, ret, session.getUser(), exFlow);
+ }
+// else if (ajaxName.equals("fetchLatestJobStatus")) {
+// ajaxFetchLatestJobStatus(req, resp, ret, session.getUser(), exFlow);
+// }
+ else if (ajaxName.equals("flowInfo")) {
+ //String projectName = getParam(req, "project");
+ //Project project = projectManager.getProject(projectName);
+ //String flowName = getParam(req, "flow");
+ ajaxFetchExecutableFlowInfo(req, resp, ret, session.getUser(), exFlow);
+ }
+ }
+ }
+ else if (ajaxName.equals("getRunning")) {
+ String projectName = getParam(req, "project");
+ String flowName = getParam(req, "flow");
+ ajaxGetFlowRunning(req, resp, ret, session.getUser(), projectName, flowName);
+ }
+ else if (ajaxName.equals("flowInfo")) {
+ String projectName = getParam(req, "project");
+ String flowName = getParam(req, "flow");
+ ajaxFetchFlowInfo(req, resp, ret, session.getUser(), projectName, flowName);
+ }
+ else {
+ String projectName = getParam(req, "project");
+
+ ret.put("project", projectName);
+ if (ajaxName.equals("executeFlow")) {
+ ajaxAttemptExecuteFlow(req, resp, ret, session.getUser());
+ }
+ }
+ if (ret != null) {
+ this.writeJSON(resp, ret);
+ }
+ }
+
+ @Override
+ protected void handlePost(HttpServletRequest req, HttpServletResponse resp,
+ Session session) throws ServletException, IOException {
+ if (hasParam(req, "ajax")) {
+ handleAJAXAction(req, resp, session);
+ }
+ }
+
private void handleExecutionJobDetailsPage(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
Page page = newPage(req, resp, session, "azkaban/webapp/servlet/velocity/jobdetailspage.vm");
User user = session.getUser();
@@ -212,96 +305,7 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
}
return null;
- }
-
- @Override
- protected void handlePost(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
- if (hasParam(req, "ajax")) {
- handleAJAXAction(req, resp, session);
- }
- }
-
- private void handleAJAXAction(HttpServletRequest req, HttpServletResponse resp, Session session) throws ServletException, IOException {
- HashMap<String, Object> ret = new HashMap<String, Object>();
- String ajaxName = getParam(req, "ajax");
-
- if (hasParam(req, "execid")) {
- int execid = getIntParam(req, "execid");
- ExecutableFlow exFlow = null;
-
- try {
- exFlow = executorManager.getExecutableFlow(execid);
- } catch (ExecutorManagerException e) {
- ret.put("error", "Error fetching execution '" + execid + "': " + e.getMessage());
- }
-
- if (exFlow == null) {
- ret.put("error", "Cannot find execution '" + execid + "'");
- }
- else {
- if (ajaxName.equals("fetchexecflow")) {
- ajaxFetchExecutableFlow(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("fetchexecflowupdate")) {
- ajaxFetchExecutableFlowUpdate(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("cancelFlow")) {
- ajaxCancelFlow(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("restartFlow")) {
- ajaxRestartFlow(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("pauseFlow")) {
- ajaxPauseFlow(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("resumeFlow")) {
- ajaxResumeFlow(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("fetchExecFlowLogs")) {
- ajaxFetchExecFlowLogs(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("fetchExecJobLogs")) {
- ajaxFetchJobLogs(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("fetchExecJobSummary")) {
- ajaxFetchJobSummary(req, resp, ret, session.getUser(), exFlow);
- }
- else if (ajaxName.equals("retryFailedJobs")) {
- ajaxRestartFailed(req, resp, ret, session.getUser(), exFlow);
- }
-// else if (ajaxName.equals("fetchLatestJobStatus")) {
-// ajaxFetchLatestJobStatus(req, resp, ret, session.getUser(), exFlow);
-// }
- else if (ajaxName.equals("flowInfo")) {
- //String projectName = getParam(req, "project");
- //Project project = projectManager.getProject(projectName);
- //String flowName = getParam(req, "flow");
- ajaxFetchExecutableFlowInfo(req, resp, ret, session.getUser(), exFlow);
- }
- }
- }
- else if (ajaxName.equals("getRunning")) {
- String projectName = getParam(req, "project");
- String flowName = getParam(req, "flow");
- ajaxGetFlowRunning(req, resp, ret, session.getUser(), projectName, flowName);
- }
- else if (ajaxName.equals("flowInfo")) {
- String projectName = getParam(req, "project");
- String flowName = getParam(req, "flow");
- ajaxFetchFlowInfo(req, resp, ret, session.getUser(), projectName, flowName);
- }
- else {
- String projectName = getParam(req, "project");
-
- ret.put("project", projectName);
- if (ajaxName.equals("executeFlow")) {
- ajaxAttemptExecuteFlow(req, resp, ret, session.getUser());
- }
- }
- if (ret != null) {
- this.writeJSON(resp, ret);
- }
- }
+ }
// private void ajaxFetchLatestJobStatus(HttpServletRequest req,HttpServletResponse resp, HashMap<String, Object> ret, User user, ExecutableFlow exFlow) {
// Project project = getProjectAjaxByPermission(ret, exFlow.getProjectId(), user, Type.READ);
@@ -732,7 +736,7 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
return;
}
- ret.put("flow", flowId);
+ ret.put("flow", flowId);
Flow flow = project.getFlow(flowId);
if (flow == null) {
ret.put("error", "Flow '" + flowId + "' cannot be found in project " + project);
@@ -752,7 +756,7 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
return;
}
- ret.put("flow", flowId);
+ ret.put("flow", flowId);
Flow flow = project.getFlow(flowId);
if (flow == null) {
ret.put("error", "Flow '" + flowId + "' cannot be found in project " + project);
diff --git a/src/java/azkaban/webapp/servlet/velocity/nav.vm b/src/java/azkaban/webapp/servlet/velocity/nav.vm
index 5c4f4eb..f709390 100644
--- a/src/java/azkaban/webapp/servlet/velocity/nav.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/nav.vm
@@ -14,6 +14,11 @@
* the License.
*#
+ <script type="text/javascript">
+ function navMenuClick(url) {
+ window.location.href = url;
+ }
+ </script>
<div class="navbar navbar-inverse navbar-static-top">
<div class="container-full">
<div class="navbar-header">
@@ -35,20 +40,20 @@
<div class="navbar-collapse collapse">
#if ($navbar_disabled != 1)
<ul class="nav navbar-nav">
- <li#if($current_page == 'all') class="active"#end><a href="$!context/index">Projects</a></li>
- <li#if($current_page == 'schedule') class="active"#end><a href="$!context/schedule">Scheduling</a></li>
- <!--<li#if($current_page == 'triggers') class="active"#end><a href="$!context/triggers">Triggers</a></li>-->
- <li#if($current_page == 'executing') class="active"#end><a href="$!context/executor">Executing</a></li>
- <li#if($current_page == 'history') class="active"#end><a href="$!context/history">History</a></li>
+ <li#if($current_page == 'all') class="active"#end onClick="navMenuClick('$!context/')"><a href="$!context/index">Projects</a></li>
+ <li#if($current_page == 'schedule') class="active"#end onClick="navMenuClick('$!context/schedule')"><a href="$!context/schedule">Scheduling</a></li>
+ <!--<li#if($current_page == 'triggers') class="active"#end onClick="navMenuClick('$!context/triggers')"><a href="$!context/triggers">Triggers</a></li>-->
+ <li#if($current_page == 'executing') class="active"#end onClick="navMenuClick('$!context/executor')"><a href="$!context/executor">Executing</a></li>
+ <li#if($current_page == 'history') class="active"#end onClick="navMenuClick('$!context/history')"><a href="$!context/history">History</a></li>
#foreach ($viewer in $viewers)
#if (!$viewer.hidden)
- <li#if($current_page == $viewer.pluginName) class="active"#end><a href="$!context/$viewer.pluginPath">$viewer.pluginName</a></li>
+ <li#if($current_page == $viewer.pluginName) class="active"#end onClick="navMenuClick('$!context/$viewer.pluginPath')"><a href="$!context/$viewer.pluginPath">$viewer.pluginName</a></li>
#end
#end
#foreach ($trigger in $triggerPlugins)
#if (!$trigger.hidden)
- <li#if($current_page == $trigger.pluginName) class="active"#end><a href="$!context/$trigger.pluginPath">$trigger.pluginName</a></li>
+ <li#if($current_page == $trigger.pluginName) class="active"#end onClick="navMenuClick('$!context/$trigger.pluginPath')"><a href="$!context/$trigger.pluginPath">$trigger.pluginName</a></li>
#end
#end
</ul>
src/less/navbar.less 22(+20 -2)
diff --git a/src/less/navbar.less b/src/less/navbar.less
index 71d9124..3826082 100644
--- a/src/less/navbar.less
+++ b/src/less/navbar.less
@@ -25,13 +25,14 @@
}
.navbar-enviro {
- margin: 25px 20px 0px 10px;
+ margin: 30px 20px 0px 12px;
.navbar-enviro-name {
color: #ff3601;
font-family: Helvetica, Arial, Sans-Serif;
font-size: 118.75%;
font-weight: bold;
+ line-height: 100%;
}
.navbar-enviro-server {
@@ -80,6 +81,11 @@
> li > a {
padding: 0px;
color: #ccc;
+ &:focus,
+ &:hover {
+ color: #ccc;
+ background-color: transparent;
+ }
}
> .active {
@@ -92,11 +98,23 @@
background-color: transparent;
border-bottom: 1px solid #ff3601;
&:hover {
+ color: #fff;
background-color: transparent;
}
}
- > .active > .open {
+ > li.dropdown {
+ padding: 0;
+ }
+
+ > li.dropdown > a {
+ padding: 25px 12px 25px 12px;
+ }
+
+ > .open > a,
+ > .open > a:hover,
+ > .open > a:focus {
+ color: #ccc;
background-color: transparent;
}
}