Author: daryn Date: Thu Mar 7 19:27:16 2013 New Revision: 1454028 URL: http://svn.apache.org/r1454028 Log: svn merge -c 1454019 FIXES: HADOOP-9374. Add tokens from -tokenCacheFile into UGI (daryn)
Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericOptionsParser.java Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1454028&r1=1454027&r2=1454028&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt Thu Mar 7 19:27:16 2013 @@ -31,6 +31,8 @@ Release 0.23.7 - UNRELEASED HADOOP-9209. Add shell command to dump file checksums (Todd Lipcon via jeagles) + HADOOP-9374. Add tokens from -tokenCacheFile into UGI (daryn) + OPTIMIZATIONS HADOOP-9147. Add missing fields to FIleStatus.toString. Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java?rev=1454028&r1=1454027&r2=1454028&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericOptionsParser.java Thu Mar 7 19:27:16 2013 @@ -42,6 +42,8 @@ import org.apache.hadoop.classification. import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.security.Credentials; +import org.apache.hadoop.security.UserGroupInformation; /** * <code>GenericOptionsParser</code> is a utility to parse command line @@ -316,15 +318,17 @@ public class GenericOptionsParser { String fileName = line.getOptionValue("tokenCacheFile"); // check if the local file exists FileSystem localFs = FileSystem.getLocal(conf); - Path p = new Path(fileName); + Path p = localFs.makeQualified(new Path(fileName)); if (!localFs.exists(p)) { throw new FileNotFoundException("File "+fileName+" does not exist."); } if(LOG.isDebugEnabled()) { LOG.debug("setting conf tokensFile: " + fileName); } - conf.set("mapreduce.job.credentials.json", localFs.makeQualified(p) - .toString(), "from -tokenCacheFile command line option"); + UserGroupInformation.getCurrentUser().addCredentials( + Credentials.readTokenStorageFile(p, conf)); + conf.set("mapreduce.job.credentials.json", p.toString(), + "from -tokenCacheFile command line option"); } } Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericOptionsParser.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericOptionsParser.java?rev=1454028&r1=1454027&r2=1454028&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericOptionsParser.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericOptionsParser.java Thu Mar 7 19:27:16 2013 @@ -27,6 +27,11 @@ import junit.framework.TestCase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.security.Credentials; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.token.Token; +import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenIdentifier; import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; @@ -162,13 +167,25 @@ public class TestGenericOptionsParser ex th instanceof FileNotFoundException); // create file - Path tmpPath = new Path(tmpFile.toString()); - localFs.create(tmpPath); + Path tmpPath = localFs.makeQualified(new Path(tmpFile.toString())); + Token<?> token = new Token<AbstractDelegationTokenIdentifier>( + "identifier".getBytes(), "password".getBytes(), + new Text("token-kind"), new Text("token-service")); + Credentials creds = new Credentials(); + creds.addToken(new Text("token-alias"), token); + creds.writeTokenStorageFile(tmpPath, conf); + new GenericOptionsParser(conf, args); String fileName = conf.get("mapreduce.job.credentials.json"); assertNotNull("files is null", fileName); - assertEquals("files option does not match", - localFs.makeQualified(tmpPath).toString(), fileName); + assertEquals("files option does not match", tmpPath.toString(), fileName); + + Credentials ugiCreds = + UserGroupInformation.getCurrentUser().getCredentials(); + assertEquals(1, ugiCreds.numberOfTokens()); + Token<?> ugiToken = ugiCreds.getToken(new Text("token-alias")); + assertNotNull(ugiToken); + assertEquals(token, ugiToken); localFs.delete(new Path(testDir.getAbsolutePath()), true); }