use of com.azure.storage.blob.BlobContainerClient in project beam by apache.
the class AzureBlobStoreFileSystemTest method testMatchNonGlobs.
@Test
public void testMatchNonGlobs() throws Exception {
// TODO: Write this test with mocks - see GcsFileSystemTest
String container = "test-container" + randomUUID();
BlobContainerClient blobContainerClient = azureBlobStoreFileSystem.getClient().createBlobContainer(container);
List<String> blobNames = new ArrayList<>();
blobNames.add("testdirectory/file1name");
blobNames.add("testdirectory/dir2name/");
blobNames.add("testdirectory/file4name");
for (String blob : blobNames) {
blobContainerClient.getBlobClient(blob).uploadFromFile("src/test/resources/in.txt");
}
List<String> specs = ImmutableList.of("azfs://account/" + container + "/testdirectory/file1name", "azfs://account/" + container + "/testdirectory/dir2name/", "azfs://account/" + container + "/testdirectory/file4name");
List<MatchResult> matchResults = azureBlobStoreFileSystem.match(specs);
assertEquals(3, matchResults.size());
assertThat(ImmutableList.of("azfs://account/" + container + "/testdirectory/file1name"), contains(toFilenames(matchResults.get(0)).toArray()));
assertThat(ImmutableList.of("azfs://account/" + container + "/testdirectory/dir2name/"), contains(toFilenames(matchResults.get(1)).toArray()));
assertThat(ImmutableList.of("azfs://account/" + container + "/testdirectory/file4name"), contains(toFilenames(matchResults.get(2)).toArray()));
blobContainerClient.delete();
}
use of com.azure.storage.blob.BlobContainerClient in project beam by apache.
the class AzureBlobStoreFileSystem method delete.
/**
* This method will delete a virtual folder or a blob, not a container.
*/
@Override
protected void delete(Collection<AzfsResourceId> resourceIds) throws IOException {
for (AzfsResourceId resourceId : resourceIds) {
if (resourceId.getBlob() == null) {
throw new IOException("delete does not delete containers.");
}
BlobContainerClient container = client.get().getBlobContainerClient(resourceId.getContainer());
// deleting a blob that is not a directory
if (!resourceId.isDirectory()) {
BlobClient blob = container.getBlobClient(resourceId.getBlob());
if (!blob.exists()) {
throw new FileNotFoundException("The resource to delete does not exist.");
}
blob.delete();
} else // deleting a directory (not a container)
{
PagedIterable<BlobItem> blobsInDirectory = container.listBlobsByHierarchy(resourceId.getBlob());
blobsInDirectory.forEach(blob -> {
String blobName = blob.getName();
container.getBlobClient(blobName).delete();
});
}
}
}
use of com.azure.storage.blob.BlobContainerClient in project beam by apache.
the class AzureBlobStoreFileSystem method create.
@Override
protected WritableByteChannel create(AzfsResourceId resourceId, CreateOptions createOptions) throws IOException {
BlobContainerClient blobContainerClient = client.get().getBlobContainerClient(resourceId.getContainer());
if (!blobContainerClient.exists()) {
throw new FileNotFoundException("This container does not exist. Creating containers is not supported.");
}
BlobClient blobClient = blobContainerClient.getBlobClient(resourceId.getBlob());
// so throw an error in this case to prevent data loss
if (blobClient.exists()) {
throw new IOException("This filename is already in use.");
}
OutputStream outputStream;
try {
outputStream = blobClient.getBlockBlobClient().getBlobOutputStream();
} catch (BlobStorageException e) {
throw (IOException) e.getCause();
}
return newChannel(outputStream);
}
Aggregations