You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by bo...@apache.org on 2010/05/18 18:21:24 UTC
svn commit: r945735 - in /hadoop/common/trunk: CHANGES.txt
src/java/org/apache/hadoop/fs/FileSystem.java
src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java
Author: boryas
Date: Tue May 18 16:21:24 2010
New Revision: 945735
URL: http://svn.apache.org/viewvc?rev=945735&view=rev
Log:
HADOOP-6769. Add an API in FileSystem to get FileSystem instances based on users
Modified:
hadoop/common/trunk/CHANGES.txt
hadoop/common/trunk/src/java/org/apache/hadoop/fs/FileSystem.java
hadoop/common/trunk/src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java
Modified: hadoop/common/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=945735&r1=945734&r2=945735&view=diff
==============================================================================
--- hadoop/common/trunk/CHANGES.txt (original)
+++ hadoop/common/trunk/CHANGES.txt Tue May 18 16:21:24 2010
@@ -3,6 +3,8 @@ Hadoop Change Log
Trunk (unreleased changes)
IMPROVEMENTS
+ HADOOP-6769. Add an API in FileSystem to get FileSystem instances based
+ on users(ddas via boryas)
HADOOP-6600. mechanism for authorization check for inter-server
protocols. (boryas)
Modified: hadoop/common/trunk/src/java/org/apache/hadoop/fs/FileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/fs/FileSystem.java?rev=945735&r1=945734&r2=945735&view=diff
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/fs/FileSystem.java (original)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/fs/FileSystem.java Tue May 18 16:21:24 2010
@@ -21,6 +21,7 @@ import java.io.Closeable;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
+import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumSet;
@@ -95,6 +96,31 @@ public abstract class FileSystem extends
* or the JVM is exited.
*/
private Set<Path> deleteOnExit = new TreeSet<Path>();
+
+ /**
+ * Get a filesystem instance based on the uri, the passed
+ * configuration and the user
+ * @param uri
+ * @param conf
+ * @param user
+ * @return the filesystem instance
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static FileSystem get(final URI uri, final Configuration conf,
+ final String user) throws IOException, InterruptedException {
+ UserGroupInformation ugi;
+ if (user == null) {
+ ugi = UserGroupInformation.getCurrentUser();
+ } else {
+ ugi = UserGroupInformation.createRemoteUser(user);
+ }
+ return ugi.doAs(new PrivilegedExceptionAction<FileSystem>() {
+ public FileSystem run() throws IOException {
+ return get(uri, conf);
+ }
+ });
+ }
/** Returns the configured filesystem implementation.*/
public static FileSystem get(Configuration conf) throws IOException {
Modified: hadoop/common/trunk/src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java?rev=945735&r1=945734&r2=945735&view=diff
==============================================================================
--- hadoop/common/trunk/src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java (original)
+++ hadoop/common/trunk/src/test/core/org/apache/hadoop/fs/TestFileSystemCaching.java Tue May 18 16:21:24 2010
@@ -26,6 +26,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenIdentifier;
@@ -153,5 +154,14 @@ public class TestFileSystemCaching {
//We should have the same filesystem for both
assertSame(fsA, fsA1);
}
-
+
+ @Test
+ public void testUserFS() throws Exception {
+ final Configuration conf = new Configuration();
+
+ FileSystem fsU1 = FileSystem.get(new URI("cachedfile://a"), conf, "bar");
+ FileSystem fsU2 = FileSystem.get(new URI("cachedfile://a"), conf, "foo");
+
+ assertNotSame(fsU1, fsU2);
+ }
}