azkaban-uncached
Changes
src/java/azkaban/project/ProjectManager.java 16(+15 -1)
Details
diff --git a/src/java/azkaban/execapp/FlowRunnerManager.java b/src/java/azkaban/execapp/FlowRunnerManager.java
index 6360197..c45475f 100644
--- a/src/java/azkaban/execapp/FlowRunnerManager.java
+++ b/src/java/azkaban/execapp/FlowRunnerManager.java
@@ -18,6 +18,7 @@ package azkaban.execapp;
import java.io.File;
import java.io.FileFilter;
+import java.io.FilenameFilter;
import java.io.IOException;
import java.lang.Thread.State;
import java.util.ArrayList;
@@ -101,6 +102,8 @@ public class FlowRunnerManager implements EventListener {
projectDirectory.mkdirs();
}
+ installedProjects = loadExistingProjects();
+
//azkaban.temp.dir
numThreads = props.getInt("executor.flow.threads", DEFAULT_NUM_EXECUTING_FLOWS);
executorService = Executors.newFixedThreadPool(numThreads);
@@ -118,6 +121,32 @@ public class FlowRunnerManager implements EventListener {
}
+ private Map<Pair<Integer, Integer>, ProjectVersion> loadExistingProjects() {
+ Map<Pair<Integer, Integer>, ProjectVersion> allProjects = new HashMap<Pair<Integer,Integer>, ProjectVersion>();
+ for(File project : projectDirectory.listFiles(new FilenameFilter() {
+
+ String pattern = "[0-9]+\\.[0-9]+";
+ @Override
+ public boolean accept(File dir, String name) {
+ return name.matches(pattern);
+ }
+ })) {
+ if(project.isDirectory()) {
+ try {
+ String fileName = new File(project.getAbsolutePath()).getName();
+ int projectId = Integer.parseInt(fileName.split("\\.")[0]);
+ int versionNum = Integer.parseInt(fileName.split("\\.")[1]);
+ ProjectVersion version = new ProjectVersion(projectId, versionNum);
+ allProjects.put(new Pair<Integer, Integer>(projectId, versionNum), version);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return allProjects;
+ }
+
public Props getGlobalProps() {
return globalProps;
}
src/java/azkaban/project/ProjectManager.java 16(+15 -1)
diff --git a/src/java/azkaban/project/ProjectManager.java b/src/java/azkaban/project/ProjectManager.java
index d4ac2fb..a5be28b 100644
--- a/src/java/azkaban/project/ProjectManager.java
+++ b/src/java/azkaban/project/ProjectManager.java
@@ -32,6 +32,7 @@ public class ProjectManager {
private final Props props;
private final File tempDir;
private final int projectVersionRetention;
+ private final boolean creatorDefaultPermissions;
public ProjectManager(ProjectLoader loader, Props props) {
this.projectLoader = loader;
@@ -40,6 +41,8 @@ public class ProjectManager {
this.projectVersionRetention = (props.getInt("project.version.retention", 3));
logger.info("Project version retention is set to " + projectVersionRetention);
+ this.creatorDefaultPermissions = props.getBoolean("azkaban.creator.default.permissions", true);
+
if (!tempDir.exists()) {
tempDir.mkdirs();
}
@@ -170,8 +173,19 @@ public class ProjectManager {
projectsByName.put(newProject.getName(), newProject);
projectsById.put(newProject.getId(), newProject);
+ if(creatorDefaultPermissions) {
// Add permission to project
- projectLoader.updatePermission(newProject, creator.getUserId(), new Permission(Permission.Type.ADMIN), false);
+ projectLoader.updatePermission(newProject, creator.getUserId(), new Permission(Permission.Type.ADMIN), false);
+
+ // Add proxy user
+ newProject.getProxyUsers().add(creator.getUserId());
+ try {
+ updateProjectSetting(newProject);
+ } catch (ProjectManagerException e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
projectLoader.postEvent(newProject, EventType.CREATED, creator.getUserId(), null);