Skip to content

Commit 24e6c72

Browse files
committed
[Storage] Support container softdelete
1 parent 5e753d6 commit 24e6c72

35 files changed

+2707
-266
lines changed

src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ public void TestStorageBlobRestore()
9292
public void TestStorageBlobChangeFeed()
9393
{
9494
TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobChangeFeed");
95-
}
95+
}
96+
97+
[Fact]
98+
[Trait(Category.AcceptanceType, Category.CheckIn)]
99+
public void TestStorageBlobContainerSoftDelete()
100+
{
101+
TestController.NewInstance.RunPsTest(_logger, "Test-StorageBlobContainerSoftDelete");
102+
}
96103
}
97104
}

src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.ps1

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,3 +757,65 @@ function Test-StorageBlobChangeFeed
757757
}
758758

759759

760+
761+
<#
762+
.SYNOPSIS
763+
Test StorageAccount Blob Container SoftDelete in Service Properties
764+
.DESCRIPTION
765+
SmokeTest
766+
#>
767+
function Test-StorageBlobContainerSoftDelete
768+
{
769+
# Setup
770+
$rgname = Get-StorageManagementTestResourceName;
771+
772+
try
773+
{
774+
# Test
775+
$stoname = 'sto' + $rgname;
776+
$stotype = 'Standard_GRS';
777+
$loc = Get-ProviderLocation_Canary ResourceManagement;
778+
$kind = 'StorageV2'
779+
780+
Write-Verbose "RGName: $rgname | Loc: $loc"
781+
New-AzResourceGroup -Name $rgname -Location $loc;
782+
783+
New-AzStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $loc -Type $stotype -Kind $kind
784+
$stos = Get-AzStorageAccount -ResourceGroupName $rgname;
785+
786+
# Enable Blob Delete Retention Policy
787+
$policy = Enable-AzStorageContainerDeleteRetentionPolicy -ResourceGroupName $rgname -StorageAccountName $stoname -PassThru -RetentionDays 30
788+
Assert-AreEqual $true $policy.Enabled
789+
Assert-AreEqual 30 $policy.Days
790+
$property = Get-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
791+
Assert-AreEqual $true $property.ContainerDeleteRetentionPolicy.Enabled
792+
Assert-AreEqual 30 $property.ContainerDeleteRetentionPolicy.Days
793+
794+
# Create and delete container, then get container
795+
$contaierName = "testcontaienr"
796+
New-AzRmStorageContainer -ResourceGroupName $rgname -StorageAccountName $stoname -Name $contaierName
797+
Remove-AzRmStorageContainer -ResourceGroupName $rgname -StorageAccountName $stoname -Name $contaierName -Force
798+
$cons = Get-AzRmStorageContainer -ResourceGroupName $rgname -StorageAccountName $stoname
799+
Assert-AreEqual 0 $cons.Count
800+
$cons = Get-AzRmStorageContainer -ResourceGroupName $rgname -StorageAccountName $stoname -IncludeDeleted
801+
Assert-AreEqual 1 $cons.Count
802+
Assert-AreEqual $contaierName $cons[0].Name
803+
Assert-AreEqual $true $cons[0].Deleted
804+
805+
806+
# Disable Blob Delete Retention Policy
807+
$policy = Disable-AzStorageContainerDeleteRetentionPolicy -ResourceGroupName $rgname -StorageAccountName $stoname -PassThru
808+
Assert-AreEqual $false $policy.Enabled
809+
$property = Get-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
810+
Assert-AreEqual $false $property.ContainerDeleteRetentionPolicy.Enabled
811+
812+
Remove-AzStorageAccount -Force -ResourceGroupName $rgname -Name $stoname;
813+
}
814+
finally
815+
{
816+
# Cleanup
817+
Clean-ResourceGroup $rgname
818+
}
819+
}
820+
821+

src/Storage/Storage.Management.Test/ScenarioTests/StorageDataPlaneTests.ps1

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,30 @@ function Test-Blob
301301
Assert-AreEqual $scopename2 $blob.BlobProperties.EncryptionScope
302302
Remove-AzStorageContainer -Name $containerName2 -Force -Context $storageContext
303303

304+
# container softdelete test
305+
## Enabled container softdelete,then create and delete a container
306+
Enable-AzStorageContainerDeleteRetentionPolicy -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -RetentionDays 3
307+
$containerNamesoftdelete = "softdeletecontainer"
308+
New-AzStorageContainer -Name $containerNamesoftdelete -Context $storageContext
309+
Remove-AzStorageContainer -Name $containerNamesoftdelete -Context $storageContext -Force
310+
## Get container without -IncludeDeleted, won't list out deleted containers
311+
$deletedcontainer = Get-AzStorageContainer -Context $storageContext | ?{$_.IsDeleted}
312+
Assert-AreEqual 0 $deletedcontainer.Count
313+
## Get container with -IncludeDeleted, will list out deleted containers
314+
$deletedcontainer = Get-AzStorageContainer -Context $storageContext -IncludeDeleted | ?{$_.IsDeleted}
315+
Assert-AreEqual 1 $deletedcontainer.Count
316+
Assert-AreEqual $true $deletedcontainer.IsDeleted
317+
Assert-NotNull $deletedcontainer.VersionId
318+
## restore container with pipeline, to same container name
319+
sleep 60 # need wait for some time, or restore will fail with 409 (The specified container is being deleted.)
320+
$deletedcontainer | Restore-AzStorageContainer
321+
$container = Get-AzStorageContainer -Name $containerNamesoftdelete -Context $storageContext
322+
Assert-AreEqual 1 $container.Count
323+
Assert-Null $container.IsDeleted
324+
Assert-Null $container.VersionId
325+
Disable-AzStorageContainerDeleteRetentionPolicy -ResourceGroupName $ResourceGroupName -Name $StorageAccountName
326+
Remove-AzStorageContainer -Name $containerNamesoftdelete -Context $storageContext -Force
327+
304328
# Clean Storage Account
305329
Remove-AzStorageContainer -Name $containerName -Force -Context $storageContext
306330

0 commit comments

Comments
 (0)