Skip to content

Commit 9b7411a

Browse files
authored
Merge pull request #4851 from maboja-msft/preview
Powershell implementation for Sql Server Dns Aliasing
2 parents 4e7d473 + 68eb0ab commit 9b7411a

28 files changed

+67208
-4
lines changed

src/ResourceManager/Sql/AzureRM.Sql.psd1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,11 @@ CmdletsToExport = 'Get-AzureRmSqlDatabaseTransparentDataEncryption',
182182
'Set-AzureRmSqlServerVirtualNetworkRule',
183183
'Get-AzureRmSqlServerVirtualNetworkRule',
184184
'Remove-AzureRmSqlServerVirtualNetworkRule',
185-
'Stop-AzureRmSqlDatabaseActivity'
185+
'Stop-AzureRmSqlDatabaseActivity',
186+
'Get-AzureRmSqlServerDnsAlias',
187+
'Remove-AzureRmSqlServerDnsAlias',
188+
'New-AzureRmSqlServerDnsAlias',
189+
'Set-AzureRmSqlServerDnsAlias'
186190

187191
# Variables to export from this module
188192
# VariablesToExport = @()

src/ResourceManager/Sql/ChangeLog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
* Adding support for list and cancel the asynchronous updateslo operation on the database
2222
- update existing cmdlet Get-AzureRmSqlDatabaseActivity to return DB updateslo operation status.
2323
- add new cmdlet Stop-AzureRmSqlDatabaseActivity for cancel the asynchronous updateslo operation on the database.
24+
* Adding support for Server DNS Aliases
25+
- Adding Get-AzureRmSqlServerDnsAlias cmdlet which gets server dns aliases by server and alias name or a list of server dns aliases for an azure Sql Server.
26+
- Adding New-AzureRmSqlServerDnsAlias cmdlet which creates new server dns alias for a given Azure Sql server
27+
- Adding Set-AzurermSqlServerDnsAlias cmlet which allows updating a Azure Sql Server to which server dns alias is pointing
28+
- Adding Remove-AzureRmSqlServerDnsAlias cmdlet which removes a server dns alias for a Azure Sql Server
2429

2530
## Version 3.4.1
2631

src/ResourceManager/Sql/Commands.Sql.Test/Commands.Sql.Test.csproj

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
<Private>True</Private>
7979
</Reference>
8080
<Reference Include="Microsoft.Azure.Management.Network">
81-
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Network.15.0.0-preview\lib\net452\Microsoft.Azure.Management.Network.dll</HintPath>
81+
<HintPath>..\..\..\packages\Microsoft.Azure.Management.Network.15.1.0-preview\lib\net452\Microsoft.Azure.Management.Network.dll</HintPath>
8282
</Reference>
8383
<Reference Include="Microsoft.Azure.Management.Sql, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
8484
<SpecificVersion>False</SpecificVersion>
@@ -224,6 +224,7 @@
224224
<Compile Include="ScenarioTests\RecommendedActionTests.cs" />
225225
<Compile Include="ScenarioTests\DatabaseBackupStretchTests.cs" />
226226
<Compile Include="ScenarioTests\DatabaseCrudStretchTests.cs" />
227+
<Compile Include="ScenarioTests\ServerDnsAliasTests.cs" />
227228
<Compile Include="ScenarioTests\ServerUpgradeTests.cs" />
228229
<Compile Include="ScenarioTests\ThreatDetectionClassicStorageTests.cs" />
229230
<Compile Include="ScenarioTests\ThreatDetectionTests.cs" />
@@ -262,6 +263,9 @@
262263
<None Include="ScenarioTests\DatabaseCrudStretchTests.ps1">
263264
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
264265
</None>
266+
<None Include="ScenarioTests\ServerDnsAliasTests.ps1" >
267+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
268+
</None>
265269
<None Include="ScenarioTests\ServerUpgradeTests.ps1">
266270
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
267271
</None>
@@ -963,6 +967,18 @@
963967
</None>
964968
<None Include=".\SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.VirtualNetworkRuleTest\TestVirtualNetworkRuleRemove.json">
965969
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
970+
</None>
971+
<None Include=".\SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ServerDnsAliasTests\TestCreateServerDnsAlias.json">
972+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
973+
</None>
974+
<None Include=".\SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ServerDnsAliasTests\TestServerDnsAliasGet.json">
975+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
976+
</None>
977+
<None Include=".\SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ServerDnsAliasTests\TestServerDnsAliasUpdate.json">
978+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
979+
</None>
980+
<None Include=".\SessionRecords\Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ServerDnsAliasTests\TestServerDnsAliasRemove.json">
981+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
966982
</None>
967983
</ItemGroup>
968984
<ItemGroup>

