This is an automated email from the ASF dual-hosted git repository.

motus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/reef.git


The following commit(s) were added to refs/heads/master by this push:
     new 58cd694  [REEF-2035] BlobFs parameters should be account name and key 
(#1472)
58cd694 is described below

commit 58cd6946ff9c302ff06699d4086670921afe2140
Author: mandyshieh <[email protected]>
AuthorDate: Mon Jul 9 15:08:50 2018 -0700

    [REEF-2035] BlobFs parameters should be account name and key (#1472)
    
    Take out the connection string parameter and replace with account name and 
account key. Connection string is then constructed whenever necessary.
    
    JIRA: [REEF-2035] (https://issues.apache.org/jira/browse/REEF-2035)
    
    Pull Request:
      This closes #1472
---
 .../YARN/HDI/HDInsightClientConfiguration.cs             |  2 +-
 lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloREEF.cs  | 12 +++++++-----
 ...BlockBlobFileSystem.cs => TestAzureBlobFileSystem.cs} |  7 ++++---
 ...lobFileSystemE2E.cs => TestAzureBlobFileSystemE2E.cs} | 12 ++++++++----
 ...zureBlockBlobFileSystem.cs => AzureBlobFileSystem.cs} |  4 ++--
 ...figuration.cs => AzureBlobFileSystemConfiguration.cs} | 16 +++++++++-------
 ...er.cs => AzureBlobFileSystemConfigurationProvider.cs} | 14 ++++++++------
 .../FileSystem/AzureBlob/AzureCloudBlobClient.cs         |  5 ++++-
 ...ConnectionString.cs => AzureBlobStorageAccountKey.cs} |  6 +++---
 ...onnectionString.cs => AzureBlobStorageAccountName.cs} |  6 +++---
 10 files changed, 49 insertions(+), 35 deletions(-)

diff --git 
a/lang/cs/Org.Apache.REEF.Client/YARN/HDI/HDInsightClientConfiguration.cs 
b/lang/cs/Org.Apache.REEF.Client/YARN/HDI/HDInsightClientConfiguration.cs
index 4b91146..4c64cb9 100644
--- a/lang/cs/Org.Apache.REEF.Client/YARN/HDI/HDInsightClientConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Client/YARN/HDI/HDInsightClientConfiguration.cs
@@ -76,7 +76,7 @@ namespace Org.Apache.REEF.Client.YARN.HDI
                 GenericType<HDInsightCommandLineEnvironment>.Class)
             
.BindImplementation(GenericType<IResourceFileRemoteUrlToClusterUrlConverter>.Class,
                 
GenericType<HDInsightResourceFileRemoteUrlToClusterUrlConverter>.Class)
-            .Merge(AzureBlockBlobFileSystemConfiguration.ConfigurationModule)
+            .Merge(AzureBlobFileSystemConfiguration.ConfigurationModule)
             .Build();
     }
 }
\ No newline at end of file
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloREEF.cs 
b/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloREEF.cs
index fede636..4cb1c27 100644
--- a/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloREEF.cs
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloREEF.cs
@@ -104,16 +104,18 @@ namespace Org.Apache.REEF.Examples.HelloREEF
                     return 
YARNClientConfiguration.ConfigurationModuleYARNRest.Build();
                 case HDInsight:
                     // To run against HDInsight please replace placeholders 
below, with actual values for
-                    // connection string, container name (available at Azure 
portal) and HDInsight
+                    // blob storage account name and key, container name 
(available at Azure portal) and HDInsight
                     // credentials (username and password)
-                    const string connectionString = "ConnString";
-                    const string continerName = "foo";
+                    const string blobStorageAccountName = "name";
+                    const string blobStorageAccountKey = "key";
+                    const string containerName = "foo";
                     return HDInsightClientConfiguration.ConfigurationModule
                         
.Set(HDInsightClientConfiguration.HDInsightPasswordParameter, @"pwd")
                         
.Set(HDInsightClientConfiguration.HDInsightUsernameParameter, @"foo")
                         
