Skip to content

Commit 9dea982

Browse files
authored
Merge pull request Azure#9088 from ziwa-msft/dev
Adding DnsZone Partner to New-SqlInstance cmdlet
2 parents f6f53c9 + fff624b commit 9dea982

File tree

9 files changed

+1020
-6006
lines changed

9 files changed

+1020
-6006
lines changed

src/Sql/Sql.Test/ScenarioTests/ManagedInstanceCrudScenarioTests.ps1

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ function Test-CreateManagedInstance
2222
{
2323
# Setup
2424
$rg = Create-ResourceGroupForTest
25-
$vnetName = "cl_initial"
26-
$subnetName = "CooL"
25+
$vnetName = "vnet-newprovisioningtest3"
26+
$subnetName = "ManagedInstance"
2727

2828
$managedInstanceName = Get-ManagedInstanceName
2929
$version = "12.0"
@@ -35,11 +35,10 @@ function Test-CreateManagedInstance
3535
$collation = "Serbian_Cyrillic_100_CS_AS"
3636
$timezoneId = "Central Europe Standard Time"
3737
$proxyOverride = "Proxy"
38-
3938
try
4039
{
4140
# Setup VNET
42-
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
41+
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location "newprovisioningtest"
4342
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName }).Id
4443

4544
# With SKU name specified
@@ -64,15 +63,18 @@ function Test-CreateManagedInstance
6463
Assert-AreEqual $managedInstance1.PublicDataEndpointEnabled $true
6564
Assert-AreEqual $managedInstance1.ProxyOverride $proxyOverride
6665
Assert-StartsWith ($managedInstance1.ManagedInstanceName + ".") $managedInstance1.FullyQualifiedDomainName
66+
Assert-NotNull $managedInstance1.DnsZone
6767

6868
$edition = "GeneralPurpose"
6969
$computeGeneration = "Gen4"
7070
$managedInstanceName = Get-ManagedInstanceName
71+
$dnsZonePartner = $managedInstance1.ResourceId
72+
$originalDnsZone = $managedInstance1.DnsZone
7173

7274
# With edition and computeGeneration specified
7375
$job = New-AzSqlInstance -ResourceGroupName $rg.ResourceGroupName -Name $managedInstanceName `
7476
-Location $rg.Location -AdministratorCredential $credentials -SubnetId $subnetId `
75-
-LicenseType $licenseType -StorageSizeInGB $storageSizeInGB -Vcore $vCore -Edition $edition -ComputeGeneration $computeGeneration -AsJob
77+
-LicenseType $licenseType -StorageSizeInGB $storageSizeInGB -Vcore $vCore -Edition $edition -ComputeGeneration $computeGeneration -DnsZonePartner $dnsZonePartner -AsJob
7678
$job | Wait-Job
7779
$managedInstance1 = $job.Output
7880

@@ -86,6 +88,7 @@ function Test-CreateManagedInstance
8688
Assert-AreEqual $managedInstance1.VCores $vCore
8789
Assert-AreEqual $managedInstance1.StorageSizeInGB $storageSizeInGB
8890
Assert-StartsWith ($managedInstance1.ManagedInstanceName + ".") $managedInstance1.FullyQualifiedDomainName
91+
Assert-AreEqual $managedInstance1.DnsZone $originalDnsZone
8992
}
9093
finally
9194
{
@@ -103,11 +106,11 @@ function Test-SetManagedInstance
103106
{
104107
# Setup
105108
$rg = Create-ResourceGroupForTest
106-
$vnetName = "cl_initial"
107-
$subnetName = "CooL"
109+
$vnetName = "vnet-newprovisioningtest3"
110+
$subnetName = "ManagedInstance"
108111

109112
# Setup VNET
110-
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
113+
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location "newprovisioningtest"
111114
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName }).Id
112115

113116
$managedInstance = Create-ManagedInstanceForTest $rg $subnetId

src/Sql/Sql.Test/SessionRecords/Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ManagedInstanceCrudScenarioTests/TestCreateManagedInstance.json

Lines changed: 256 additions & 604 deletions
Large diffs are not rendered by default.

src/Sql/Sql.Test/SessionRecords/Microsoft.Azure.Commands.Sql.Test.ScenarioTests.ManagedInstanceCrudScenarioTests/TestSetManagedInstance.json

