use of org.apache.storm.generated.SettableBlobMeta in project storm by apache.
the class ClientBlobStoreTest method validatedBlobAcls.
private void validatedBlobAcls(String testKey) throws KeyNotFoundException, AuthorizationException {
ReadableBlobMeta blobMeta = client.getBlobMeta(testKey);
Assert.assertNotNull("The blob" + testKey + "does not have any readable blobMeta.", blobMeta);
SettableBlobMeta settableBlob = blobMeta.get_settable();
Assert.assertNotNull("The blob" + testKey + "does not have any settable blobMeta.", settableBlob);
}
use of org.apache.storm.generated.SettableBlobMeta in project storm by apache.
the class ClientBlobStoreTest method testDuplicateACLsForCreate.
@Test(expected = AuthorizationException.class)
public void testDuplicateACLsForCreate() throws Exception {
SettableBlobMeta meta = new SettableBlobMeta();
AccessControl submitterAcl = BlobStoreAclHandler.parseAccessControl("u:tester:rwa");
meta.add_to_acl(submitterAcl);
AccessControl duplicateAcl = BlobStoreAclHandler.parseAccessControl("u:tester:r--");
meta.add_to_acl(duplicateAcl);
String testKey = "testDuplicateACLsBlobKey";
client.createBlob(testKey, meta);
}
use of org.apache.storm.generated.SettableBlobMeta in project storm by apache.
the class LocalizerTest method testFailAcls.
@Test(expected = AuthorizationException.class)
public void testFailAcls() throws Exception {
Map conf = new HashMap();
// set clean time really high so doesn't kick in
conf.put(Config.SUPERVISOR_LOCALIZER_CACHE_CLEANUP_INTERVAL_MS, 60 * 60 * 1000);
String topo1 = "topo1";
String key1 = "key1";
Localizer localizer = new TestLocalizer(conf, baseDir.toString());
ReadableBlobMeta rbm = new ReadableBlobMeta();
// set acl so user doesn't have read access
AccessControl acl = new AccessControl(AccessControlType.USER, BlobStoreAclHandler.ADMIN);
acl.set_name(user1);
rbm.set_settable(new SettableBlobMeta(Arrays.asList(acl)));
when(mockblobstore.getBlobMeta(anyString())).thenReturn(rbm);
when(mockblobstore.getBlob(key1)).thenReturn(new TestInputStreamWithMeta());
File user1Dir = localizer.getLocalUserFileCacheDir(user1);
assertTrue("failed to create user dir", user1Dir.mkdirs());
// This should throw AuthorizationException because auth failed
localizer.getBlob(new LocalResource(key1, false), user1, topo1, user1Dir);
}
use of org.apache.storm.generated.SettableBlobMeta in project storm by apache.
the class HdfsBlobStore method updateBlob.
@Override
public AtomicOutputStream updateBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException {
who = checkAndGetSubject(who);
SettableBlobMeta meta = getStoredBlobMeta(key);
validateKey(key);
_aclHandler.hasPermissions(meta.get_acl(), WRITE, who, key);
try {
BlobStoreFile dataFile = _hbs.write(DATA_PREFIX + key, false);
dataFile.setMetadata(meta);
return new BlobStoreFileOutputStream(dataFile);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
use of org.apache.storm.generated.SettableBlobMeta in project storm by apache.
the class HdfsBlobStore method getBlobMeta.
@Override
public ReadableBlobMeta getBlobMeta(String key, Subject who) throws AuthorizationException, KeyNotFoundException {
who = checkAndGetSubject(who);
validateKey(key);
SettableBlobMeta meta = getStoredBlobMeta(key);
_aclHandler.validateUserCanReadMeta(meta.get_acl(), who, key);
ReadableBlobMeta rbm = new ReadableBlobMeta();
rbm.set_settable(meta);
try {
BlobStoreFile pf = _hbs.read(DATA_PREFIX + key);
rbm.set_version(pf.getModTime());
} catch (IOException e) {
throw new RuntimeException(e);
}
return rbm;
}
Aggregations