>From Hussain Towaileb <[email protected]>: Hussain Towaileb has submitted this change. ( 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 Ext-ref: MB-69069 Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20511 Tested-by: Jenkins <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> Reviewed-by: Michael Blow <[email protected]> --- 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(-) Approvals: Michael Blow: Looks good to me, approved Jenkins: Verified Hussain Towaileb: Looks good to me, but someone else must approve 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: merged Gerrit-Project: asterixdb Gerrit-Branch: phoenix Gerrit-Change-Id: I1ee625e30cccf44aeebfa4d5ae5aa99968942ac5 Gerrit-Change-Number: 20511 Gerrit-PatchSet: 3 Gerrit-Owner: Hussain Towaileb <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Hussain Towaileb <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]>
