Java Code Examples for org.apache.hadoop.fs.FileSystem#getAclStatus()

The following examples show how to use org.apache.hadoop.fs.FileSystem#getAclStatus() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestINodeAttributeProvider.java    From hadoop with Apache License 2.0 6 votes vote down vote up
@Test
public void testCustomProvider() throws Exception {
  FileSystem fs = FileSystem.get(miniDFS.getConfiguration(0));
  fs.mkdirs(new Path("/user/xxx"));
  FileStatus status = fs.getFileStatus(new Path("/user/xxx"));
  Assert.assertEquals(System.getProperty("user.name"), status.getOwner());
  Assert.assertEquals("supergroup", status.getGroup());
  Assert.assertEquals(new FsPermission((short) 0755), status.getPermission());
  fs.mkdirs(new Path("/user/authz"));
  Path p = new Path("/user/authz");
  status = fs.getFileStatus(p);
  Assert.assertEquals("foo", status.getOwner());
  Assert.assertEquals("bar", status.getGroup());
  Assert.assertEquals(new FsPermission((short) 0770), status.getPermission());
  AclStatus aclStatus = fs.getAclStatus(p);
  Assert.assertEquals(1, aclStatus.getEntries().size());
  Assert.assertEquals(AclEntryType.GROUP, aclStatus.getEntries().get(0)
          .getType());
  Assert.assertEquals("xxx", aclStatus.getEntries().get(0)
          .getName());
  Assert.assertEquals(FsAction.ALL, aclStatus.getEntries().get(0)
          .getPermission());
  Map<String, byte[]> xAttrs = fs.getXAttrs(p);
  Assert.assertTrue(xAttrs.containsKey("user.test"));
  Assert.assertEquals(2, xAttrs.get("user.test").length);
}
 
Example 2
Source File: TestINodeAttributeProvider.java    From big-c with Apache License 2.0 6 votes vote down vote up
@Test
public void testCustomProvider() throws Exception {
  FileSystem fs = FileSystem.get(miniDFS.getConfiguration(0));
  fs.mkdirs(new Path("/user/xxx"));
  FileStatus status = fs.getFileStatus(new Path("/user/xxx"));
  Assert.assertEquals(System.getProperty("user.name"), status.getOwner());
  Assert.assertEquals("supergroup", status.getGroup());
  Assert.assertEquals(new FsPermission((short) 0755), status.getPermission());
  fs.mkdirs(new Path("/user/authz"));
  Path p = new Path("/user/authz");
  status = fs.getFileStatus(p);
  Assert.assertEquals("foo", status.getOwner());
  Assert.assertEquals("bar", status.getGroup());
  Assert.assertEquals(new FsPermission((short) 0770), status.getPermission());
  AclStatus aclStatus = fs.getAclStatus(p);
  Assert.assertEquals(1, aclStatus.getEntries().size());
  Assert.assertEquals(AclEntryType.GROUP, aclStatus.getEntries().get(0)
          .getType());
  Assert.assertEquals("xxx", aclStatus.getEntries().get(0)
          .getName());
  Assert.assertEquals(FsAction.ALL, aclStatus.getEntries().get(0)
          .getPermission());
  Map<String, byte[]> xAttrs = fs.getXAttrs(p);
  Assert.assertTrue(xAttrs.containsKey("user.test"));
  Assert.assertEquals(2, xAttrs.get("user.test").length);
}
 
Example 3
Source File: BaseTestHttpFSWith.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Simple acl tests on a directory: set a default acl, remove default acls.
 * @throws Exception
 */
private void testDirAcls() throws Exception {
  if ( isLocalFS() ) {
    return;
  }

  final String defUser1 = "default:user:glarch:r-x";

  FileSystem proxyFs = FileSystem.get(getProxiedFSConf());
  FileSystem httpfs = getHttpFSFileSystem();

  Path dir = getProxiedFSTestDir();

  /* ACL Status on a directory */
  AclStatus proxyAclStat = proxyFs.getAclStatus(dir);
  AclStatus httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  /* Set a default ACL on the directory */
  httpfs.setAcl(dir, (AclEntry.parseAclSpec(defUser1,true)));
  proxyAclStat = proxyFs.getAclStatus(dir);
  httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  /* Remove the default ACL */
  httpfs.removeDefaultAcl(dir);
  proxyAclStat = proxyFs.getAclStatus(dir);
  httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);
}
 
