You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by ka...@apache.org on 2012/11/14 21:10:49 UTC
svn commit: r1409356 - in /oozie/branches/branch-3.3:
core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
release-log.txt
Author: kamrul
Date: Wed Nov 14 20:10:48 2012
New Revision: 1409356
URL: http://svn.apache.org/viewvc?rev=1409356&view=rev
Log:
OOZIE-1058 ACL modify-job should not be hardcoded to group name(mona via mohammad)
Modified:
oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
oozie/branches/branch-3.3/release-log.txt
Modified: oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java?rev=1409356&r1=1409355&r2=1409356&view=diff
==============================================================================
--- oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java (original)
+++ oozie/branches/branch-3.3/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java Wed Nov 14 20:10:48 2012
@@ -657,10 +657,14 @@ public class JavaActionExecutor extends
actionConf.set("mapred.job.name", jobName);
injectActionCallback(context, actionConf);
- if (context.getWorkflow().getAcl() != null) {
- // setting the group owning the Oozie job to allow anybody in that
- // group to kill the jobs.
- actionConf.set("mapreduce.job.acl-modify-job", context.getWorkflow().getAcl());
+ if(actionConf.get(ACL_MODIFY_JOB) == null || actionConf.get(ACL_MODIFY_JOB).trim().equals("")) {
+ // ONLY in the case where user has not given the
+ // modify-job ACL specifically
+ if (context.getWorkflow().getAcl() != null) {
+ // setting the group owning the Oozie job to allow anybody in that
+ // group to modify the jobs.
+ actionConf.set(ACL_MODIFY_JOB, context.getWorkflow().getAcl());
+ }
}
// Setting the credential properties in launcher conf
Modified: oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java?rev=1409356&r1=1409355&r2=1409356&view=diff
==============================================================================
--- oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java (original)
+++ oozie/branches/branch-3.3/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java Wed Nov 14 20:10:48 2012
@@ -301,7 +301,7 @@ public class TestJavaActionExecutor exte
}
- protected Context createContext(String actionXml) throws Exception {
+ protected Context createContext(String actionXml, String group) throws Exception {
JavaActionExecutor ae = new JavaActionExecutor();
Path appJarPath = new Path("lib/test.jar");
@@ -319,6 +319,9 @@ public class TestJavaActionExecutor exte
WorkflowJobBean wf = createBaseWorkflow(protoConf, "action");
+ if(group != null) {
+ wf.setGroup(group);
+ }
WorkflowActionBean action = (WorkflowActionBean) wf.getActions().get(0);
action.setType(ae.getType());
action.setConf(actionXml);
@@ -357,7 +360,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -383,7 +386,7 @@ public class TestJavaActionExecutor exte
"<arg>out</arg>" +
"<capture-output/>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -414,7 +417,7 @@ public class TestJavaActionExecutor exte
"<arg>id</arg>" +
"<capture-output/>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -449,7 +452,7 @@ public class TestJavaActionExecutor exte
"<file>" + appJarPath.toString() + "</file>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
ActionExecutor ae = new JavaActionExecutor();
assertFalse(ae.isCompleted(context.getAction().getExternalStatus()));
@@ -476,7 +479,7 @@ public class TestJavaActionExecutor exte
"<arg>exit0</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -503,7 +506,7 @@ public class TestJavaActionExecutor exte
"<arg>exit1</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -532,7 +535,7 @@ public class TestJavaActionExecutor exte
"<arg>ex</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -558,7 +561,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- final Context context = createContext(actionXml);
+ final Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
assertFalse(runningJob.isComplete());
ActionExecutor ae = new JavaActionExecutor();
@@ -583,7 +586,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- final Context context = createContext(actionXml);
+ final Context context = createContext(actionXml, null);
RunningJob runningJob = submitAction(context);
String launcherId = context.getAction().getExternalId();
@@ -663,7 +666,7 @@ public class TestJavaActionExecutor exte
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
Path appPath = getAppPath();
@@ -721,7 +724,7 @@ public class TestJavaActionExecutor exte
"</prepare>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -941,7 +944,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
JavaActionExecutor ae = new JavaActionExecutor();
@@ -965,7 +968,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
eActionXml = XmlUtils.parseXml(actionXml);
- context = createContext(actionXml);
+ context = createContext(actionXml, null);
ae = new JavaActionExecutor();
@@ -986,7 +989,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
eActionXml = XmlUtils.parseXml(actionXml);
- context = createContext(actionXml);
+ context = createContext(actionXml, null);
ae = new JavaActionExecutor();
@@ -1007,7 +1010,7 @@ public class TestJavaActionExecutor exte
+ getNameNodeUri() + "</name-node>" + "<main-class>" + LauncherMainTester.class.getName()
+ "</main-class>" + "</java>";
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
Path appPath = new Path("localfs://namenode:port/mydir");
JavaActionExecutor ae = new JavaActionExecutor();
JobConf conf = ae.createBaseHadoopConf(context, eActionXml);
@@ -1099,7 +1102,41 @@ public class TestJavaActionExecutor exte
assertNotSame(conf.get(JavaActionExecutor.ACL_VIEW_JOB), actionConf.get(JavaActionExecutor.ACL_VIEW_JOB));
assertNotSame(conf.get(JavaActionExecutor.ACL_MODIFY_JOB), actionConf.get(JavaActionExecutor.ACL_MODIFY_JOB));
}
-
+
+ public void testACLModifyJob() throws Exception {
+ // CASE 1: If user has provided modify-acl value
+ // then it should NOT be overridden by group name
+ String actionXml = "<java>" + "<job-tracker>" + getJobTrackerUri() + "</job-tracker>" +
+ "<name-node>" + getNameNodeUri() + "</name-node> <configuration>" +
+ "<property><name>mapreduce.job.acl-modify-job</name><value>MODIFIER</value></property>" +
+ "</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
+ "</java>";
+
+ Context context = createContext(actionXml, "USERS");
+ RunningJob job = submitAction(context);
+ FileSystem fs = context.getAppFileSystem();
+ Configuration jobXmlConf = new XConfiguration(fs.open(new Path(job.getJobFile())));
+
+ String userModifyAcl = jobXmlConf.get(JavaActionExecutor.ACL_MODIFY_JOB); // 'MODIFIER'
+ String userGroup = context.getWorkflow().getAcl(); // 'USERS'
+ assertFalse(userGroup.equals(userModifyAcl));
+
+ // CASE 2: If user has not provided modify-acl value
+ // then it equals group name
+ actionXml = "<java>" + "<job-tracker>" + getJobTrackerUri() + "</job-tracker>" +
+ "<name-node>" + getNameNodeUri() + "</name-node> <configuration>" +
+ "</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
+ "</java>";
+ context = createContext(actionXml, "USERS");
+ job = submitAction(context);
+ fs = context.getAppFileSystem();
+ jobXmlConf = new XConfiguration(fs.open(new Path(job.getJobFile())));
+
+ userModifyAcl = jobXmlConf.get(JavaActionExecutor.ACL_MODIFY_JOB);
+ userGroup = context.getWorkflow().getAcl();
+ assertTrue(userGroup.equals(userModifyAcl));
+ }
+
public void testParseJobXmlAndConfiguration() throws Exception {
String str = "<java>"
+ "<job-xml>job1.xml</job-xml>"
@@ -1129,7 +1166,7 @@ public class TestJavaActionExecutor exte
Configuration conf = new XConfiguration();
assertEquals(0, conf.size());
- JavaActionExecutor.parseJobXmlAndConfiguration(createContext("<java/>"), xml, appPath, conf);
+ JavaActionExecutor.parseJobXmlAndConfiguration(createContext("<java/>", null), xml, appPath, conf);
assertEquals(4, conf.size());
assertEquals("v1a", conf.get("p1"));
assertEquals("v2", conf.get("p2"));
Modified: oozie/branches/branch-3.3/release-log.txt
URL: http://svn.apache.org/viewvc/oozie/branches/branch-3.3/release-log.txt?rev=1409356&r1=1409355&r2=1409356&view=diff
==============================================================================
--- oozie/branches/branch-3.3/release-log.txt (original)
+++ oozie/branches/branch-3.3/release-log.txt Wed Nov 14 20:10:48 2012
@@ -1,5 +1,6 @@
-- Oozie 3.3.0 release (unreleased)
+OOZIE-1058 ACL modify-job should not be hardcoded to group name(mona via mohammad)
OOZIE-1052 HadoopAccessorService.createFileSystem throws exception in map-reduce action, failing workflow.(ryota via mohammad).
OOZIE-1060 bump hadoop 2.X version to 2.0.2-alpha (rvs via tucu)
OOZIE-959 Use API from OOZIE-906 in console (Ashish via Mohammad)