Lines changed: 708 additions & 5391 deletions
Large diffs are not rendered by default.

src/Sql/Sql/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Add DnsZonePartner Parameter for New-AzureSqlInstance cmdlet to support AutoDr for Managed Instance.
2122
* Rename Advanced Threat Protection cmdlets to Advanced Data Security and enable Vulnerability Assessment by default
2223
* Deprecating Get-AzSqlDatabaseSecureConnectionPolicy cmdlet
2324

src/Sql/Sql/ManagedInstance/Cmdlet/NewAzureSqlManagedInstance.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,14 @@ public class NewAzureSqlManagedInstance : ManagedInstanceCmdletBase
213213
HelpMessage = "Generate and assign an Azure Active Directory Identity for this instance for use with key management services like Azure KeyVault.")]
214214
public SwitchParameter AssignIdentity { get; set; }
215215

216+
/// <summary>
217+
/// Gets or sets the managed instance compute generation
218+
/// </summary>
219+
[Parameter(Mandatory = false,
220+
HelpMessage = "The Dns Zone Partner Resource ID for the Sql Azure Managed Instance.")]
221+
[ResourceIdCompleter("Microsoft.Sql/managedInstances")]
222+
public string DnsZonePartner { get; set; }
223+
216224
/// <summary>
217225
/// Gets or sets whether or not to run this cmdlet in the background as a job
218226
/// </summary>
@@ -293,6 +301,7 @@ public override void ExecuteCmdlet()
293301
PublicDataEndpointEnabled = this.PublicDataEndpointEnabled,
294302
ProxyOverride = this.ProxyOverride,
295303
TimezoneId = this.TimezoneId,
304+
DnsZonePartner = this.DnsZonePartner
296305
});
297306
return newEntity;
298307
}

src/Sql/Sql/ManagedInstance/Model/AzureSqlManagedInstanceModel.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,15 @@ public class AzureSqlManagedInstanceModel
114114
/// </summary>
115115
public string TimezoneId { get; set; }
116116

117+
118+
/// <summary>
119+
/// Gets or sets the resource id of the dns zone partner of the managed instance
120+
/// </summary>
121+
public string DnsZonePartner { get; set; }
122+
123+
/// <summary>
124+
/// Gets or sets the dns zone of the managed instance
125+
/// </summary>
126+
public string DnsZone { get; set; }
117127
}
118128
}

src/Sql/Sql/ManagedInstance/Services/AzureSqlManagedInstanceAdapter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public AzureSqlManagedInstanceModel UpsertManagedInstance(AzureSqlManagedInstanc
112112
PublicDataEndpointEnabled = model.PublicDataEndpointEnabled,
113113
ProxyOverride = model.ProxyOverride,
114114
TimezoneId = model.TimezoneId,
115+
DnsZonePartner = model.DnsZonePartner,
115116
});
116117

117118
return CreateManagedInstanceModelFromResponse(resp);
@@ -183,6 +184,7 @@ private static AzureSqlManagedInstanceModel CreateManagedInstanceModelFromRespon
183184
managedInstance.PublicDataEndpointEnabled = resp.PublicDataEndpointEnabled;
184185
managedInstance.ProxyOverride = resp.ProxyOverride;
185186
managedInstance.TimezoneId = resp.TimezoneId;
187+
managedInstance.DnsZone = resp.DnsZone;
186188

187189
Management.Internal.Resources.Models.Sku sku = new Management.Internal.Resources.Models.Sku();
188190
sku.Name = resp.Sku.Name;

src/Sql/Sql/help/Get-AzSqlInstance.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ SubnetId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/r
5555
LicenseType : BasePrice
5656
VCores : 8
5757
StorageSizeInGB : 512
58+
DnsZone : ad35cna0mw
5859
```
5960

6061
This command gets information about all instances assigned to the resource group ResourceGroup01.
@@ -76,6 +77,7 @@ SubnetId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/r
7677
LicenseType : BasePrice
7778
VCores : 8
7879
StorageSizeInGB : 512
80+
DnsZone : ad35cna0mw
7981
```
8082