Example 4
Source File: DistCpUtils.java    From hadoop with Apache License 2.0 5 votes vote down vote up
/**
 * Determines if a file system supports ACLs by running a canary getAclStatus
 * request on the file system root.  This method is used before distcp job
 * submission to fail fast if the user requested preserving ACLs, but the file
 * system cannot support ACLs.
 *
 * @param fs FileSystem to check
 * @throws AclsNotSupportedException if fs does not support ACLs
 */
public static void checkFileSystemAclSupport(FileSystem fs)
    throws AclsNotSupportedException {
  try {
    fs.getAclStatus(new Path(Path.SEPARATOR));
  } catch (Exception e) {
    throw new AclsNotSupportedException("ACLs not supported for file system: "
      + fs.getUri());
  }
}
 
Example 5
Source File: BaseTestHttpFSWith.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Simple acl tests on a directory: set a default acl, remove default acls.
 * @throws Exception
 */
private void testDirAcls() throws Exception {
  if ( isLocalFS() ) {
    return;
  }

  final String defUser1 = "default:user:glarch:r-x";

  FileSystem proxyFs = FileSystem.get(getProxiedFSConf());
  FileSystem httpfs = getHttpFSFileSystem();

  Path dir = getProxiedFSTestDir();

  /* ACL Status on a directory */
  AclStatus proxyAclStat = proxyFs.getAclStatus(dir);
  AclStatus httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  /* Set a default ACL on the directory */
  httpfs.setAcl(dir, (AclEntry.parseAclSpec(defUser1,true)));
  proxyAclStat = proxyFs.getAclStatus(dir);
  httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  /* Remove the default ACL */
  httpfs.removeDefaultAcl(dir);
  proxyAclStat = proxyFs.getAclStatus(dir);
  httpfsAclStat = httpfs.getAclStatus(dir);
  assertSameAcls(httpfsAclStat, proxyAclStat);
}
 
Example 6
Source File: DistCpUtils.java    From big-c with Apache License 2.0 5 votes vote down vote up
/**
 * Determines if a file system supports ACLs by running a canary getAclStatus
 * request on the file system root.  This method is used before distcp job
 * submission to fail fast if the user requested preserving ACLs, but the file
 * system cannot support ACLs.
 *
 * @param fs FileSystem to check
 * @throws AclsNotSupportedException if fs does not support ACLs
 */
public static void checkFileSystemAclSupport(FileSystem fs)
    throws AclsNotSupportedException {
  try {
    fs.getAclStatus(new Path(Path.SEPARATOR));
  } catch (Exception e) {
    throw new AclsNotSupportedException("ACLs not supported for file system: "
      + fs.getUri());
  }
}
 
Example 7
Source File: BaseTestHttpFSWith.java    From hadoop with Apache License 2.0 4 votes vote down vote up
/**
 * Simple ACL tests on a file:  Set an acl, add an acl, remove one acl,
 * and remove all acls.
 * @throws Exception
 */
