Skip to content

Commit abd364e

Browse files
author
Hovsep
committed
Merge pull request #1389 from yitao-zhang/hdfsencrypt
Support Hdfs on-premises encryption in ADF
2 parents 1583c86 + 0d11011 commit abd364e

File tree

7 files changed

+43
-5
lines changed

7 files changed

+43
-5
lines changed

src/ResourceManager/DataFactories/Commands.DataFactories.Test/Commands.DataFactories.Test.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@
9595
<SpecificVersion>False</SpecificVersion>
9696
<HintPath>..\..\..\packages\Microsoft.Data.Services.Client.5.6.4\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
9797
</Reference>
98+
<Reference Include="Microsoft.DataTransfer.Gateway.Encryption, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
99+
<SpecificVersion>False</SpecificVersion>
100+
<HintPath>..\..\..\packages\Microsoft.DataTransfer.Gateway.Encryption.1.7.5798-preview-001\lib\net45\Microsoft.DataTransfer.Gateway.Encryption.dll</HintPath>
101+
</Reference>
98102
<Reference Include="Microsoft.IdentityModel.Clients.ActiveDirectory">
99103
<HintPath>..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.18.206251556\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll</HintPath>
100104
</Reference>

src/ResourceManager/DataFactories/Commands.DataFactories.Test/UnitTests/NewDataFactoryEncryptValueTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
using Microsoft.Azure.Commands.DataFactories;
1616
using Microsoft.Azure.Commands.DataFactories.Test;
17+
using Microsoft.DataTransfer.Gateway.Encryption;
1718
using Microsoft.WindowsAzure.Commands.ScenarioTest;
1819
using Moq;
1920
using System;
@@ -109,5 +110,24 @@ public void TestOnPremDatasourceEncryptionWinAuth()
109110
this.dataFactoriesClientMock.Verify(f => f.OnPremisesEncryptString(secureString, ResourceGroupName, DataFactoryName, GatewayName, credential, linkedServiceType, nonCredentialValue, authenticationType, serverName, databaseName), Times.Once());
110111
this.commandRuntimeMock.Verify(f => f.WriteObject(expectedOutput), Times.Once());
111112
}
113+
114+
[Fact]
115+
[Trait(Category.AcceptanceType, Category.CheckIn)]
116+
public void TestOnPremDatasourceEncryption_LinkedServiceTypeParsing()
117+
{
118+
// Built-in linked service types
119+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesSqlLinkedService") == LinkedServiceType.OnPremisesSqlLinkedService);
120+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesFileSystemLinkedService") == LinkedServiceType.OnPremisesFileSystemLinkedService);
121+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesOracleLinkedService") == LinkedServiceType.OnPremisesOracleLinkedService);
122+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesOdbcLinkedService") == LinkedServiceType.OnPremisesOdbcLinkedService);
123+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesPostgreSqlLinkedService") == LinkedServiceType.OnPremisesPostgreSqlLinkedService);
124+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesTeradataLinkedService") == LinkedServiceType.OnPremisesTeradataLinkedService);
125+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesMySQLLinkedService") == LinkedServiceType.OnPremisesMySQLLinkedService);
126+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesDB2LinkedService") == LinkedServiceType.OnPremisesDB2LinkedService);
127+
Assert.True(DataFactoryClient.GetLinkedServiceType("OnPremisesSybaseLinkedService") == LinkedServiceType.OnPremisesSybaseLinkedService);
128+
129+
// Generic linked service types should be converted to Unknown type
130+
Assert.True(DataFactoryClient.GetLinkedServiceType("HdfsLinkedService") == LinkedServiceType.Unknown);
131+
}
112132
}
113133
}

src/ResourceManager/DataFactories/Commands.DataFactories.Test/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net45" />
1818
<package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net45" />
1919
<package id="Microsoft.Data.Services.Client" version="5.6.4" targetFramework="net45" />
20+
<package id="Microsoft.DataTransfer.Gateway.Encryption" version="1.7.5798-preview-001" targetFramework="net45" />
2021
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.18.206251556" targetFramework="net45" />
2122
<package id="Microsoft.Net.Http" version="2.2.28" targetFramework="net45" />
2223
<package id="Microsoft.Rest.ClientRuntime" version="1.4.1" targetFramework="net45" />

