Skip to content

Commit 015599e

Browse files
author
Sambit Rath
committed
initial commit for restore as files
1 parent 0fc850b commit 015599e

File tree

9 files changed

+83
-8
lines changed

9 files changed

+83
-8
lines changed

src/RecoveryServices/RecoveryServices.Backup.Helpers/RecoveryServices.Backup.Helpers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
15+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1616
<PackageReference Include="TimeZoneConverter" Version="3.0.0" />
1717
</ItemGroup>
1818

src/RecoveryServices/RecoveryServices.Backup.Models/BaseObjects.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,16 @@ public class RecoveryConfigBase
504504
/// </summary>
505505
public DateTime PointInTime { get; }
506506

507+
/// <summary>
508+
/// Recovery Mode
509+
/// </summary>
510+
public string RecoveryMode { get; set; }
511+
512+
/// <summary>
513+
/// File path for Restore as Files
514+
/// </summary>
515+
public string FilePath { get; set; }
516+
507517
public RecoveryConfigBase(string restoreRequestType, RecoveryPointBase recoveryPoint, DateTime pointInTime)
508518
{
509519
RestoreRequestType = restoreRequestType;

src/RecoveryServices/RecoveryServices.Backup.Models/RecoveryServices.Backup.Models.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
15+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1616
</ItemGroup>
1717

1818
</Project>

src/RecoveryServices/RecoveryServices.Backup.Providers/Providers/AzureWorkloadPsBackupProvider.cs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public RestAzureNS.AzureOperationResponse TriggerRestore()
390390
azureWorkloadSQLRestoreRequest.RecoveryType =
391391
string.Compare(wLRecoveryConfig.RestoreRequestType, "Original WL Restore") == 0 ?
392392
RecoveryType.OriginalLocation : RecoveryType.AlternateLocation;
393-
if (azureWorkloadSQLRestoreRequest.RecoveryType == RecoveryType.AlternateLocation)
393+
if (azureWorkloadSQLRestoreRequest.RecoveryType == RecoveryType.AlternateLocation && wLRecoveryConfig.RecoveryMode == "FileRecovery")
394394
{
395395
azureWorkloadSQLRestoreRequest.TargetInfo = new TargetRestoreInfo()
396396
{
@@ -401,6 +401,16 @@ public RestAzureNS.AzureOperationResponse TriggerRestore()
401401
};
402402
azureWorkloadSQLRestoreRequest.AlternateDirectoryPaths = wLRecoveryConfig.targetPhysicalPath;
403403
}
404+
if (wLRecoveryConfig.RecoveryMode == "FileRecovery")
405+
{
406+
azureWorkloadSQLRestoreRequest.TargetInfo = new TargetRestoreInfo()
407+
{
408+
OverwriteOption = string.Compare(wLRecoveryConfig.OverwriteWLIfpresent, "No") == 0 ?
409+
OverwriteOptions.FailOnConflict : OverwriteOptions.Overwrite,
410+
ContainerId = wLRecoveryConfig.ContainerId,
411+
TargetDirectoryForFileRestore = wLRecoveryConfig.FilePath
412+
};
413+
}
404414
triggerRestoreRequest.Properties = azureWorkloadSQLRestoreRequest;
405415
}
406416
else
@@ -416,7 +426,7 @@ public RestAzureNS.AzureOperationResponse TriggerRestore()
416426
azureWorkloadSQLPointInTimeRestoreRequest.RecoveryType =
417427
string.Compare(wLRecoveryConfig.RestoreRequestType, "Original WL Restore") == 0 ?
418428
RecoveryType.OriginalLocation : RecoveryType.AlternateLocation;
419-
if (azureWorkloadSQLPointInTimeRestoreRequest.RecoveryType == RecoveryType.AlternateLocation)
429+
if (azureWorkloadSQLPointInTimeRestoreRequest.RecoveryType == RecoveryType.AlternateLocation && wLRecoveryConfig.RecoveryMode == "FileRecovery")
420430
{
421431
azureWorkloadSQLPointInTimeRestoreRequest.TargetInfo = new TargetRestoreInfo()
422432
{
@@ -427,6 +437,18 @@ public RestAzureNS.AzureOperationResponse TriggerRestore()
427437
};
428438
azureWorkloadSQLPointInTimeRestoreRequest.AlternateDirectoryPaths = wLRecoveryConfig.targetPhysicalPath;
429439
}
440+
441+
if (wLRecoveryConfig.RecoveryMode == "FileRecovery")
442+
{
443+
azureWorkloadSQLPointInTimeRestoreRequest.TargetInfo = new TargetRestoreInfo()
444+
{
445+
OverwriteOption = string.Compare(wLRecoveryConfig.OverwriteWLIfpresent, "No") == 0 ?
446+
OverwriteOptions.FailOnConflict : OverwriteOptions.Overwrite,
447+
ContainerId = wLRecoveryConfig.ContainerId,
448+
TargetDirectoryForFileRestore = wLRecoveryConfig.FilePath
449+
};
450+
}
451+
430452
azureWorkloadSQLPointInTimeRestoreRequest.PointInTime = wLRecoveryConfig.PointInTime;
431453
triggerRestoreRequest.Properties = azureWorkloadSQLPointInTimeRestoreRequest;
432454
}