.Set(HDInsightClientConfiguration.HDInsightUrlParameter, 
@"https://foo.azurehdinsight.net/";)
-                        
.Set(HDInsightClientConfiguration.JobSubmissionDirectoryPrefix, 
string.Format(@"/{0}/tmp", continerName))
-                        
.Set(AzureBlockBlobFileSystemConfiguration.ConnectionString, connectionString)
+                        
.Set(HDInsightClientConfiguration.JobSubmissionDirectoryPrefix, 
$@"/{containerName}/tmp")
+                        .Set(AzureBlobFileSystemConfiguration.AccountName, 
blobStorageAccountName)
+                        .Set(AzureBlobFileSystemConfiguration.AccountKey, 
blobStorageAccountKey)
                         .Build();
                 case AzureBatch:
                     return 
AzureBatchRuntimeClientConfiguration.ConfigurationModule
diff --git a/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystem.cs 
b/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystem.cs
similarity index 95%
rename from lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystem.cs
rename to lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystem.cs
index c5b23b9..48ae100 100644
--- a/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystem.cs
+++ b/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystem.cs
@@ -179,13 +179,14 @@ namespace Org.Apache.REEF.IO.Tests
 
             public IFileSystem GetAzureFileSystem()
             {
-                var conf = 
AzureBlockBlobFileSystemConfiguration.ConfigurationModule
-                    
.Set(AzureBlockBlobFileSystemConfiguration.ConnectionString, 
"DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;")
+                var conf = AzureBlobFileSystemConfiguration.ConfigurationModule
+                    .Set(AzureBlobFileSystemConfiguration.AccountName, 
"accountName")
+                    .Set(AzureBlobFileSystemConfiguration.AccountKey, 
"accountKey")
                     .Build();
 
                 var injector = TangFactory.GetTang().NewInjector(conf);
                 injector.BindVolatileInstance(TestCloudBlobClient);
-                var fs = injector.GetInstance<AzureBlockBlobFileSystem>();
+                var fs = injector.GetInstance<AzureBlobFileSystem>();
                 TestCloudBlobClient.BaseUri.ReturnsForAnyArgs(BaseUri);
                 TestCloudBlockBlob.Open().Returns(TestOpenStream);
                 TestCloudBlockBlob.Create().Returns(TestCreateStream);
diff --git 
a/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystemE2E.cs 
b/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystemE2E.cs
similarity index 95%
rename from lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystemE2E.cs
rename to lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystemE2E.cs
index f866944..7ee1268 100644
--- a/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlockBlobFileSystemE2E.cs
+++ b/lang/cs/Org.Apache.REEF.IO.Tests/TestAzureBlobFileSystemE2E.cs
@@ -40,17 +40,21 @@ namespace Org.Apache.REEF.IO.Tests
         private IFileSystem _fileSystem;
         private CloudBlobClient _client;
         private CloudBlobContainer _container;
+        private const string AzureBlobConnectionFormat = 
"DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};";
 
         public TestAzureBlockBlobFileSystemE2E()
         {
             // Fill in before running test!
-            const string ConnectionString = 
"DefaultEndpointsProtocol=https;AccountName=myAccount;AccountKey=myKey;EndpointSuffix=core.windows.net";
+            const string AccountName = "";
+            const string AccountKey = "";
+            string ConnectionString = string.Format(AzureBlobConnectionFormat, 
AccountName, AccountKey);
             var defaultContainerName = "reef-test-container-" + Guid.NewGuid();
-            var conf = 
AzureBlockBlobFileSystemConfiguration.ConfigurationModule
-                .Set(AzureBlockBlobFileSystemConfiguration.ConnectionString, 
ConnectionString)
+            var conf = AzureBlobFileSystemConfiguration.ConfigurationModule
+                .Set(AzureBlobFileSystemConfiguration.AccountName, AccountName)
+                .Set(AzureBlobFileSystemConfiguration.AccountKey, AccountKey)
                 .Build();
 
-            _fileSystem = 
TangFactory.GetTang().NewInjector(conf).GetInstance<AzureBlockBlobFileSystem>();
+            _fileSystem = 
TangFactory.GetTang().NewInjector(conf).GetInstance<AzureBlobFileSystem>();
             _client = 
CloudStorageAccount.Parse(ConnectionString).CreateCloudBlobClient();
             _container = _client.GetContainerReference(defaultContainerName);
             _container.CreateIfNotExists();
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystem.cs 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystem.cs
similarity index 98%
rename from 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystem.cs
rename to lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystem.cs
index d1004c3..7ff2edc 100644
--- 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystem.cs
+++ b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystem.cs
@@ -31,14 +31,14 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
     /// This particular File System implementation only supports 
     /// block blob operations
     /// </summary>
-    internal sealed class AzureBlockBlobFileSystem : IFileSystem
+    internal sealed class AzureBlobFileSystem : IFileSystem
     {
         private readonly ICloudBlobClient _client;
 
         private const char UrlPathSeparator = '/';
 
         [Inject]
-        private AzureBlockBlobFileSystem(ICloudBlobClient client)
+        private AzureBlobFileSystem(ICloudBlobClient client)
         {
             _client = client;
         }
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfiguration.cs
 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfiguration.cs
similarity index 75%
rename from 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfiguration.cs
rename to 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfiguration.cs
index 0b25862..98c2477 100644
--- 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfiguration.cs
+++ 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfiguration.cs
@@ -30,9 +30,10 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
     /// <remarks>
     /// Stream-based operations are not supported.
     /// </remarks>
-    public sealed class AzureBlockBlobFileSystemConfiguration : 
ConfigurationModuleBuilder
+    public sealed class AzureBlobFileSystemConfiguration : 
ConfigurationModuleBuilder
     {
-        public static readonly RequiredParameter<string> ConnectionString = 
new RequiredParameter<string>();
+        public static readonly RequiredParameter<string> AccountName = new 
RequiredParameter<string>();
+        public static readonly RequiredParameter<string> AccountKey = new 
RequiredParameter<string>();
 
         public static readonly OptionalImpl<IAzureBlobRetryPolicy> RetryPolicy 
= new OptionalImpl<IAzureBlobRetryPolicy>(); 
 
@@ -40,11 +41,12 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
         /// Set AzureBlockBlobFileSystemProvider to 
DriverConfigurationProviders.
         /// Set all the parameters needed for injecting 
AzureBlockBlobFileSystemProvider.
         /// </summary>
-        public static readonly ConfigurationModule ConfigurationModule = new 
AzureBlockBlobFileSystemConfiguration()
-            .BindSetEntry<DriverConfigurationProviders, 
AzureBlockBlobFileSystemConfigurationProvider, IConfigurationProvider>(
-                GenericType<DriverConfigurationProviders>.Class, 
GenericType<AzureBlockBlobFileSystemConfigurationProvider>.Class)
-            .BindImplementation(GenericType<IFileSystem>.Class, 
GenericType<AzureBlockBlobFileSystem>.Class)
-            
.BindNamedParameter(GenericType<AzureStorageConnectionString>.Class, 
ConnectionString)
+        public static readonly ConfigurationModule ConfigurationModule = new 
AzureBlobFileSystemConfiguration()
+            .BindSetEntry<DriverConfigurationProviders, 
AzureBlobFileSystemConfigurationProvider, IConfigurationProvider>(
+                GenericType<DriverConfigurationProviders>.Class, 
GenericType<AzureBlobFileSystemConfigurationProvider>.Class)
+            .BindImplementation(GenericType<IFileSystem>.Class, 
GenericType<AzureBlobFileSystem>.Class)
+            
.BindNamedParameter(GenericType<AzureBlobStorageAccountName>.Class, AccountName)
+            .BindNamedParameter(GenericType<AzureBlobStorageAccountKey>.Class, 
AccountKey)
             .BindImplementation(GenericType<IAzureBlobRetryPolicy>.Class, 
RetryPolicy)
             .Build();
     }
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfigurationProvider.cs
 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfigurationProvider.cs
similarity index 78%
rename from 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfigurationProvider.cs
rename to 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfigurationProvider.cs
index de490c0..a635c6f 100644
--- 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlockBlobFileSystemConfigurationProvider.cs
+++ 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureBlobFileSystemConfigurationProvider.cs
@@ -30,20 +30,22 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
     /// The client that is going to use AzureBlockBlobFileSystem in its driver 
and evaluators should set 
     /// configuration data through AzureBlockBlobFileSystem configuration 
module in the client's configuration
     /// </summary>
-    internal sealed class AzureBlockBlobFileSystemConfigurationProvider : 
IConfigurationProvider
+    internal sealed class AzureBlobFileSystemConfigurationProvider : 
IConfigurationProvider
     {
         private readonly IConfiguration _configuration;
 
         [Inject]
-        private AzureBlockBlobFileSystemConfigurationProvider(
-            [Parameter(typeof(AzureStorageConnectionString))] string 
connectionString,
+        private AzureBlobFileSystemConfigurationProvider(
+            [Parameter(typeof(AzureBlobStorageAccountName))] string 
accountName,
+            [Parameter(typeof(AzureBlobStorageAccountKey))] string accountKey,
             IAzureBlobRetryPolicy retryPolicy)
         {
             _configuration = TangFactory.GetTang().NewConfigurationBuilder()
-                .BindImplementation(GenericType<IFileSystem>.Class, 
GenericType<AzureBlockBlobFileSystem>.Class)
+                .BindImplementation(GenericType<IFileSystem>.Class, 
GenericType<AzureBlobFileSystem>.Class)
                 .BindImplementation(typeof(IAzureBlobRetryPolicy), 
retryPolicy.GetType())
-                
.BindStringNamedParam<AzureStorageConnectionString>(connectionString)
-                .BindSetEntry<EvaluatorConfigurationProviders, 
AzureBlockBlobFileSystemConfigurationProvider, IConfigurationProvider>()
+                .BindStringNamedParam<AzureBlobStorageAccountName>(accountName)
+                .BindStringNamedParam<AzureBlobStorageAccountKey>(accountKey)
+                .BindSetEntry<EvaluatorConfigurationProviders, 
AzureBlobFileSystemConfigurationProvider, IConfigurationProvider>()
                 .Build();
         }
 
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureCloudBlobClient.cs 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureCloudBlobClient.cs
index eec4806..7b0a56a 100644
--- a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureCloudBlobClient.cs
+++ b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/AzureCloudBlobClient.cs
@@ -32,6 +32,7 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
     internal sealed class AzureCloudBlobClient : ICloudBlobClient
     {
         private readonly CloudBlobClient _client;
+        private const string AzureBlobConnectionFormat = 
"DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};";
         private readonly BlobRequestOptions _requestOptions;
 
         public StorageCredentials Credentials 
@@ -40,9 +41,11 @@ namespace Org.Apache.REEF.IO.FileSystem.AzureBlob
         }
 
         [Inject]
-        private 
AzureCloudBlobClient([Parameter(typeof(AzureStorageConnectionString))] string 
connectionString,
+        private 
AzureCloudBlobClient([Parameter(typeof(AzureBlobStorageAccountName))] string 
accountName,
+                                     
[Parameter(typeof(AzureBlobStorageAccountKey))] string accountKey,
                                      IAzureBlobRetryPolicy retryPolicy)
         {
+            var connectionString = string.Format(AzureBlobConnectionFormat, 
accountName, accountKey);
             _client = 
CloudStorageAccount.Parse(connectionString).CreateCloudBlobClient();
             _client.DefaultRequestOptions.RetryPolicy = retryPolicy;
             _requestOptions = new BlobRequestOptions() { RetryPolicy = 
retryPolicy };
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountKey.cs
similarity index 84%
copy from 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
copy to 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountKey.cs
index c7e0540..f59cf42 100644
--- 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
+++ 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountKey.cs
@@ -19,10 +19,10 @@ using Org.Apache.REEF.Tang.Annotations;
 
 namespace Org.Apache.REEF.IO.FileSystem.AzureBlob.Parameters
 {
-    [NamedParameter("The connection string for Azure Storage")]
-    public sealed class AzureStorageConnectionString : Name<string>
+    [NamedParameter("The Azure Blob Storage account key")]
+    public sealed class AzureBlobStorageAccountKey : Name<string>
     {
-        private AzureStorageConnectionString()
+        private AzureBlobStorageAccountKey()
         {
         }
     }
diff --git 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountName.cs
similarity index 84%
rename from 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
rename to 
lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountName.cs
index c7e0540..0556869 100644
--- 
a/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureStorageConnectionString.cs
+++ 
b/lang/cs/Org.Apache.REEF.IO/FileSystem/AzureBlob/Parameters/AzureBlobStorageAccountName.cs
@@ -19,10 +19,10 @@ using Org.Apache.REEF.Tang.Annotations;
 
 namespace Org.Apache.REEF.IO.FileSystem.AzureBlob.Parameters
 {
-    [NamedParameter("The connection string for Azure Storage")]
-    public sealed class AzureStorageConnectionString : Name<string>
+    [NamedParameter("The Azure Blob Storage account name")]
+    public sealed class AzureBlobStorageAccountName : Name<string>
     {
-        private AzureStorageConnectionString()
+        private AzureBlobStorageAccountName()
         {
         }
     }

Reply via email to