private void testFileAcls() throws Exception {
  if ( isLocalFS() ) {
    return;
  }

  final String aclUser1 = "user:foo:rw-";
  final String aclUser2 = "user:bar:r--";
  final String aclGroup1 = "group::r--";
  final String aclSet = "user::rwx," + aclUser1 + ","
          + aclGroup1 + ",other::---";

  FileSystem proxyFs = FileSystem.get(getProxiedFSConf());
  FileSystem httpfs = getHttpFSFileSystem();

  Path path = new Path(getProxiedFSTestDir(), "testAclStatus.txt");
  OutputStream os = proxyFs.create(path);
  os.write(1);
  os.close();

  AclStatus proxyAclStat = proxyFs.getAclStatus(path);
  AclStatus httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.setAcl(path, AclEntry.parseAclSpec(aclSet,true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.modifyAclEntries(path, AclEntry.parseAclSpec(aclUser2, true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.removeAclEntries(path, AclEntry.parseAclSpec(aclUser1, true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.removeAcl(path);
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);
}
 
Example 8
Source File: TestViewFileSystemDelegation.java    From hadoop with Apache License 2.0 4 votes vote down vote up
/**
 * Tests that ViewFileSystem dispatches calls for every ACL method through the
 * mount table to the correct underlying FileSystem with all Path arguments
 * translated as required.
 */
@Test
public void testAclMethods() throws Exception {
  Configuration conf = ViewFileSystemTestSetup.createConfig();
  FileSystem mockFs1 = setupMockFileSystem(conf, new URI("mockfs1:/"));
  FileSystem mockFs2 = setupMockFileSystem(conf, new URI("mockfs2:/"));
  FileSystem viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf);

  Path viewFsPath1 = new Path("/mounts/mockfs1/a/b/c");
  Path mockFsPath1 = new Path("/a/b/c");
  Path viewFsPath2 = new Path("/mounts/mockfs2/d/e/f");
  Path mockFsPath2 = new Path("/d/e/f");
  List<AclEntry> entries = Collections.emptyList();

  viewFs.modifyAclEntries(viewFsPath1, entries);
  verify(mockFs1).modifyAclEntries(mockFsPath1, entries);
  viewFs.modifyAclEntries(viewFsPath2, entries);
  verify(mockFs2).modifyAclEntries(mockFsPath2, entries);

  viewFs.removeAclEntries(viewFsPath1, entries);
  verify(mockFs1).removeAclEntries(mockFsPath1, entries);
  viewFs.removeAclEntries(viewFsPath2, entries);
  verify(mockFs2).removeAclEntries(mockFsPath2, entries);

  viewFs.removeDefaultAcl(viewFsPath1);
  verify(mockFs1).removeDefaultAcl(mockFsPath1);
  viewFs.removeDefaultAcl(viewFsPath2);
  verify(mockFs2).removeDefaultAcl(mockFsPath2);

  viewFs.removeAcl(viewFsPath1);
  verify(mockFs1).removeAcl(mockFsPath1);
  viewFs.removeAcl(viewFsPath2);
  verify(mockFs2).removeAcl(mockFsPath2);

  viewFs.setAcl(viewFsPath1, entries);
  verify(mockFs1).setAcl(mockFsPath1, entries);
  viewFs.setAcl(viewFsPath2, entries);
  verify(mockFs2).setAcl(mockFsPath2, entries);

  viewFs.getAclStatus(viewFsPath1);
  verify(mockFs1).getAclStatus(mockFsPath1);
  viewFs.getAclStatus(viewFsPath2);
  verify(mockFs2).getAclStatus(mockFsPath2);
}
 
Example 9
Source File: BaseTestHttpFSWith.java    From big-c with Apache License 2.0 4 votes vote down vote up
/**
 * Simple ACL tests on a file:  Set an acl, add an acl, remove one acl,
 * and remove all acls.
 * @throws Exception
 */
private void testFileAcls() throws Exception {
  if ( isLocalFS() ) {
    return;
  }

  final String aclUser1 = "user:foo:rw-";
  final String aclUser2 = "user:bar:r--";
  final String aclGroup1 = "group::r--";
  final String aclSet = "user::rwx," + aclUser1 + ","
          + aclGroup1 + ",other::---";

  FileSystem proxyFs = FileSystem.get(getProxiedFSConf());
  FileSystem httpfs = getHttpFSFileSystem();

  Path path = new Path(getProxiedFSTestDir(), "testAclStatus.txt");
  OutputStream os = proxyFs.create(path);
  os.write(1);
  os.close();

  AclStatus proxyAclStat = proxyFs.getAclStatus(path);
  AclStatus httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.setAcl(path, AclEntry.parseAclSpec(aclSet,true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.modifyAclEntries(path, AclEntry.parseAclSpec(aclUser2, true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.removeAclEntries(path, AclEntry.parseAclSpec(aclUser1, true));
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);

  httpfs.removeAcl(path);
  proxyAclStat = proxyFs.getAclStatus(path);
  httpfsAclStat = httpfs.getAclStatus(path);
  assertSameAcls(httpfsAclStat, proxyAclStat);
}
 
Example 10
Source File: TestViewFileSystemDelegation.java    From big-c with Apache License 2.0 4 votes vote down vote up
/**
 * Tests that ViewFileSystem dispatches calls for every ACL method through the
 * mount table to the correct underlying FileSystem with all Path arguments
 * translated as required.
 */
@Test
public void testAclMethods() throws Exception {
  Configuration conf = ViewFileSystemTestSetup.createConfig();
  FileSystem mockFs1 = setupMockFileSystem(conf, new URI("mockfs1:/"));
  FileSystem mockFs2 = setupMockFileSystem(conf, new URI("mockfs2:/"));
  FileSystem viewFs = FileSystem.get(FsConstants.VIEWFS_URI, conf);

  Path viewFsPath1 = new Path("/mounts/mockfs1/a/b/c");
  Path mockFsPath1 = new Path("/a/b/c");
  Path viewFsPath2 = new Path("/mounts/mockfs2/d/e/f");
  Path mockFsPath2 = new Path("/d/e/f");
  List<AclEntry> entries = Collections.emptyList();

  viewFs.modifyAclEntries(viewFsPath1, entries);
  verify(mockFs1).modifyAclEntries(mockFsPath1, entries);
  viewFs.modifyAclEntries(viewFsPath2, entries);
  verify(mockFs2).modifyAclEntries(mockFsPath2, entries);

  viewFs.removeAclEntries(viewFsPath1, entries);
  verify(mockFs1).removeAclEntries(mockFsPath1, entries);
  viewFs.removeAclEntries(viewFsPath2, entries);
  verify(mockFs2).removeAclEntries(mockFsPath2, entries);

  viewFs.removeDefaultAcl(viewFsPath1);
  verify(mockFs1).removeDefaultAcl(mockFsPath1);
  viewFs.removeDefaultAcl(viewFsPath2);
  verify(mockFs2).removeDefaultAcl(mockFsPath2);

  viewFs.removeAcl(viewFsPath1);
  verify(mockFs1).removeAcl(mockFsPath1);
  viewFs.removeAcl(viewFsPath2);
  verify(mockFs2).removeAcl(mockFsPath2);

  viewFs.setAcl(viewFsPath1, entries);
  verify(mockFs1).setAcl(mockFsPath1, entries);
  viewFs.setAcl(viewFsPath2, entries);
  verify(mockFs2).setAcl(mockFsPath2, entries);

  viewFs.getAclStatus(viewFsPath1);
  verify(mockFs1).getAclStatus(mockFsPath1);
  viewFs.getAclStatus(viewFsPath2);
  verify(mockFs2).getAclStatus(mockFsPath2);
}
 
Example 11
Source File: FSOperations.java    From hadoop with Apache License 2.0 2 votes vote down vote up
/**
 * Executes the filesystem operation.
 *
 * @param fs filesystem instance to use.
 *
 * @return a Map object (JSON friendly) with the file status.
 *
 * @throws IOException thrown if an IO error occurred.
 */
@Override
public Map execute(FileSystem fs) throws IOException {
  AclStatus status = fs.getAclStatus(path);
  return aclStatusToJSON(status);
}
 
Example 12
Source File: FSOperations.java    From big-c with Apache License 2.0 2 votes vote down vote up
/**
 * Executes the filesystem operation.
 *
 * @param fs filesystem instance to use.
 *
 * @return a Map object (JSON friendly) with the file status.
 *
 * @throws IOException thrown if an IO error occurred.
 */
@Override
public Map execute(FileSystem fs) throws IOException {
  AclStatus status = fs.getAclStatus(path);
  return aclStatusToJSON(status);
}