Skip to content

Commit 7b151c1

Browse files
author
Maddie Clayton
authored
Merge pull request #8517 from v-djnisi/master
Adding cmdlets for backup short term retention on Managed Instance
2 parents 6ce7bde + af6c699 commit 7b151c1

File tree

178 files changed

+18887
-262
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+18887
-262
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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 Microsoft.WindowsAzure.Commands.Utilities.Common;
18+
using Xunit;
19+
using Xunit.Abstractions;
20+
using RestTestFramework = Microsoft.Rest.ClientRuntime.Azure.TestFramework;
21+
22+
namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests
23+
{
24+
public class ManagedDatabaseBackupTests : SqlTestsBase
25+
{
26+
protected override void SetupManagementClients(RestTestFramework.MockContext context)
27+
{
28+
var sqlClient = GetSqlClient(context);
29+
var newResourcesClient = GetResourcesClient(context);
30+
var networkClient = GetNetworkClient(context);
31+
Helper.SetupSomeOfManagementClients(sqlClient, newResourcesClient, networkClient);
32+
}
33+
34+
public ManagedDatabaseBackupTests(ITestOutputHelper output) : base(output)
35+
{
36+
}
37+
38+
[Fact]
39+
[Trait(Category.AcceptanceType, Category.CheckIn)]
40+
public void ManagedDatabaseShortTermRetentionPolicy()
41+
{
42+
RunPowerShellTest("Test-ManagedLiveDatabaseShortTermRetentionPolicy");
43+
}
44+
45+
[Fact]
46+
[Trait(Category.AcceptanceType, Category.CheckIn)]
47+
public void ManagedDeletedDatabaseShortTermRetentionPolicy()
48+
{
49+
RunPowerShellTest("Test-ManagedDeletedDatabaseShortTermRetentionPolicy");
50+
}
51+
}
52+
}
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
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+
Test short term retention for managed databases.
18+
#>
19+
function Test-ManagedLiveDatabaseShortTermRetentionPolicy
20+
{
21+
# Setup
22+
$rg = Create-ResourceGroupForTest
23+
$vnetName = "cl_initial"
24+
$subnetName = "Cool"
25+
26+
# Setup VNET
27+
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
28+
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName }).Id
29+
30+
$managedInstance = Create-ManagedInstanceForTest $rg $subnetId
31+
32+
# Retention shouldn't be under 7 days or over 35 days
33+
$invalidRetention = 45
34+
35+
try
36+
{
37+
# Create db with default values
38+
$managedDatabaseName = Get-ManagedDatabaseName
39+
$collation = "SQL_Latin1_General_CP1_CI_AS"
40+
$job1 = New-AzSqlInstanceDatabase -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -Name $managedDatabaseName -Collation $collation -AsJob
41+
$job1 | Wait-Job
42+
$db = $job1.Output
43+
44+
Assert-AreEqual $db.Name $managedDatabaseName
45+
Assert-NotNull $db.Collation
46+
Assert-NotNull $db.CreationDate
47+
48+
# Test default parameter set
49+
$retention = 28
50+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName -RetentionDays $retention
51+
Assert-AreEqual $policy.Count 1
52+
Assert-AreEqual $retention $policy.RetentionDays
53+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName
54+
Assert-AreEqual $policy.Count 1
55+
Assert-AreEqual $retention $policy.RetentionDays
56+
57+
# Test InputObject
58+
$retention = 21
59+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -AzureInstanceDatabaseObject $db[0] -RetentionDays $retention
60+
Assert-AreEqual 1 $policy.Count
61+
Assert-AreEqual $retention $policy.RetentionDays
62+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -AzureInstanceDatabaseObject $db[0]
63+
Assert-AreEqual 1 $policy.Count
64+
Assert-AreEqual $retention $policy.RetentionDays
65+
66+
# Test ResourceId
67+
$retention = 14
68+
$resourceId = $db.Id + "/backupShortTermRetentionPolicies/default"
69+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceId $resourceId -RetentionDays $retention
70+
Assert-AreEqual 1 $policy.Count
71+
Assert-AreEqual $retention $policy.RetentionDays
72+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceId $resourceId
73+
Assert-AreEqual 1 $policy.Count
74+
Assert-AreEqual $retention $policy.RetentionDays
75+
76+
# Test Piping
77+
$retention = 7
78+
$policy = $db | Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -RetentionDays $retention
79+
Assert-AreEqual 1 $policy.Count
80+
Assert-AreEqual $retention $policy.RetentionDays
81+
$policy = $db | Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy
82+
Assert-AreEqual 1 $policy.Count
83+
Assert-AreEqual $retention $policy.RetentionDays
84+
}
85+
finally
86+
{
87+
Remove-ResourceGroupForTest $rg
88+
}
89+
}
90+
91+
function Test-ManagedDeletedDatabaseShortTermRetentionPolicy
92+
{
93+
# Setup
94+
$rg = Create-ResourceGroupForTest
95+
$vnetName = "cl_initial"
96+
$subnetName = "Cool"
97+
98+
# Setup VNET
99+
$virtualNetwork1 = CreateAndGetVirtualNetworkForManagedInstance $vnetName $subnetName $rg.Location
100+
$subnetId = $virtualNetwork1.Subnets.where({ $_.Name -eq $subnetName }).Id
101+
102+
$managedInstance = Create-ManagedInstanceForTest $rg $subnetId
103+
104+
# Retention shouldn't be under 7 days or over 35 days
105+
$invalidRetention = 45
106+
107+
try
108+
{
109+
# Create db with default values.
110+
$managedDatabaseName = Get-ManagedDatabaseName
111+
$collation = "SQL_Latin1_General_CP1_CI_AS"
112+
$job1 = New-AzSqlInstanceDatabase -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -Name $managedDatabaseName -Collation $collation -AsJob
113+
$job1 | Wait-Job
114+
$db = $job1.Output
115+
116+
Assert-AreEqual $db.Name $managedDatabaseName
117+
Assert-NotNull $db.Collation
118+
Assert-NotNull $db.CreationDate
119+
120+
# Test default parameter set.
121+
$retention = 35
122+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName -RetentionDays $retention
123+
Assert-AreEqual $policy.Count 1
124+
Assert-AreEqual $retention $policy.RetentionDays
125+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName
126+
Assert-AreEqual $policy.Count 1
127+
Assert-AreEqual $retention $policy.RetentionDays
128+
129+
# Test remove using all parameters
130+
Remove-AzSqlInstanceDatabase -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -Name $managedDatabaseName -Force
131+
132+
# Get deleted database
133+
$deletedDatabases = Get-AzSqlDeletedInstanceDatabaseBackup -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName
134+
135+
# Set retention to 29, test default parameter providing.
136+
$retention = 29
137+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName -DeletionDate $deletedDatabases[0].DeletionDate -RetentionDays $retention
138+
Assert-AreEqual $policy.Count 1
139+
Assert-AreEqual $retention $policy.RetentionDays
140+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceGroupName $rg.ResourceGroupName -InstanceName $managedInstance.ManagedInstanceName -DatabaseName $managedDatabaseName -DeletionDate $deletedDatabases[0].DeletionDate
141+
Assert-AreEqual $policy.Count 1
142+
Assert-AreEqual $retention $policy.RetentionDays
143+
144+
# Test InputObject
145+
$retention = 21
146+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -AzureInstanceDatabaseObject $deletedDatabases[0] -RetentionDays $retention
147+
Assert-AreEqual 1 $policy.Count
148+
Assert-AreEqual $retention $policy.RetentionDays
149+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -AzureInstanceDatabaseObject $deletedDatabases[0]
150+
Assert-AreEqual 1 $policy.Count
151+
Assert-AreEqual $retention $policy.RetentionDays
152+
153+
# Test ResourceId
154+
$retention = 14
155+
$resourceId = $deletedDatabases[0].Id + "/backupShortTermRetentionPolicies/default"
156+
$policy = Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceId $resourceId -RetentionDays $retention
157+
Assert-AreEqual 1 $policy.Count
158+
Assert-AreEqual $retention $policy.RetentionDays
159+
$policy = Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -ResourceId $resourceId
160+
Assert-AreEqual 1 $policy.Count
161+
Assert-AreEqual $retention $policy.RetentionDays
162+
163+
# Test Piping
164+
$retention = 7
165+
$policy = $deletedDatabases[0] | Set-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy -RetentionDays $retention
166+
Assert-AreEqual 1 $policy.Count
167+
Assert-AreEqual $retention $policy.RetentionDays
168+
$policy = $deletedDatabases[0] | Get-AzSqlInstanceDatabaseBackupShortTermRetentionPolicy
169+
Assert-AreEqual 1 $policy.Count
170+
Assert-AreEqual $retention $policy.RetentionDays
171+
}
172+
finally
173+
{
174+
Remove-ResourceGroupForTest $rg
175+
}
176+
}

0 commit comments

Comments
 (0)