diff --git a/src/Storage/RegressionTests/srp.ps1 b/src/Storage/RegressionTests/srp.ps1 index 4908e0ce44bb..97e96b6c13d6 100644 --- a/src/Storage/RegressionTests/srp.ps1 +++ b/src/Storage/RegressionTests/srp.ps1 @@ -1334,13 +1334,31 @@ Describe "Management plan test" { Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameEncypScope | New-AzStorageEncryptionScope -EncryptionScopeName $scopename -KeyvaultEncryption -KeyUri $KeyUri #get single scope - Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -EncryptionScopeName $scopename - - Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameEncypScope | Get-AzStorageEncryptionScope -EncryptionScopeName $scopename + $scope = Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -EncryptionScopeName $scopename + $scope.Name | Should -Be $scopename + + $scope = Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameEncypScope | Get-AzStorageEncryptionScope -EncryptionScopeName $scopename + $scope.Name | Should -Be $scopename #list scope, will list all scopes - Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope - Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameEncypScope | Get-AzStorageEncryptionScope + $scope3 = New-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -EncryptionScopeName testscope3 -StorageEncryption + $scope4 = New-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -EncryptionScopeName testscope4 -StorageEncryption + $scopes = Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope + $scopes.Count | Should -Be 4 + $scopes = Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameEncypScope | Get-AzStorageEncryptionScope + $scopes.Count | Should -Be 4 + + #list with include, filter, and maxpagesize + Update-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -EncryptionScopeName testscope3 -State Disabled + $scopes = Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -MaxPageSize 10 -Include Disabled + $scopes.Count | Should -Be 1 + $scopes = Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -MaxPageSize 2 -Include Enabled -Filter "startswith(name, test)" + $scopes.Count | Should -Be 2 + ($scopes | ?{$_.Name -like "test*"}).Count | Should -Be 2 + ($scopes | ?{$_.State -like "Enabled"}).Count | Should -Be 2 + $scopes = Get-AzStorageEncryptionScope -ResourceGroupName $rgname -StorageAccountName $accountNameEncypScope -MaxPageSize 20 -Include All -Filter "startswith(name, test)" + $scopes.Count | Should -Be 3 + ($scopes | ?{$_.Name -like "test*"}).Count | Should -Be 3 # Set to Disabled. ### Move the encryption scope to CMK by passing { 'properties': { 'state':'Disabled' } } @@ -1710,11 +1728,11 @@ Describe "Management plan test" { $rule2 = New-AzStorageBlobInventoryPolicyRule -Name Test2 -Destination $containerName -Format Parquet -Schedule Weekly -BlobType blockBlob -PrefixMatch aaa,bbb -BlobSchemaField name,Last-Modified,Metadata,LastAccessTime,AccessTierInferred #,Tags $rule3 = New-AzStorageBlobInventoryPolicyRule -Name Test3 -Destination $containerName -Format Parquet -Schedule Daily -IncludeSnapshot -BlobType blockBlob,appendBlob -PrefixMatch aaa,bbb ` -BlobSchemaField name,Creation-Time,Last-Modified,Content-Length,Content-MD5,BlobType,AccessTier,AccessTierChangeTime,Expiry-Time,hdi_isfolder,Owner,Group,Permissions,Acl,Metadata,LastAccessTime - # $rule4 = New-AzStorageBlobInventoryPolicyRule -Name Test4 -Destination $containerName -Disabled -Format Csv -Schedule Weekly -BlobSchemaField Name,BlobType,Content-Length,Creation-Time -BlobType blockBlob -IncludeBlobVersion + $rule4 = New-AzStorageBlobInventoryPolicyRule -Name Test4 -Destination $containerName -Format Csv -Schedule Weekly -BlobType blockBlob -ExcludePrefix prefix1,prefix2 -IncludeDeleted -BlobSchemaField Name,Content-CRC64,Content-Type,LeaseStatus,EncryptionScope,DeletionId,Deleted,DeletedTime,RemainingRetentionDays - $policy = Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv -Disabled -Rule $rule1,$rule2,$rule3 + $policy = Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv -Disabled -Rule $rule1,$rule2,$rule3,$rule4 $policy.Enabled | should -Be $false - $policy.Rules.Count | should -be 3 + $policy.Rules.Count | should -be 4 $policy.Rules[0].Name | should -be "Test1" $policy.Rules[0].Enabled | should -Be $false $policy.Rules[0].Destination | should -Be $containerName @@ -1748,11 +1766,19 @@ Describe "Management plan test" { $policy.Rules[2].Definition.Filters.IncludeSnapshots | should -Be $true $policy.Rules[2].Definition.Filters.BlobTypes.Count | should -be 2 $policy.Rules[2].Definition.Filters.PrefixMatch.Count | should -be 2 + $policy.Rules[3].Name | Should -Be "Test4" + $policy.Rules[3].Enabled | Should -Be $true + $policy.Rules[3].Destination | Should -Be $containerName + $policy.Rules[3].Definition.Format | Should -Be Csv + $policy.Rules[3].Definition.Schedule | Should -Be Weekly + $policy.Rules[3].Definition.Filters.ExcludePrefix.Count | Should -Be 2 + $policy.Rules[3].Definition.Filters.IncludeDeleted | Should -Be $true + $policy.Rules[3].Definition.SchemaFields.Count | Should -Be 9 $policy = $null $policy = Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv $policy.Enabled | should -Be $false - $policy.Rules.Count | should -be 3 + $policy.Rules.Count | should -be 4 $policy.Rules[0].Name | should -be "Test1" $policy.Rules[0].Enabled | should -Be $false $policy.Rules[0].Destination | should -Be $containerName @@ -1786,6 +1812,14 @@ Describe "Management plan test" { $policy.Rules[2].Definition.Filters.IncludeSnapshots | should -Be $true $policy.Rules[2].Definition.Filters.BlobTypes.Count | should -be 2 $policy.Rules[2].Definition.Filters.PrefixMatch.Count | should -be 2 + $policy.Rules[3].Name | Should -Be "Test4" + $policy.Rules[3].Enabled | Should -Be $true + $policy.Rules[3].Destination | Should -Be $containerName + $policy.Rules[3].Definition.Format | Should -Be Csv + $policy.Rules[3].Definition.Schedule | Should -Be Weekly + $policy.Rules[3].Definition.Filters.ExcludePrefix.Count | Should -Be 2 + $policy.Rules[3].Definition.Filters.IncludeDeleted | Should -Be $true + $policy.Rules[3].Definition.SchemaFields.Count | Should -Be 9 $policy = $null $removeSuccess = Remove-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv -PassThru @@ -1847,10 +1881,28 @@ Describe "Management plan test" { PrefixMatch=@("conpre1","conpre2"); }) }) - }) + }, + @{ + Enabled=$false; + Name="Test3"; + Destination=$containerName; + Definition=(@{ + ObjectType="Blob"; + Format="Parquet"; + Schedule="Daily"; + SchemaFields=@("name","Metadata","DeletionId","Deleted","DeletedTime","RemainingRetentionDays","Content-CRC64","Content-Type","LeaseStatus","EncryptionScope"); + Filters=(@{ + BlobTypes=@("blockBlob","appendBlob"); + PrefixMatch=@("conpre1","conpre2"); + ExcludePrefix=@("prefix1","prefix2"); + IncludeDeleted=$true; + }) + }) + } + ) }) $policy.Enabled | should -Be $true - $policy.Rules.Count | should -be 2 + $policy.Rules.Count | should -be 3 $policy.Rules[0].Name | should -be "Test1" $policy.Rules[0].Enabled | should -Be $true $policy.Rules[0].Destination | should -Be $containerName @@ -1873,12 +1925,22 @@ Describe "Management plan test" { $policy.Rules[1].Definition.Filters.IncludeSnapshots | should -Be $null $policy.Rules[1].Definition.Filters.BlobTypes| should -be $null $policy.Rules[1].Definition.Filters.PrefixMatch.Count | should -be 2 + $policy.Rules[2].Name | Should -Be "Test3" + $policy.Rules[2].Enabled | Should -Be $false + $policy.Rules[2].Definition.ObjectType | Should -Be Blob + $policy.Rules[2].Definition.Format | Should -Be Parquet + $policy.Rules[2].Definition.Schedule | Should -Be Daily + $policy.Rules[2].Definition.SchemaFields.Count | Should -Be 10 + $policy.Rules[2].Definition.Filters.ExcludePrefix.Count | Should -Be 2 + $policy.Rules[2].Definition.Filters.IncludeDeleted | Should -Be $true + $policy.Rules[2].Definition.Filters.IncludeBlobVersions | Should -Be $null + $policy.Rules[2].Definition.Filters.IncludeSnapshots | Should -Be $null $policy = $null #policy pipeline $policy = Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv | Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv $policy.Enabled | should -Be $true - $policy.Rules.Count | should -be 2 + $policy.Rules.Count | should -be 3 $policy.Rules[0].Name | should -be "Test1" $policy.Rules[0].Enabled | should -Be $true $policy.Rules[0].Destination | should -Be $containerName @@ -1901,10 +1963,20 @@ Describe "Management plan test" { $policy.Rules[1].Definition.Filters.IncludeSnapshots | should -Be $null $policy.Rules[1].Definition.Filters.BlobTypes| should -be $null $policy.Rules[1].Definition.Filters.PrefixMatch.Count | should -be 2 + $policy.Rules[2].Name | Should -Be "Test3" + $policy.Rules[2].Enabled | Should -Be $false + $policy.Rules[2].Definition.ObjectType | Should -Be Blob + $policy.Rules[2].Definition.Format | Should -Be Parquet + $policy.Rules[2].Definition.Schedule | Should -Be Daily + $policy.Rules[2].Definition.SchemaFields.Count | Should -Be 10 + $policy.Rules[2].Definition.Filters.ExcludePrefix.Count | Should -Be 2 + $policy.Rules[2].Definition.Filters.IncludeDeleted | Should -Be $true + $policy.Rules[2].Definition.Filters.IncludeBlobVersions | Should -Be $null + $policy.Rules[2].Definition.Filters.IncludeSnapshots | Should -Be $null $policy = $null $policy = ,((Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv).Rules) | Set-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv -Disabled $policy.Enabled | should -Be $false - $policy.Rules.Count | should -be 2 + $policy.Rules.Count | should -be 3 $policy.Rules[0].Name | should -be "Test1" $policy.Rules[0].Enabled | should -Be $true $policy.Rules[0].Destination | should -Be $containerName @@ -1927,6 +1999,16 @@ Describe "Management plan test" { $policy.Rules[1].Definition.Filters.IncludeSnapshots | should -Be $null $policy.Rules[1].Definition.Filters.BlobTypes| should -be $null $policy.Rules[1].Definition.Filters.PrefixMatch.Count | should -be 2 + $policy.Rules[2].Name | Should -Be "Test3" + $policy.Rules[2].Enabled | Should -Be $false + $policy.Rules[2].Definition.ObjectType | Should -Be Blob + $policy.Rules[2].Definition.Format | Should -Be Parquet + $policy.Rules[2].Definition.Schedule | Should -Be Daily + $policy.Rules[2].Definition.SchemaFields.Count | Should -Be 10 + $policy.Rules[2].Definition.Filters.ExcludePrefix.Count | Should -Be 2 + $policy.Rules[2].Definition.Filters.IncludeDeleted | Should -Be $true + $policy.Rules[2].Definition.Filters.IncludeBlobVersions | Should -Be $null + $policy.Rules[2].Definition.Filters.IncludeSnapshots | Should -Be $null $policy = $null Get-AzStorageBlobInventoryPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameBlobInv | Remove-AzStorageBlobInventoryPolicy diff --git a/src/Storage/RegressionTests/srp_preview.ps1 b/src/Storage/RegressionTests/srp_preview.ps1 index b6d794230b0a..e15862977544 100644 --- a/src/Storage/RegressionTests/srp_preview.ps1 +++ b/src/Storage/RegressionTests/srp_preview.ps1 @@ -34,6 +34,132 @@ Describe "Management plan test - preview" { $Error.Count | should -be 0 } + + It "LCM TierTo Cold, TierToHot" { + $Error.Clear() + + $accountNameLCM = $accountName + "lcm" + $accountNameLCMPremium = $accountName + "lcmp" + + New-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameLCM -SkuName Standard_LRS -Location eastus2 + New-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameLCMPremium -SkuName Premium_LRS -Location eastus2 -Kind BlockBlobStorage + + # TierToCold + $action1 = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction TierToCold -DaysAfterCreationGreaterThan 50 + $action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -BaseBlobAction TierToCool -DaysAfterModificationGreaterThan 50 + $action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -SnapshotAction TierToCold -DaysAfterCreationGreaterThan 20 + $filter1 = New-AzStorageAccountManagementPolicyFilter -PrefixMatch prefix1,prefix2 + $rule1 = New-AzStorageAccountManagementPolicyRule -Name Test1 -Action $action1 -Filter $filter1 + + $action2 = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 100 + $action2 = Add-AzStorageAccountManagementPolicyAction -InputObject $action2 -BaseBlobAction TierToCold -DaysAfterModificationGreaterThan 100 + $action2 = Add-AzStorageAccountManagementPolicyAction -InputObject $action2 -SnapshotAction TierToCold -DaysAfterCreationGreaterThan 50 + $filter2 = New-AzStorageAccountManagementPolicyFilter -PrefixMatch prefix1,prefix2 + $rule2 = New-AzStorageAccountManagementPolicyRule -Name Test2 -Action $action2 -Filter $filter2 + + $policy = Set-AzStorageAccountManagementPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameLCM -Rule $rule1,$rule2 + $policy.Rules.Count | Should -Be 2 + $policy.Rules[0].Name | Should -Be "Test1" + $policy.Rules[0].Enabled | Should -Be $true + $policy.Rules[0].Definition.Actions.BaseBlob.TierToCold.DaysAfterCreationGreaterThan | Should -Be 50 + $policy.Rules[0].Definition.Actions.BaseBlob.TierToCool.DaysAfterModificationGreaterThan | Should -Be 50 + $policy.Rules[0].Definition.Actions.Snapshot.TierToCold.DaysAfterCreationGreaterThan | Should -Be 20 + $policy.Rules[0].Definition.Filters.PrefixMatch.Count | Should -Be 2 + $policy.Rules[1].Name | Should -Be "Test2" + $policy.Rules[1].Enabled | Should -Be $true + $policy.Rules[1].Definition.Actions.BaseBlob.Delete.DaysAfterModificationGreaterThan | Should -Be 100 + $policy.Rules[1].Definition.Actions.BaseBlob.TierToCold.DaysAfterModificationGreaterThan | Should -Be 100 + $policy.Rules[1].Definition.Actions.Snapshot.TierToCold.DaysAfterCreationGreaterThan | Should -Be 50 + $policy.Rules[1].Definition.Filters.PrefixMatch.Count | Should -Be 2 + + $policy = Set-AzStorageAccountManagementPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameLCM -Policy (@{ + Rules=(@{ + Enabled=$false; + Name="Test3"; + Definition=(@{ + Actions=(@{ + BaseBlob=(@{ + TierToCold=@{DaysAfterCreationGreaterThan=100}; + }); + }); + Filters=(@{ + BlobTypes=@("blockBlob","appendblob"); + }) + }) + }) + }) + $policy.Rules.Count | Should -Be 1 + $policy.Rules[0].Name | Should -Be "Test3" + $policy.Rules[0].Enabled | Should -Be $false + $policy.Rules[0].Definition.Actions.BaseBlob.TierToCold.DaysAfterCreationGreaterThan | Should -Be 100 + $policy.Rules[0].Definition.Filters.BlobTypes.Count | Should -Be 2 + + #TierToHot + $action1 = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction TierToHot -DaysAfterCreationGreaterThan 50 + $action1 = Add-AzStorageAccountManagementPolicyAction -InputObject $action1 -BaseBlobAction TierToCool -DaysAfterCreationGreaterThan 100 + $filter1 = New-AzStorageAccountManagementPolicyFilter -PrefixMatch prefix1,prefix2 + $rule1 = New-AzStorageAccountManagementPolicyRule -Name Test1 -Action $action1 -Filter $filter1 + + $policy = Set-AzStorageAccountManagementPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameLCMPremium -Rule $rule1 + $policy.Rules.Count | Should -Be 1 + $policy.Rules[0].Enabled | Should -Be $true + $policy.Rules[0].Name | Should -Be "Test1" + $policy.Rules[0].Definition.Actions.BaseBlob.TierToHot.DaysAfterCreationGreaterThan | Should -Be 50 + $policy.Rules[0].Definition.Actions.BaseBlob.TierToCool.DaysAfterCreationGreaterThan | Should -Be 100 + $policy.Rules[0].Definition.Filters.PrefixMatch.Count | Should -Be 2 + + $policy = Set-AzStorageAccountManagementPolicy -ResourceGroupName $rgname -StorageAccountName $accountNameLCMPremium -Policy (@{ + Rules=(@{ + Enabled=$false; + Name="Test3"; + Definition=(@{ + Actions=(@{ + BaseBlob=(@{ + TierToHot=@{DaysAfterCreationGreaterThan=100}; + }); + }); + Filters=(@{ + BlobTypes=@("blockBlob","appendblob"); + }) + }) + }) + }) + $policy.Rules.Count | Should -Be 1 + $policy.Rules.Name | Should -Be "Test3" + $policy.Rules[0].Definition.Actions.BaseBlob.TierToHot.DaysAfterCreationGreaterThan | Should -Be 100 + $policy.Rules[0].Definition.Filters.BlobTypes.Count | Should -Be 2 + + Remove-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameLCM -Force + Remove-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameLCMPremium -Force + + } + + It "Soft failover" -Skip { + $Error.Clear() + $accountNameFailover = $accountName + "sfl" + New-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameFailover -SkuName Standard_RAGRS -Location eastus2euap -Kind StorageV2 + + $a = Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameFailover -IncludeGeoReplicationStats + $a.GeoReplicationStats + + $taskfailover = Invoke-AzStorageAccountFailover -ResourceGroupName $rgname -Name $accountNameFailover -FailoverType Planned -Force -AsJob + $taskfailover | Wait-Job + + $a = Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameFailover + $a.Sku.Name | Should -Be "Standard_RAGRS" + $a.PrimaryLocation | Should -Be "centraluseuap" + $a.SecondaryLocation | Should -Be "eastus2euap" + + $taskfailover = Invoke-AzStorageAccountFailover -ResourceGroupName $rgname -Name $accountNameFailover -FailoverType Unplanned -Force -AsJob + $taskfailover | Wait-Job + + $a = Get-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameFailover + $a.Sku.Name | Should -Be "Standard_LRS" + $a.PrimaryLocation | Should -Be "eastus2euap" + $a.SecondaryLocation | Should -Be $null + + Remove-AzStorageAccount -ResourceGroupName $rgname -Name $accountNameFailover -Force + } It "TODO" { $Error.Clear()