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