Skip to content

Commit 8efcd2a

Browse files
authored
Added ExpiryTime, AFS Job, AFS restore changes (Azure#22479)
Added test cases
1 parent f69fe2a commit 8efcd2a

File tree

13 files changed

+1799
-7946
lines changed

13 files changed

+1799
-7946
lines changed

src/RecoveryServices/RecoveryServices.Backup.Helpers/Conversions/JobConversions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,9 @@ private static CmdletModel.JobBase GetPSAzureFileShareJob(JobResource serviceCli
430430
response.Duration = GetJobDuration(fileShareJob.Duration);
431431
response.Status = fileShareJob.Status;
432432
response.WorkloadName = fileShareJob.EntityFriendlyName;
433-
response.ActivityId = fileShareJob.ActivityId;
433+
response.ActivityId = fileShareJob.ActivityId;
434+
response.StorageAccountName = fileShareJob.StorageAccountName;
435+
434436
response.BackupManagementType =
435437
CmdletModel.ConversionUtils.GetPsBackupManagementType(fileShareJob.BackupManagementType);
436438
response.Operation = fileShareJob.Operation;

src/RecoveryServices/RecoveryServices.Backup.Models/AzureFileShareModels/AzureFileShareJob.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@ namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models
1919
/// <summary>
2020
/// Represents Azure File Share specific job class.
2121
/// </summary>
22-
public class AzureFileShareJob : AzureJob { }
22+
public class AzureFileShareJob : AzureJob
23+
{
24+
/// <summary>
25+
/// Storage account name for Azure file share.
26+
/// </summary>
27+
public string StorageAccountName { get; set; }
28+
}
2329

2430
/// <summary>
2531
/// Azure File Share specific job details class.

src/RecoveryServices/RecoveryServices.Backup.Providers/Providers/IaasVmPsBackupProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,8 @@ public RestAzureNS.AzureOperationResponse TriggerBackup()
383383
string vaultName = (string)ProviderData[VaultParams.VaultName];
384384
string resourceGroupName = (string)ProviderData[VaultParams.ResourceGroupName];
385385
ItemBase item = (ItemBase)ProviderData[ItemParams.Item];
386-
DateTime? expiryDateTime = (DateTime?)ProviderData[ItemParams.ExpiryDateTimeUTC];
386+
// setting the default expiry time of 30 days for AzureVM workload, this doesn't apply to MSSQL workload as the default value for SQL is 45 days.
387+
DateTime? expiryDateTime = (ProviderData[ItemParams.ExpiryDateTimeUTC] != null) ? (DateTime?)ProviderData[ItemParams.ExpiryDateTimeUTC] : DateTime.UtcNow.AddDays(30);
387388
AzureVmItem iaasVmItem = item as AzureVmItem;
388389
BackupRequestResource triggerBackupRequest = new BackupRequestResource();
389390
IaasVMBackupRequest iaasVmBackupRequest = new IaasVMBackupRequest();

src/RecoveryServices/RecoveryServices.Backup.ServiceClientAdapter/BMSAPIs/RestoreDiskAPIs.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public RestAzureNS.AzureOperationResponse RestoreDisk(
5050
//validtion block
5151
if (!triggerRestoreRequest.Properties.GetType().IsSubclassOf(typeof(AzureWorkloadRestoreRequest)))
5252
{
53-
if (storageAccountLocation != vaultLocation)
53+
if (storageAccountLocation != vaultLocation && rp.BackupManagementType != Models.BackupManagementType.AzureStorage)
5454
{
5555
throw new Exception(Resources.TriggerRestoreIncorrectRegion);
5656
}
@@ -114,7 +114,7 @@ public RestAzureNS.AzureOperationResponse RestoreDiskSecondryRegion(
114114
//validation block
115115
if (!triggerCRRRestoreRequest.RestoreRequest.GetType().IsSubclassOf(typeof(CrrModel.AzureWorkloadRestoreRequest)))
116116
{
117-
if (storageAccountLocation != secondaryRegion)
117+
if (storageAccountLocation != secondaryRegion && rp.BackupManagementType != Models.BackupManagementType.AzureStorage)
118118
{
119119
throw new Exception(Resources.TriggerRestoreIncorrectRegion);
120120
}

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureFiles/ItemTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,17 @@ public void TestAzureFSFullRestore()
8383
"Test-AzureFSFullRestore"
8484
);
8585
}
86+
87+
[Fact]
88+
[Trait(Category.AcceptanceType, Category.CheckIn)]
89+
[Trait(TestConstants.Workload, TestConstants.AzureFS)]
90+
public void TestAzureFSRestoreToAnotherRegion()
91+
{
92+
TestRunner.RunTestScript(
93+
$"Import-Module {_AzureFilescommonModule.AsAbsoluteLocation()}",
94+
$"Import-Module {_AzureFilestestModule.AsAbsoluteLocation()}",
95+
"Test-AzureFSRestoreToAnotherRegion"
96+
);
97+
}
8698
}
8799
}

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureFiles/ItemTests.ps1

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,38 @@ $newPolicyName = "NewAFSBackupPolicy"
5252
# -RetentionPolicy $retentionPolicy `
5353
# -SchedulePolicy $schedulePolicy
5454

55+
function Test-AzureFSRestoreToAnotherRegion
56+
{
57+
# testing AFS restore to different region and resource group than the source
58+
$targetFileShareName = "drfs"
59+
$targetSaName = "afsrestorediffregion2"
60+
61+
try
62+
{
63+
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
64+
$items = Get-AzRecoveryServicesBackupItem -VaultId $vault.ID -BackupManagementType AzureStorage -WorkloadType AzureFiles
65+
66+
$backupJob = Backup-Item $vault $items[0]
67+
68+
$backupStartTime = $backupJob.StartTime.AddMinutes(-1);
69+
$backupEndTime = $backupJob.EndTime.AddMinutes(1);
70+
71+
$rp = Get-AzRecoveryServicesBackupRecoveryPoint `
72+
-VaultId $vault.ID `
73+
-StartDate $backupStartTime `
74+
-EndDate $backupEndTime `
75+
-Item $items[0];
76+
77+
$restoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -ResolveConflict Overwrite -VaultId $vault.ID -VaultLocation $vault.Location -TargetStorageAccountName $targetSaName -TargetFileShareName $targetFileShareName | Wait-AzRecoveryServicesBackupJob -VaultId $vault.ID
78+
79+
Assert-True { $restoreJob.Status -eq "Completed" }
80+
}
81+
finally
82+
{
83+
# no cleanup
84+
}
85+
}
86+
5587
function Test-AzureFSItem
5688
{
5789
try

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureFiles/JobTests.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ function Test-AzureFSGetJob
6262
$jobDetails2 = Get-AzRecoveryServicesBackupJobDetail -VaultId $vault.ID -JobId $job.JobId
6363

6464
Assert-AreEqual $jobDetails.JobId $job.JobId
65+
# validation for StorageAccountName filed in job response
66+
Assert-AreEqual $jobDetails.StorageAccountName $saName
67+
6568
Assert-AreEqual $jobDetails2.JobId $job.JobId
69+
Assert-AreEqual $jobDetails2.StorageAccountName $saName
6670
}
6771

6872
$container = Get-AzRecoveryServicesBackupContainer `

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureWorkload/ItemTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void TestAzureVmWorkloadEnableAutoProtectableItem()
7474
);
7575
}
7676

77-
[Fact(Skip = "To be fixed in upcoming release")]
77+
[Fact]
7878
[Trait(Category.AcceptanceType, Category.CheckIn)]
7979
[Trait(TestConstants.Workload, TestConstants.AzureVmWorkload)]
8080
public void TestAzureVmWorkloadBackupProtectionItem()

src/RecoveryServices/RecoveryServices.Backup.Test/ScenarioTests/AzureWorkload/ItemTests.ps1

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -327,33 +327,26 @@ function Test-AzureVmWorkloadEnableAutoProtectableItem
327327

328328
function Test-AzureVmWorkloadBackupProtectionItem
329329
{
330+
$resourceGroupName = "hiagarg"
331+
$vaultName = "hiagaVault"
332+
$sourceDBName = "master"
333+
330334
try
331-
{
335+
{
336+
# test trigger adhoc backup
332337
$vault = Get-AzRecoveryServicesVault -ResourceGroupName $resourceGroupName -Name $vaultName
333-
$container = Register-AzRecoveryServicesBackupContainer `
334-
-ResourceId $resourceId `
335-
-BackupManagementType AzureWorkload `
336-
-WorkloadType MSSQL `
337-
-VaultId $vault.ID `
338-
-Force
339-
340-
Enable-Protection $vault $container
341-
342-
$item = Get-AzRecoveryServicesBackupItem `
343-
-VaultId $vault.ID `
344-
-Container $container `
345-
-WorkloadType MSSQL;
338+
$item = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $vault.ID | Where-Object { $_.Name -match $sourceDBName }
346339

347340
$backupJob = Backup-AzRecoveryServicesBackupItem `
348341
-VaultId $vault.ID `
349-
-Item $item `
342+
-Item $item[0] `
350343
-BackupType "Full" | Wait-AzRecoveryServicesBackupJob -VaultId $vault.ID
351344

352345
Assert-True { $backupJob.Status -eq "Completed" }
353346
}
354347
finally
355348
{
356-
Cleanup-Vault $vault $item $container
349+
# no cleanup
357350
}
358351
}
359352

0 commit comments

Comments
 (0)