src/ResourceManager/DataFactories/Commands.DataFactories/Commands.DataFactories.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@
8585
<SpecificVersion>False</SpecificVersion>
8686
<HintPath>..\..\..\packages\Microsoft.Data.Services.Client.5.6.4\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
8787
</Reference>
88-
<Reference Include="Microsoft.DataTransfer.Gateway.Encryption, Version=1.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
88+
<Reference Include="Microsoft.DataTransfer.Gateway.Encryption, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
8989
<SpecificVersion>False</SpecificVersion>
90-
<HintPath>..\..\..\packages\Microsoft.DataTransfer.Gateway.Encryption.1.5.1-preview\lib\net45\Microsoft.DataTransfer.Gateway.Encryption.dll</HintPath>
90+
<HintPath>..\..\..\packages\Microsoft.DataTransfer.Gateway.Encryption.1.7.5798-preview-001\lib\net45\Microsoft.DataTransfer.Gateway.Encryption.dll</HintPath>
9191
</Reference>
9292
<Reference Include="Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.18.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
9393
<HintPath>..\..\..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.18.206251556\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll</HintPath>

src/ResourceManager/DataFactories/Commands.DataFactories/Encrypt/NewAzureDataFactoryEncryptValueCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public class NewAzureDataFactoryEncryptValueCommand : DataFactoryBaseCmdlet
5252
HelpMessage = "The linked service type.")]
5353
[ValidateSet("OnPremisesSqlLinkedService", "OnPremisesFileSystemLinkedService", "OnPremisesOracleLinkedService",
5454
"OnPremisesOdbcLinkedService", "OnPremisesPostgreSqlLinkedService", "OnPremisesTeradataLinkedService",
55-
"OnPremisesMySQLLinkedService", "OnPremisesDB2LinkedService", "OnPremisesSybaseLinkedService",
55+
"OnPremisesMySQLLinkedService", "OnPremisesDB2LinkedService", "OnPremisesSybaseLinkedService",
56+
"HdfsLinkedService",
5657
IgnoreCase = true)]
5758
public string Type { get; set; }
5859

src/ResourceManager/DataFactories/Commands.DataFactories/Models/DataFactoryClient.Encrypt.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public virtual string OnPremisesEncryptString(SecureString value,
3232
string authenticationType,
3333
string serverName, string databaseName)
3434
{
35-
LinkedServiceType linkedServiceType = type == null ? LinkedServiceType.OnPremisesSqlLinkedService : (LinkedServiceType)Enum.Parse(typeof(LinkedServiceType), type, true);
35+
LinkedServiceType linkedServiceType = type == null ? LinkedServiceType.OnPremisesSqlLinkedService : GetLinkedServiceType(type);
3636

3737
if (linkedServiceType == LinkedServiceType.OnPremisesSqlLinkedService && linkedServiceType == LinkedServiceType.OnPremisesOracleLinkedService
3838
&& linkedServiceType == LinkedServiceType.OnPremisesFileSystemLinkedService && (value == null || value.Length == 0))
@@ -59,5 +59,17 @@ public virtual string OnPremisesEncryptString(SecureString value,
5959
UserInputConnectionString connectionString = new UserInputConnectionString(value, nonCredentialValue, userName, password, linkedServiceType, authType, serverName, databaseName);
6060
return GatewayEncryptionClient.Encrypt(connectionString, gatewayEncryptionInfos);
6161
}
62+
63+
internal static LinkedServiceType GetLinkedServiceType(string typeName)
64+
{
65+
LinkedServiceType result;
66+
if (!Enum.TryParse<LinkedServiceType>(typeName, true, out result))
67+
{
68+
// Treat any non-existing type as a generic data source type for encryption
69+
return LinkedServiceType.Unknown;
70+
}
71+
72+
return result;
73+
}
6274
}
6375
}

src/ResourceManager/DataFactories/Commands.DataFactories/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<package id="Microsoft.Data.Edm" version="5.6.4" targetFramework="net45" />
1414
<package id="Microsoft.Data.OData" version="5.6.4" targetFramework="net45" />
1515
<package id="Microsoft.Data.Services.Client" version="5.6.4" targetFramework="net45" />
16-
<package id="Microsoft.DataTransfer.Gateway.Encryption" version="1.5.1-preview" targetFramework="net45" />
16+
<package id="Microsoft.DataTransfer.Gateway.Encryption" version="1.7.5798-preview-001" targetFramework="net45" />
1717
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.18.206251556" targetFramework="net45" />
1818
<package id="Microsoft.Net.Http" version="2.2.28" targetFramework="net45" />
1919
<package id="Microsoft.Rest.ClientRuntime" version="1.4.1" targetFramework="net45" />

0 commit comments

Comments
 (0)