azkaban-aplcache

project whitelist support

5/28/2015 8:45:14 PM

Details

diff --git a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
index 029e81e..89c6539 100644
--- a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
+++ b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
@@ -517,9 +517,11 @@ public class ProjectManager {
     projectLoader.postEvent(project, type, user, message);
   }
 
-  public void loadProjectWhiteList() {
+  public boolean loadProjectWhiteList() {
     if (props.containsKey(ProjectWhitelist.XML_FILE_PARAM)) {
       ProjectWhitelist.load(props);
+      return true;
     }
+    return false;
   }
 }
diff --git a/azkaban-common/src/main/java/azkaban/project/ProjectWhitelist.java b/azkaban-common/src/main/java/azkaban/project/ProjectWhitelist.java
index 5d7998d..9cd64d1 100644
--- a/azkaban-common/src/main/java/azkaban/project/ProjectWhitelist.java
+++ b/azkaban-common/src/main/java/azkaban/project/ProjectWhitelist.java
@@ -39,7 +39,7 @@ import azkaban.utils.Props;
  *
  */
 public class ProjectWhitelist {
-  static final String XML_FILE_PARAM = "project.whitelist.xml.file";
+  public static final String XML_FILE_PARAM = "project.whitelist.xml.file";
   private static final String PROJECT_WHITELIST_TAG = "ProjectWhitelist";
   private static final String PROJECT_TAG = "project";
   private static final String PROJECTNAME_ATTR = "projectname";
diff --git a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index 523bd49..435e1f9 100644
--- a/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/azkaban-webserver/src/main/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -59,6 +59,7 @@ import azkaban.project.ProjectFileHandler;
 import azkaban.project.ProjectLogEvent;
 import azkaban.project.ProjectManager;
 import azkaban.project.ProjectManagerException;
+import azkaban.project.ProjectWhitelist;
 import azkaban.project.validator.ValidationReport;
 import azkaban.project.validator.ValidatorConfigs;
 import azkaban.scheduler.Schedule;
@@ -1743,24 +1744,22 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
 
   private void handleReloadProjectWhitelist(HttpServletRequest req,
   HttpServletResponse resp, Session session) throws IOException {
-    boolean error = false;
     HashMap<String, Object> ret = new HashMap<String, Object>();
 
     if (hasPermission(session.getUser(), Permission.Type.ADMIN)) {
       try {
-        projectManager.loadProjectWhiteList();
+        if (projectManager.loadProjectWhiteList()) {
+          ret.put("success", "Project whitelist re-loaded!");
+        } else {
+          ret.put("error", "azkaban.properties doesn't contain property " + ProjectWhitelist.XML_FILE_PARAM);
+        }
       } catch(Exception e) {
-        error = true;
         ret.put("error", "Exception occurred while trying to re-load project whitelist: " + e);
       }
     } else {
-      error = true;
       ret.put("error", "Provided session doesn't have admin privilege.");
     }
 
-    if (!error) {
-      ret.put("success", "Project whitelist re-loaded!");
-    }
     this.writeJSON(resp, ret);
   }