@@ -26,6 +26,60 @@ $oldResourceGroupName = "sambit_rg"
26
26
$oldVaultName = " sambit"
27
27
$oldPolicyName = " iaasvmretentioncheck"
28
28
29
+ function Test-AzureVMSmartTieringPolicy
30
+ {
31
+ $location = " centraluseuap"
32
+ $resourceGroupName = " hiagarg"
33
+ $vaultName = " hiagaVault"
34
+ $tierRecommendedPolicy = " hiagaVMArchiveTierRecomm"
35
+ $tierAfterPolicy = " hiagaVMArchiveTierAfter"
36
+
37
+ try
38
+ {
39
+ $vault = Get-AzRecoveryServicesVault - ResourceGroupName $resourceGroupName - Name $vaultName
40
+
41
+ $schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject - WorkloadType AzureVM - BackupManagementType AzureVM - PolicySubType Enhanced - ScheduleRunFrequency Weekly
42
+ $retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject - WorkloadType AzureVM - BackupManagementType AzureVM - ScheduleRunFrequency Weekly
43
+
44
+ # create tier recommended policy
45
+ $pol = New-AzRecoveryServicesBackupProtectionPolicy - Name $tierRecommendedPolicy - WorkloadType AzureVM - BackupManagementType AzureVM - RetentionPolicy $retPol - SchedulePolicy $schPol - VaultId $vault.ID - MoveToArchiveTier $true - TieringMode TierRecommended
46
+
47
+ Assert-True { $pol.Name -eq $tierRecommendedPolicy }
48
+
49
+ # error scenario for tier after policy
50
+ Assert-ThrowsContains { $pol = New-AzRecoveryServicesBackupProtectionPolicy - Name $tierAfterPolicy - WorkloadType AzureVM - BackupManagementType AzureVM - RetentionPolicy $retPol - SchedulePolicy $schPol - VaultId $vault.ID - MoveToArchiveTier $true - TieringMode TierAllEligible - TierAfterDuration 2 - TierAfterDurationType Months } `
51
+ " TierAfterDuration needs to be >= 3 months, at least one of monthly or yearly retention should be >= (TierAfterDuration + 6) months" ;
52
+
53
+ # create tier after policy
54
+ $pol = New-AzRecoveryServicesBackupProtectionPolicy - Name $tierAfterPolicy - WorkloadType AzureVM - BackupManagementType AzureVM - RetentionPolicy $retPol - SchedulePolicy $schPol - VaultId $vault.ID - MoveToArchiveTier $true - TieringMode TierAllEligible - TierAfterDuration 3 - TierAfterDurationType Months
55
+
56
+ Assert-True { $pol.Name -eq $tierAfterPolicy }
57
+
58
+ # modify policy
59
+ $pol = Get-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID | Where { $_.Name -match $tierRecommendedPolicy }
60
+ Set-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID - Policy $pol [0 ] - MoveToArchiveTier $false
61
+ Set-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID - Policy $pol [0 ] - MoveToArchiveTier $true - TieringMode TierRecommended
62
+
63
+ # error scenario for retention policy
64
+ $pol = Get-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID | Where { $_.Name -match $tierRecommendedPolicy }
65
+ $pol.RetentionPolicy.IsYearlyScheduleEnabled = $false
66
+ $pol.RetentionPolicy.MonthlySchedule.DurationCountInMonths = 8
67
+
68
+ Assert-ThrowsContains { Set-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID - Policy $pol - RetentionPolicy $pol.RetentionPolicy } `
69
+ " At least one of monthly or yearly retention should be >= 9 months as smart tiering is enabled for this policy. Please modify retention or disable smart tiering. Please note that disabling smart tiering may involve additional costs" ;
70
+ }
71
+ finally
72
+ {
73
+ # Cleanup
74
+ # Delete policy
75
+ $pol = Get-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID | Where { $_.Name -match " Archive" }
76
+
77
+ foreach ($policy in $pol ){
78
+ Remove-AzRecoveryServicesBackupProtectionPolicy - VaultId $vault.ID - Policy $policy - Force
79
+ }
80
+ }
81
+ }
82
+
29
83
function Test-AzureVMEnhancedPolicy
30
84
{
31
85
$location = " centraluseuap"
0 commit comments