>From Hussain Towaileb <[email protected]>:
Hussain Towaileb has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511?usp=email )
Change subject: [NO ISSUE][EXT]: change azure cloud client to accept both
clients
......................................................................
[NO ISSUE][EXT]: change azure cloud client to accept both clients
Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5
---
M
asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
M
asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
M
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
3 files changed, 22 insertions(+), 7 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/11/20511/1
diff --git
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
index 0bd16a8..1cd0556 100644
---
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
+++
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/azure/blobstorage/AzBlobStorageCloudClient.java
@@ -100,13 +100,13 @@
private static final Logger LOGGER = LogManager.getLogger();
public AzBlobStorageCloudClient(AzBlobStorageClientConfig config,
ICloudGuardian guardian) {
- this(config, buildClient(config), guardian);
+ this(config, buildClient(config), buildAsyncClient(config), guardian);
}
public AzBlobStorageCloudClient(AzBlobStorageClientConfig config,
BlobServiceClient blobServiceClient,
- ICloudGuardian guardian) {
+ BlobServiceAsyncClient asyncBlobServiceClient, ICloudGuardian
guardian) {
this.blobContainerClient =
blobServiceClient.getBlobContainerClient(config.getBucket());
- this.blobContainerAsyncClient =
buildAsyncClient(config).getBlobContainerAsyncClient(config.getBucket());
+ this.blobContainerAsyncClient =
asyncBlobServiceClient.getBlobContainerAsyncClient(config.getBucket());
this.config = config;
this.guardian = guardian;
long profilerInterval = config.getProfilerLogInterval();
diff --git
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
index fd71ffc..d9eb16d 100644
---
a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
+++
b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/writer/AzureExternalFileWriterFactory.java
@@ -68,7 +68,7 @@
ICloudClient createCloudClient(IApplicationContext appCtx) throws
CompilationException {
AzBlobStorageClientConfig config =
AzBlobStorageClientConfig.of(configuration, writeBufferSize);
return new AzBlobStorageCloudClient(config,
AzureUtils.buildAzureBlobClient(appCtx, configuration),
- ICloudGuardian.NoOpCloudGuardian.INSTANCE);
+ AzureUtils.buildAzureBlobAsyncClient(appCtx, configuration),
ICloudGuardian.NoOpCloudGuardian.INSTANCE);
}
@Override
diff --git
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
index ac407f4..4d2a2dd 100644
---
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
+++
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/azure/blob_storage/AzureUtils.java
@@ -77,6 +77,7 @@
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.storage.blob.BlobContainerClient;
+import com.azure.storage.blob.BlobServiceAsyncClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import com.azure.storage.blob.models.BlobItem;
@@ -94,14 +95,24 @@
throw new AssertionError("do not instantiate");
}
+ public static BlobServiceClient buildAzureBlobClient(IApplicationContext
appCtx, Map<String, String> configuration)
+ throws CompilationException {
+ return buildAzureBlobClient(BlobServiceClient.class, appCtx,
configuration);
+ }
+
+ public static BlobServiceAsyncClient
buildAzureBlobAsyncClient(IApplicationContext appCtx,
+ Map<String, String> configuration) throws CompilationException {
+ return buildAzureBlobClient(BlobServiceAsyncClient.class, appCtx,
configuration);
+ }
+
/**
* Builds the Azure storage account using the provided configuration
*
* @param configuration properties
* @return client
*/
- public static BlobServiceClient buildAzureBlobClient(IApplicationContext
appCtx, Map<String, String> configuration)
- throws CompilationException {
+ private static <T> T buildAzureBlobClient(Class<T> type,
IApplicationContext appCtx,
+ Map<String, String> configuration) throws CompilationException {
String managedIdentityId =
configuration.get(MANAGED_IDENTITY_ID_FIELD_NAME);
String accountName = configuration.get(ACCOUNT_NAME_FIELD_NAME);
String accountKey = configuration.get(ACCOUNT_KEY_FIELD_NAME);
@@ -247,7 +258,11 @@
}
try {
- return builder.buildClient();
+ if (type == BlobServiceClient.class) {
+ return type.cast(builder.buildClient());
+ } else {
+ return type.cast(builder.buildAsyncClient());
+ }
} catch (Exception ex) {
throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR,
ex, getMessageOrToString(ex));
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5
Gerrit-Change-Number: 20511
Gerrit-PatchSet: 1
Gerrit-Owner: Hussain Towaileb <[email protected]>