Skip to content

Commit 6dae582

Browse files
ulazarevicUros Lazarevic
andauthored
initial commit with added maintenanceConfigurationId parameter to New-AzSqlInstance and Set-AzSqlInstance, tests included (#13395)
Co-authored-by: Uros Lazarevic <[email protected]>
1 parent 555a4bc commit 6dae582

File tree

10 files changed

+1027
-16
lines changed

10 files changed

+1027
-16
lines changed

src/Sql/Sql.Test/ScenarioTests/ManagedInstanceCrudScenarioTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,12 @@ public void TestCreateUpdateManagedInstanceWithMinimalTlsVersion()
7777
{
7878
RunPowerShellTest("Test-CreateUpdateManagedInstanceWithMinimalTlsVersion");
7979
}
80+
81+
[Fact]
82+
[Trait(Category.AcceptanceType, Category.CheckIn)]
83+
public void TestCreateManagedInstanceWithMaintenanceConfigurationId()
84+
{
85+
RunPowerShellTest("Test-CreateManagedInstanceWithMaintenanceConfigurationId");
86+
}
8087
}
8188
}

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,4 +389,47 @@ function Test-CreateUpdateManagedInstanceWithMinimalTlsVersion
389389
{
390390
Remove-AzSqlInstance -ResourceGroupName $rgName -Name $managedInstanceName -Force
391391
}
392+
}
393+
394+
<#
395+
.SYNOPSIS
396+
Tests creating a managed instance with MaintenanceConfigurationId
397+
.DESCRIPTION
398+
SmokeTest
399+
#>
400+
function Test-CreateManagedInstanceWithMaintenanceConfigurationId
401+
{
402+
# Setup
403+
$rg = Create-ResourceGroupForTest "westeurope"
404+
$vnetName = "cl_maintenance_configuration"
405+
$subnetName = "ManagedInstance"
406+
407+
# Setup VNET
408+
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
409+
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName })[0].Id
410+
411+
$managedInstanceName = Get-ManagedInstanceName
412+
$version = "12.0"
413+
$credentials = Get-ServerCredential
414+
$licenseType = "BasePrice"
415+
$storageSizeInGB = 32
416+
$vCore = 8
417+
$skuName = "GP_Gen5"
418+
$maintenanceConfigurationId = "/subscriptions/a295933f-f7f5-4994-a109-8fa51241a5d6/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/MI_Sat_12AM_6AM"
419+
420+
421+
try
422+
{
423+
$managedInstance1 = New-AzSqlInstance -ResourceGroupName $rg.ResourceGroupName -Name $managedInstanceName `
424+
-Location $rg.Location -AdministratorCredential $credentials -SubnetId $subnetId `
425+
-LicenseType $licenseType -StorageSizeInGB $storageSizeInGB -Vcore $vCore -SkuName $skuName -AssignIdentity `
426+
-MaintenanceConfigurationId $maintenanceConfigurationId
427+
428+
Assert-AreEqual $managedInstance1.ManagedInstanceName $managedInstanceName
429+
Assert-AreEqual $managedInstance1.MaintenanceConfigurationId "MI_Sat_12AM_6AM"
430+
}
431+
finally
432+
{
433+
Remove-ResourceGroupForTest $rg
434+
}
392435
}

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

Lines changed: 902 additions & 0 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
@@ -19,6 +19,7 @@
1919
-->
2020
## Upcoming Release
2121
* Fixed issues where Set-AzSqlDatabaseAudit were not support Hyperscale database and database edition cannot be determined
22+
* Added MaintenanceConfigurationId to 'New-AzSqlInstance' and 'Set-AzSqlInstance'
2223

2324
## Version 2.11.1
2425
* Added DiffBackupIntervalInHours to `Set-AzSqlDatabaseBackupShortTermRetentionPolicy`

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,13 @@ public class NewAzureSqlManagedInstance : ManagedInstanceCmdletBase
316316
[ValidateSet("Local", "Zone", "Geo")]
317317
public string BackupStorageRedundancy { get; set; }
318318

319+
/// <summary>
320+
/// Gets or sets the managed instance maintenance configuration id
321+
/// </summary>
322+
[Parameter(Mandatory = false,
323+
HelpMessage = "The Maintenance configuration id for the Sql Azure Managed Instance.")]
324+
public string MaintenanceConfigurationId { get; set; }
325+
319326
/// <summary>
320327
/// Gets or sets whether or not to run this cmdlet in the background as a job
321328
/// </summary>
@@ -475,7 +482,8 @@ public override void ExecuteCmdlet()
475482
DnsZonePartner = this.DnsZonePartner,
476483
InstancePoolName = this.InstancePoolName,
477484
MinimalTlsVersion = this.MinimalTlsVersion,
478-
BackupStorageRedundancy = this.BackupStorageRedundancy
485+
BackupStorageRedundancy = this.BackupStorageRedundancy,
486+
MaintenanceConfigurationId = this.MaintenanceConfigurationId
479487
});
480488
return newEntity;
481489
}

src/Sql/Sql/ManagedInstance/Cmdlet/SetAzureSqlManagedInstance.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,13 @@ public class SetAzureSqlManagedInstance : ManagedInstanceCmdletBase
197197
[PSArgumentCompleter(Constants.ComputeGenerationGen5)]
198198
public string ComputeGeneration { get; set; }
199199

200+
/// <summary>
201+
/// Gets or sets the managed instance maintenance configuration id
202+
/// </summary>
203+
[Parameter(Mandatory = false,
204+
HelpMessage = "The Maintenance configuration id for the Sql Azure Managed Instance.")]
205+
public string MaintenanceConfigurationId { get; set; }
206+
200207
/// <summary>
201208
/// Gets or sets whether or not to run this cmdlet in the background as a job
202209
/// </summary>
@@ -282,7 +289,8 @@ protected override IEnumerable<AzureSqlManagedInstanceModel> ApplyUserInputToMod
282289
Tags = TagsConversionHelper.CreateTagDictionary(Tag, validate: true),
283290
Identity = model.FirstOrDefault().Identity ?? ResourceIdentityHelper.GetIdentityObjectFromType(this.AssignIdentity.IsPresent),
284291
InstancePoolName = this.InstancePoolName,
285-
MinimalTlsVersion = this.MinimalTlsVersion
292+
MinimalTlsVersion = this.MinimalTlsVersion,
293+
MaintenanceConfigurationId = this.MaintenanceConfigurationId
286294
});
287295
return updateData;
288296
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,10 @@ public class AzureSqlManagedInstanceModel
139139
/// Gets or sets the managed instance backup storage redundancy
140140
/// </summary>
141141
public string BackupStorageRedundancy { get; set; }
142+
143+
/// <summary>
144+
/// Gets or sets the managed instance maintenance configuration id
145+
/// </summary>
146+
public string MaintenanceConfigurationId { get; set; }
142147
}
143148
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ public AzureSqlManagedInstanceModel UpsertManagedInstance(AzureSqlManagedInstanc
139139
string.Format("/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Sql/instancePools/{2}",
140140
Context.Subscription.Id, model.ResourceGroupName, model.InstancePoolName): null,
141141
MinimalTlsVersion = model.MinimalTlsVersion,
142-
StorageAccountType = MapExternalBackupStorageRedundancyToInternal(model.BackupStorageRedundancy)
142+
StorageAccountType = MapExternalBackupStorageRedundancyToInternal(model.BackupStorageRedundancy),
143+
MaintenanceConfigurationId = model.MaintenanceConfigurationId
143144
});
144145

145146
return CreateManagedInstanceModelFromResponse(resp);
@@ -216,6 +217,7 @@ private static AzureSqlManagedInstanceModel CreateManagedInstanceModelFromRespon
216217
new ResourceIdentifier(resp.InstancePoolId).ResourceName : null;
217218
managedInstance.MinimalTlsVersion = resp.MinimalTlsVersion;
218219
managedInstance.BackupStorageRedundancy = MapInternalBackupStorageRedundancyToExternal(resp.StorageAccountType);
220+
managedInstance.MaintenanceConfigurationId = resp.MaintenanceConfigurationId;
219221

220222
Management.Internal.Resources.Models.Sku sku = new Management.Internal.Resources.Models.Sku();
221223
sku.Name = resp.Sku.Name;

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

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ New-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> -AdministratorC
1919
-Edition <String> -ComputeGeneration <String> [-Collation <String>] [-PublicDataEndpointEnabled]
2020
[-ProxyOverride <String>] [-TimezoneId <String>] [-Tag <Hashtable>] [-AssignIdentity]
2121
[-DnsZonePartner <String>] [-InstancePoolName <String>] [-MinimalTlsVersion <String>]
22-
[-BackupStorageRedundancy <String>] [-AsJob] [-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
23-
[-Confirm] [<CommonParameters>]
22+
[-BackupStorageRedundancy <String>] [-MaintenanceConfigurationId <String>] [-AsJob] [-Force]
23+
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
2424
```
2525

2626
### NewByInstancePoolParentObjectParameterSet
@@ -29,16 +29,18 @@ New-AzSqlInstance [-InstancePool] <AzureSqlInstancePoolModel> [-Name] <String>
2929
-AdministratorCredential <PSCredential> [-StorageSizeInGB <Int32>] -VCore <Int32> [-Collation <String>]
3030
[-PublicDataEndpointEnabled] [-ProxyOverride <String>] [-TimezoneId <String>] [-Tag <Hashtable>]
3131
[-AssignIdentity] [-DnsZonePartner <String>] [-MinimalTlsVersion <String>] [-BackupStorageRedundancy <String>]
32-
[-AsJob] [-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
32+
[-MaintenanceConfigurationId <String>] [-AsJob] [-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
33+
[-Confirm] [<CommonParameters>]
3334
```
3435

3536
### NewByInstancePoolResourceIdParameterSet
3637
```
3738
New-AzSqlInstance [-InstancePoolResourceId] <String> [-Name] <String> -AdministratorCredential <PSCredential>
3839
[-StorageSizeInGB <Int32>] -VCore <Int32> [-Collation <String>] [-PublicDataEndpointEnabled]
3940
[-ProxyOverride <String>] [-TimezoneId <String>] [-Tag <Hashtable>] [-AssignIdentity]
40-
[-DnsZonePartner <String>] [-MinimalTlsVersion <String>] [-BackupStorageRedundancy <String>] [-AsJob] [-Force]
41-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
41+
[-DnsZonePartner <String>] [-MinimalTlsVersion <String>] [-BackupStorageRedundancy <String>]
42+
[-MaintenanceConfigurationId <String>] [-AsJob] [-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
43+
[-Confirm] [<CommonParameters>]
4244
```
4345

4446
### NewBySkuNameParameterSetParameter
@@ -47,8 +49,9 @@ New-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> -AdministratorC
4749
-Location <String> -SubnetId <String> [-LicenseType <String>] [-StorageSizeInGB <Int32>] -VCore <Int32>
4850
-SkuName <String> [-Collation <String>] [-PublicDataEndpointEnabled] [-ProxyOverride <String>]
4951
[-TimezoneId <String>] [-Tag <Hashtable>] [-AssignIdentity] [-DnsZonePartner <String>]
50-
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-BackupStorageRedundancy <String>] [-AsJob]
51-
[-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
52+
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-BackupStorageRedundancy <String>]
53+
[-MaintenanceConfigurationId <String>] [-AsJob] [-Force] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
54+
[-Confirm] [<CommonParameters>]
5255
```
5356

5457
## DESCRIPTION
@@ -402,6 +405,21 @@ Accept pipeline input: False
402405
Accept wildcard characters: False
403406
```
404407
408+
### -MaintenanceConfigurationId
409+
The Maintenance configuration id for the Sql Azure Managed Instance.
410+
411+
```yaml
412+
Type: System.String
413+
Parameter Sets: (All)
414+
Aliases:
415+
416+
Required: False
417+
Position: Named
418+
Default value: None
419+
Accept pipeline input: False
420+
Accept wildcard characters: False
421+
```
422+
405423
### -MinimalTlsVersion
406424
The minimal TLS version to enforce for Managed instance
407425

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,28 @@ Sets properties for an Azure SQL Database Managed Instance.
1717
Set-AzSqlInstance [-Name] <String> [-ResourceGroupName] <String> [-AdministratorPassword <SecureString>]
1818
[-Edition <String>] [-LicenseType <String>] [-StorageSizeInGB <Int32>] [-VCore <Int32>]
1919
[-PublicDataEndpointEnabled <Boolean>] [-ProxyOverride <String>] [-Tag <Hashtable>] [-AssignIdentity]
20-
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>] [-AsJob]
21-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
20+
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>]
21+
[-MaintenanceConfigurationId <String>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
22+
[-Confirm] [<CommonParameters>]
2223
```
2324

2425
### SetInstanceFromAzureSqlManagedInstanceModelInstanceDefinition
2526
```
2627
Set-AzSqlInstance [-InputObject] <AzureSqlManagedInstanceModel> [-AdministratorPassword <SecureString>]
2728
[-Edition <String>] [-LicenseType <String>] [-StorageSizeInGB <Int32>] [-VCore <Int32>]
2829
[-PublicDataEndpointEnabled <Boolean>] [-ProxyOverride <String>] [-Tag <Hashtable>] [-AssignIdentity]
29-
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>] [-AsJob]
30-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
30+
[-InstancePoolName <String>] [-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>]
31+
[-MaintenanceConfigurationId <String>] [-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf]
32+
[-Confirm] [<CommonParameters>]
3133
```
3234

3335
### SetInstanceFromAzureResourceId
3436
```
3537
Set-AzSqlInstance [-ResourceId] <String> [-AdministratorPassword <SecureString>] [-Edition <String>]
3638
[-LicenseType <String>] [-StorageSizeInGB <Int32>] [-VCore <Int32>] [-PublicDataEndpointEnabled <Boolean>]
3739
[-ProxyOverride <String>] [-Tag <Hashtable>] [-AssignIdentity] [-InstancePoolName <String>]
38-
[-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>] [-AsJob]
39-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
40+
[-MinimalTlsVersion <String>] [-Force] [-ComputeGeneration <String>] [-MaintenanceConfigurationId <String>]
41+
[-AsJob] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
4042
```
4143

4244
## DESCRIPTION
@@ -266,6 +268,21 @@ Accept pipeline input: False
266268
Accept wildcard characters: False
267269
```
268270
271+
### -MaintenanceConfigurationId
272+
The Maintenance configuration id for the Sql Azure Managed Instance.
273+
274+
```yaml
275+
Type: System.String
276+
Parameter Sets: (All)
277+
Aliases:
278+
279+
Required: False
280+
Position: Named
281+
Default value: None
282+
Accept pipeline input: False
283+
Accept wildcard characters: False
284+
```
285+
269286
### -MinimalTlsVersion
270287
The minimal TLS version to enforce for Managed instance
271288

0 commit comments

Comments
 (0)