8183
This command gets information about the instance named managedInstance1.
@@ -97,6 +99,7 @@ SubnetId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/r
9799
LicenseType : BasePrice
98100
VCores : 8
99101
StorageSizeInGB : 512
102+
DnsZone : ad35cna0mw
100103
101104
Location : westcentralus
102105
Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroup01/providers/Microsoft.Sql/managedInstances/managedInstance2
@@ -112,6 +115,7 @@ SubnetId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/r
112115
LicenseType : BasePrice
113116
VCores : 8
114117
StorageSizeInGB : 512
118+
DnsZone : ad35cna0mw
115119
```
116120

117121
This command gets information about all instances assigned to the resource group ResourceGroup01 that start with "managedInstance".

src/Sql/Sql/help/New-AzSqlInstance.md

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Creates an Azure SQL Database Managed Instance.
1717
New-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> -AdministratorCredential <PSCredential>
1818
-Location <String> -SubnetId <String> -LicenseType <String> -StorageSizeInGB <Int32> -VCore <Int32>
1919
-Edition <String> -ComputeGeneration <String> [-Collation <String>] [-PublicDataEndpointEnabled]
20-
[-ProxyOverride <String>] [-TimezoneId <String>] [-Tag <Hashtable>] [-AssignIdentity] [-AsJob]
20+
[-ProxyOverride <String>] [-TimezoneId <String>] [-DnsZonePartner <String>] [-Tag <Hashtable>] [-AssignIdentity] [-AsJob]
2121
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
2222
```
2323

@@ -26,7 +26,7 @@ New-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> -AdministratorC
2626
New-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> -AdministratorCredential <PSCredential>
2727
-Location <String> -SubnetId <String> -LicenseType <String> -StorageSizeInGB <Int32> -VCore <Int32>
2828
-SkuName <String> [-Collation <String>] [-PublicDataEndpointEnabled] [-ProxyOverride <String>]
29-
[-TimezoneId <String>] [-Tag <Hashtable>] [-AssignIdentity] [-AsJob]
29+
[-TimezoneId <String>] [-DnsZonePartner <String>] [-Tag <Hashtable>] [-AssignIdentity] [-AsJob]
3030
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
3131
```
3232

@@ -37,7 +37,7 @@ The **New-AzSqlInstance** cmdlet creates an Azure SQL Database Managed instance.
3737

3838
### Example 1: Create a new instance
3939
```
40-
PS C:\>New-AzSqlInstance -Name managedInstance1 -ResourceGroupName ResourceGroup01 -Location westcentralus -AdministratorCredential (Get-Credential) -SubnetId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroup01/providers/Microsoft.Network/virtualNetworks/vnet_name/subnets/subnet_name" -LicenseType LicenseIncluded -StorageSizeInGB 1024 -VCore 16 -SkuName GP_Gen4
40+
PS C:\>New-AzSqlInstance -Name managedInstance1 -ResourceGroupName ResourceGroup01 -Location westcentralus -AdministratorCredential (Get-Credential) -SubnetId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroup01/providers/Microsoft.Network/virtualNetworks/vnet_name/subnets/subnet_name" -LicenseType LicenseIncluded -StorageSizeInGB 1024 -VCore 16 -SkuName GP_Gen4 -DnsZonePartner "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroup01/providers/Microsoft.Sql/managedInstances/partnerServerForDnsZone"
4141
Location : westcentralus
4242
Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/resourcegroup01/providers/Microsoft.Sql/managedInstances/managedInstance1
4343
ResourceGroupName : resourcegroup01
@@ -52,6 +52,7 @@ SubnetId : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/r
5252
LicenseType : LicenseIncluded
5353
VCores : 16
5454
StorageSizeInGB : 1024
55+
DnsZone : ad35cna0mw
5556
```
5657

5758
This command creates a new instance by using Edition and ComputeGeneration parameters.
@@ -352,6 +353,21 @@ Accept pipeline input: False
352353
Accept wildcard characters: False
353354
```
354355
356+
### -DnsZonePartner
357+
The resource id of the partner Managed Server to inherit DnsZone property from for Managed instance creation
358+
359+
```yaml
360+
Type: String
361+
Parameter Sets: (All)
362+
Aliases:
363+
364+
Required: false
365+
Position: Named
366+
Default value: None
367+
Accept pipeline input: False
368+
Accept wildcard characters: False
369+
```
370+
355371
### -VCore
356372
Determines how much VCore to associate with instance
357373

0 commit comments

Comments
 (0)