@@ -158,4 +158,150 @@ function Test-SnapshotPipelines
158
158
# Cleanup
159
159
Clean - ResourceGroup $resourceGroup
160
160
}
161
+ }
162
+
163
+ <#
164
+ . SYNOPSIS
165
+ Test Create new Volume from a Snapshot operation
166
+ #>
167
+ function Test-CreateVolumeFromSnapshot
168
+ {
169
+ $currentSub = (Get-AzureRmContext ).Subscription
170
+ $subsid = $currentSub.SubscriptionId
171
+
172
+ $resourceGroup = Get-ResourceGroupName
173
+ $accName = Get-ResourceName
174
+ $poolName = Get-ResourceName
175
+ $volName = Get-ResourceName
176
+ $snName1 = Get-ResourceName
177
+ $snName2 = Get-ResourceName
178
+ $gibibyte = 1024 * 1024 * 1024
179
+ $usageThreshold = 100 * $gibibyte
180
+ $doubleUsage = 2 * $usageThreshold
181
+ $resourceLocation = Get-ProviderLocation " Microsoft.NetApp" " eastus" - UseCanonical
182
+ $subnetName = " default"
183
+ $standardPoolSize = 4398046511104
184
+ $serviceLevel = " Premium"
185
+ $vnetName = $resourceGroup + " -vnet"
186
+
187
+ $subnetId = " /subscriptions/$subsId /resourceGroups/$resourceGroup /providers/Microsoft.Network/virtualNetworks/$vnetName /subnets/$subnetName "
188
+
189
+ try
190
+ {
191
+ # create the resource group
192
+ New-AzResourceGroup - Name $resourceGroup - Location $resourceLocation
193
+
194
+ # create virtual network
195
+ $virtualNetwork = New-AzVirtualNetwork - ResourceGroupName $resourceGroup - Location $resourceLocation - Name $vnetName - AddressPrefix 10.0 .0.0 / 16
196
+ $delegation = New-AzDelegation - Name " netAppVolumes" - ServiceName " Microsoft.Netapp/volumes"
197
+ Add-AzVirtualNetworkSubnetConfig - Name $subnetName - VirtualNetwork $virtualNetwork - AddressPrefix " 10.0.1.0/24" - Delegation $delegation | Set-AzVirtualNetwork
198
+
199
+ # create the resource group
200
+ New-AzResourceGroup - Name $resourceGroupName - Location $resourceLocation
201
+
202
+ # create account, pool and volume
203
+ $retrievedAcc = New-AzNetAppFilesAccount - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName
204
+
205
+ $retrievedPool = New-AzNetAppFilesPool - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - PoolSize $standardPoolSize - ServiceLevel $serviceLevel
206
+
207
+ $retrievedVolume = New-AzNetAppFilesVolume - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - VolumeName $volName - CreationToken $volName - UsageThreshold $usageThreshold - ServiceLevel $serviceLevel - SubnetId $subnetId
208
+ Assert-AreEqual " $accName /$poolName /$volName " $retrievedVolume.Name
209
+ Assert-AreEqual $serviceLevel $retrievedVolume.ServiceLevel
210
+
211
+ # create two snapshots and check
212
+ $retrieveSn = New-AzNetAppFilesSnapshot - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - VolumeName $volName - SnapshotName $snName1 - FileSystemId $retrievedVolume.FileSystemId
213
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrieveSn.Name
214
+ # check created date has been populated
215
+ Assert-NotNull $retrieveSn.Created
216
+
217
+ # get and check a snapshot by name
218
+ $retrievedSnapshot = Get-AzNetAppFilesSnapshot - ResourceGroupName $resourceGroup - AccountName $accName - PoolName $poolName - VolumeName $volName - SnapshotName $snName1
219
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrievedSnapshot.Name
220
+
221
+ # get and check the snapshot again using the resource id just obtained
222
+ $retrievedSnapshotById = Get-AzNetAppFilesSnapshot - ResourceId $retrievedSnapshot.Id
223
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrievedSnapshotById.Name
224
+
225
+ # Create volume from snapshot
226
+ $restoredVolume = New-AzNetAppFilesVolume - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - VolumeName $volName - CreationToken $volName - UsageThreshold $usageThreshold - ServiceLevel $serviceLevel - SubnetId $subnetId - SnapshotId $retrievedSnapshot.SnapshotId
227
+ Assert-AreEqual $retrievedVolume.Name $restoredVolume.Name
228
+ }
229
+ finally
230
+ {
231
+ # Cleanup
232
+ Clean - ResourceGroup $resourceGroup
233
+ }
234
+ }
235
+
236
+ <#
237
+ . SYNOPSIS
238
+ Test Restore/Revert Volume from one of its Snapshots
239
+ #>
240
+ function Test-RestoreVolumeFromSnapshot
241
+ {
242
+ $currentSub = (Get-AzureRmContext ).Subscription
243
+ $subsid = $currentSub.SubscriptionId
244
+
245
+ $resourceGroup = Get-ResourceGroupName
246
+ $accName = Get-ResourceName
247
+ $poolName = Get-ResourceName
248
+ $volName = Get-ResourceName
249
+ $snName1 = Get-ResourceName
250
+ $snName2 = Get-ResourceName
251
+ $gibibyte = 1024 * 1024 * 1024
252
+ $usageThreshold = 100 * $gibibyte
253
+ $doubleUsage = 2 * $usageThreshold
254
+ $resourceLocation = Get-ProviderLocation " Microsoft.NetApp" " eastus" - UseCanonical
255
+ $subnetName = " default"
256
+ $standardPoolSize = 4398046511104
257
+ $serviceLevel = " Premium"
258
+ $vnetName = $resourceGroup + " -vnet"
259
+
260
+ $subnetId = " /subscriptions/$subsId /resourceGroups/$resourceGroup /providers/Microsoft.Network/virtualNetworks/$vnetName /subnets/$subnetName "
261
+
262
+ try
263
+ {
264
+ # create the resource group
265
+ New-AzResourceGroup - Name $resourceGroup - Location $resourceLocation
266
+
267
+ # create virtual network
268
+ $virtualNetwork = New-AzVirtualNetwork - ResourceGroupName $resourceGroup - Location $resourceLocation - Name $vnetName - AddressPrefix 10.0 .0.0 / 16
269
+ $delegation = New-AzDelegation - Name " netAppVolumes" - ServiceName " Microsoft.Netapp/volumes"
270
+ Add-AzVirtualNetworkSubnetConfig - Name $subnetName - VirtualNetwork $virtualNetwork - AddressPrefix " 10.0.1.0/24" - Delegation $delegation | Set-AzVirtualNetwork
271
+
272
+ # create the resource group
273
+ New-AzResourceGroup - Name $resourceGroupName - Location $resourceLocation
274
+
275
+ # create account, pool and volume
276
+ $retrievedAcc = New-AzNetAppFilesAccount - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName
277
+
278
+ $retrievedPool = New-AzNetAppFilesPool - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - PoolSize $standardPoolSize - ServiceLevel $serviceLevel
279
+
280
+ $retrievedVolume = New-AzNetAppFilesVolume - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - VolumeName $volName - CreationToken $volName - UsageThreshold $usageThreshold - ServiceLevel $serviceLevel - SubnetId $subnetId
281
+ Assert-AreEqual " $accName /$poolName /$volName " $retrievedVolume.Name
282
+ Assert-AreEqual $serviceLevel $retrievedVolume.ServiceLevel
283
+
284
+ # create two snapshots and check
285
+ $retrieveSn = New-AzNetAppFilesSnapshot - ResourceGroupName $resourceGroup - Location $resourceLocation - AccountName $accName - PoolName $poolName - VolumeName $volName - SnapshotName $snName1 - FileSystemId $retrievedVolume.FileSystemId
286
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrieveSn.Name
287
+ # check created date has been populated
288
+ Assert-NotNull $retrieveSn.Created
289
+
290
+ # get and check a snapshot by name
291
+ $retrievedSnapshot = Get-AzNetAppFilesSnapshot - ResourceGroupName $resourceGroup - AccountName $accName - PoolName $poolName - VolumeName $volName - SnapshotName $snName1
292
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrievedSnapshot.Name
293
+
294
+ # get and check the snapshot again using the resource id just obtained
295
+ $retrievedSnapshotById = Get-AzNetAppFilesSnapshot - ResourceId $retrievedSnapshot.Id
296
+ Assert-AreEqual " $accName /$poolName /$volName /$snName1 " $retrievedSnapshotById.Name
297
+
298
+ # revert the volume from snapshot
299
+ Restore-AzNetAppFilesVolume - ResourceGroupName $resourceGroup - AccountName $accName - PoolName $poolName - VolumeName $volName - SnapshotId $retrievedSnapshot.SnapshotId
300
+
301
+ }
302
+ finally
303
+ {
304
+ # Cleanup
305
+ Clean - ResourceGroup $resourceGroup
306
+ }
161
307
}
0 commit comments