src/RecoveryServices/RecoveryServices.Backup.Providers/RecoveryServices.Backup.Providers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
15+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1616
</ItemGroup>
1717

1818
<ItemGroup>

src/RecoveryServices/RecoveryServices.Backup.ServiceClientAdapter/RecoveryServices.Backup.ServiceClientAdapter.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<ItemGroup>
1515
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices" Version="4.2.1-preview" />
16-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
16+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1717
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
1818
</ItemGroup>
1919

src/RecoveryServices/RecoveryServices.Backup.Test/RecoveryServices.Backup.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<PackageReference Include="Microsoft.Azure.Management.Compute" Version="31.0.0" />
1515
<PackageReference Include="Microsoft.Azure.Management.Network" Version="19.18.0-preview" />
1616
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices" Version="4.2.1-preview" />
17-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
17+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1818
</ItemGroup>
1919

2020
<ItemGroup>

src/RecoveryServices/RecoveryServices.Backup/Cmdlets/Restore/GetAzureRmRecoveryServicesBackupWorkloadRecoveryConfig.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using Microsoft.Rest.Azure.OData;
2222
using System;
2323
using System.Collections.Generic;
24+
using System.IO;
2425
using System.Linq;
2526
using System.Management.Automation;
2627
using ServiceClientModel = Microsoft.Azure.Management.RecoveryServices.Backup.Models;
@@ -81,6 +82,30 @@ public class GetAzureRmRecoveryServicesBackupWorkloadRecoveryConfig : RSBackupVa
8182
[Parameter(Mandatory = false, HelpMessage = ParamHelpMsgs.RecoveryPointConfig.AlternateWorkloadRestore)]
8283
public SwitchParameter AlternateWorkloadRestore { get; set; }
8384

85+
/// <summary>
86+
/// Target Container to which files will be written
87+
/// </summary>
88+
[Parameter(Mandatory = false)]
89+
public ContainerBase TargetContainer { get; set; }
90+
91+
/// <summary>
92+
/// Use this switch to restore db as files to a given target container
93+
/// </summary>
94+
[Parameter(Mandatory = false)]
95+
public SwitchParameter RestoreAsFiles { get; set; }
96+
97+
/// <summary>
98+
/// Specify Recovery point from which logs will be applies
99+
/// </summary>
100+
[Parameter(Mandatory = false)]
101+
public RecoveryPointBase FromFul { get; set; }
102+
103+
/// <summary>
104+
/// Specify Recovery point from which logs will be applies
105+
/// </summary>
106+
[Parameter(Mandatory = false)]
107+
public string FilePath { get; set; }
108+
84109
public override void ExecuteCmdlet()
85110
{
86111
ExecutionBlock(() =>
@@ -226,6 +251,19 @@ public override void ExecuteCmdlet()
226251
azureWorkloadRecoveryConfig.targetPhysicalPath = targetPhysicalPath;
227252
azureWorkloadRecoveryConfig.ContainerId = GetContainerId(TargetItem.Id);
228253
}
254+
else if (RestoreAsFiles.IsPresent)
255+
{
256+
if(TargetContainer == null)
257+
{
258+
throw new ArgumentNullException("TargetContainer", "TargetContainer can't be null for Restoring as files operation.");
259+
}
260+
261+
azureWorkloadRecoveryConfig.OverwriteWLIfpresent = "No";
262+
azureWorkloadRecoveryConfig.NoRecoveryMode = "Disabled";
263+
azureWorkloadRecoveryConfig.ContainerId = (TargetContainer as AzureVmWorkloadContainer).Id;
264+
azureWorkloadRecoveryConfig.RecoveryMode = "FileRecovery";
265+
azureWorkloadRecoveryConfig.FilePath = FilePath;
266+
}
229267
RecoveryConfigBase baseobj = azureWorkloadRecoveryConfig;
230268
WriteObject(baseobj);
231269
});
@@ -404,6 +442,11 @@ public AzureWorkloadRecoveryConfig GetConfigObject()
404442
};
405443
recoveryPoint = azureWorkloadRecoveryPoint;
406444
}
445+
else if (RestoreAsFiles.IsPresent)
446+
{
447+
restoreRequestType = "Alternate WL Restore";
448+
targetServer = TargetContainer.Name;
449+
}
407450

408451
return new AzureWorkloadRecoveryConfig(targetServer, parentName, restoreRequestType, recoveryPoint, pointInTime);
409452
}

src/RecoveryServices/RecoveryServices.Backup/RecoveryServices.Backup.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.0-preview" />
15+
<PackageReference Include="Microsoft.Azure.Management.RecoveryServices.Backup" Version="4.0.1-preview" />
1616
</ItemGroup>
1717

1818
<ItemGroup>

0 commit comments

Comments
 (0)