src/ResourceManager/Sql/Commands.Sql.Test/ScenarioTests/Common.ps1

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,15 @@ function Get-VirtualNetworkRuleName
346346
return getAssetName
347347
}
348348

349+
<#
350+
.SYNOPSIS
351+
Gets valid server dns alias name
352+
#>
353+
function Get-ServerDnsAliasName
354+
{
355+
return getAssetName
356+
}
357+
349358
<#
350359
.SYNOPSIS
351360
Gets test mode - 'Record' or 'Playback'
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using Microsoft.Azure.Commands.ScenarioTest.SqlTests;
16+
using Microsoft.WindowsAzure.Commands.ScenarioTest;
17+
using Xunit;
18+
using Xunit.Abstractions;
19+
20+
namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests
21+
{
22+
public class ServerDnsAliasTests : SqlTestsBase
23+
{
24+
public ServerDnsAliasTests(ITestOutputHelper output) : base(output)
25+
{
26+
}
27+
28+
[Fact]
29+
[Trait(Category.AcceptanceType, Category.CheckIn)]
30+
public void TestCreateServerDnsAlias()
31+
{
32+
RunPowerShellTest("Test-CreateServerDnsAlias");
33+
}
34+
35+
[Fact]
36+
[Trait(Category.AcceptanceType, Category.CheckIn)]
37+
public void TestServerDnsAliasUpdate()
38+
{
39+
RunPowerShellTest("Test-UpdateServerDnsAlias");
40+
}
41+
42+
[Fact]
43+
[Trait(Category.AcceptanceType, Category.CheckIn)]
44+
public void TestServerDnsAliasGet()
45+
{
46+
RunPowerShellTest("Test-GetServerDnsAlias");
47+
}
48+
49+
[Fact]
50+
[Trait(Category.AcceptanceType, Category.CheckIn)]
51+
public void TestServerDnsAliasRemove()
52+
{
53+
RunPowerShellTest("Test-RemoveServerDnsAlias");
54+
}
55+
}
56+
}
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# ----------------------------------------------------------------------------------
2+
#
3+
# Copyright Microsoft Corporation
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
# ----------------------------------------------------------------------------------
14+
15+
<#
16+
.SYNOPSIS
17+
Tests creating a server dns alias
18+
#>
19+
20+
function Test-CreateServerDNSAlias
21+
{
22+
# Setup
23+
$location = "East US 2 EUAP"
24+
$rg = Create-ResourceGroupForTest $location
25+
$server = Create-ServerForTest $rg $location
26+
27+
$serverDnsAliasName = Get-ServerDnsAliasName
28+
29+
try
30+
{
31+
$serverDnsAlias = New-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName
32+
Assert-AreEqual $serverDnsAlias.ServerName $server.ServerName
33+
Assert-AreEqual $serverDnsAlias.DnsAliasName $serverDnsAliasName
34+
}
35+
finally
36+
{
37+
Remove-ResourceGroupForTest $rg
38+
}
39+
}
40+
41+
<#
42+
.SYNOPSIS
43+
Tests getting server dns alias
44+
#>
45+
46+
function Test-GetServerDNSAlias
47+
{
48+
# Setup
49+
$location = "East US 2 EUAP"
50+
$rg = Create-ResourceGroupForTest $location
51+
$server = Create-ServerForTest $rg $location
52+
53+
$serverDnsAliasName = Get-ServerDnsAliasName
54+
$serverDnsAliasName2 = Get-ServerDnsAliasName
55+
56+
try
57+
{
58+
# Create server dns alias 1
59+
$serverDnsAlias = New-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName
60+
Assert-AreEqual $serverDnsAlias.ServerName $server.ServerName
61+
Assert-AreEqual $serverDnsAlias.DnsAliasName $serverDnsAliasName
62+
63+
# Create server dns alias 2
64+
$serverDnsAlias = New-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName2
65+
Assert-AreEqual $serverDnsAlias.ServerName $server.ServerName
66+
Assert-AreEqual $serverDnsAlias.DnsAliasName $serverDnsAliasName2
67+
68+
# Get server dns alias
69+
$resp = Get-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName
70+
Assert-AreEqual $resp.ServerName $server.ServerName
71+
Assert-AreEqual $resp.DnsAliasName $serverDnsAliasName
72+
73+
# Get list of server dns aliases for server
74+
$resp = Get-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName
75+
Assert-AreEqual $resp.Count 2
76+
}
77+
finally
78+
{
79+
Remove-ResourceGroupForTest $rg
80+
}
81+
}
82+
83+
<#
84+
.SYNOPSIS
85+
Tests removing server dns alias
86+
#>
87+
88+
function Test-RemoveServerDNSAlias
89+
{
90+
# Setup
91+
$location = "East US 2 EUAP"
92+
$rg = Create-ResourceGroupForTest $location
93+
$server = Create-ServerForTest $rg $location
94+
95+
$serverDnsAliasName = Get-ServerDnsAliasName
96+
97+
try
98+
{
99+
# Create Server DNS Alias
100+
$serverDnsAlias = New-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName
101+
Assert-AreEqual $serverDnsAlias.ServerName $server.ServerName
102+
Assert-AreEqual $serverDnsAlias.DnsAliasName $serverDnsAliasName
103+
104+
# Remove Server DNS Alias
105+
$resp = Remove-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName -Force
106+
$all = Get-AzureRmSqlServerDNSAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName
107+
Assert-AreEqual $all.Count 0
108+
}
109+
finally
110+
{
111+
Remove-ResourceGroupForTest $rg
112+
}
113+
}
114+
115+
<#
116+
.SYNOPSIS
117+
Tests updating server dns alias
118+
#>
119+
120+
function Test-UpdateServerDNSAlias
121+
{
122+
# Setup
123+
$location = "East US 2 EUAP"
124+
$rg = Create-ResourceGroupForTest $location
125+
$server = Create-ServerForTest $rg $location
126+
$server2 = Create-ServerForTest $rg $location
127+
128+
$serverDnsAliasName = Get-ServerDnsAliasName
129+
130+
try
131+
{
132+
# Create Server DNS Alias
133+
$serverDnsAlias = New-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server.ServerName -DnsAliasName $serverDnsAliasName
134+
Assert-AreEqual $serverDnsAlias.ServerName $server.ServerName
135+
Assert-AreEqual $serverDnsAlias.DnsAliasName $serverDnsAliasName
136+
137+
# Get current subscription id
138+
$subId = (Get-AzureRmContext).Subscription.Id
139+
140+
# Update Server DNS Alias
141+
Set-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -SourceServerName $server.ServerName -DnsAliasName $serverDnsAliasName -TargetServerName $server2.ServerName -SourceServerResourceGroupName $rg.ResourceGroupName -SourceServerSubscriptionId $subId
142+
143+
$resp = Get-AzureRmSqlServerDnsAlias -ResourceGroupName $rg.ResourceGroupName -ServerName $server2.ServerName -DnsAliasName $serverDnsAliasName
144+
Assert-AreEqual $resp.ServerName $server2.ServerName
145+
Assert-AreEqual $resp.DnsAliasName $serverDnsAliasName
146+
}
147+
finally
148+
{
149+
Remove-ResourceGroupForTest $rg
150+
}
151+
}

0 commit comments

Comments
 (0)