Skip to content

Commit 8af7854

Browse files
committed
Enable Protection Validation and TBDs implementation Part 3
1 parent 7bfeaea commit 8af7854

File tree

5 files changed

+64
-9
lines changed

5 files changed

+64
-9
lines changed

src/ResourceManager/RecoveryServices.Backup/Cmdlets/Item/EnableAzureRmRecoveryServicesProtection.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
using System.Management.Automation;
2121
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models;
2222
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.ProviderModel;
23+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Properties;
2324
using Microsoft.Azure.Commands.RecoveryServices.Backup.Helpers;
2425
using HydraModel = Microsoft.Azure.Management.RecoveryServices.Backup.Models;
2526

27+
2628
namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets
2729
{
2830
/// <summary>
@@ -82,12 +84,7 @@ public override void ExecuteCmdlet()
8284
// Track Response and display job details
8385
// -- TBD to move it to common helper and remove hard-coded vaules
8486

85-
var response = HydraAdapter.GetProtectedItemOperationStatusByURL(jobResponse.AzureAsyncOperation);
86-
while (response.OperationStatus.Status == HydraModel.OperationStatusValues.InProgress)
87-
{
88-
response = HydraAdapter.GetProtectedItemOperationStatusByURL(jobResponse.AzureAsyncOperation);
89-
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5));
90-
}
87+
var response = OperationStatusHelper.TrackOperationStatus(jobResponse, HydraAdapter);
9188

9289
if (response.OperationStatus.Status == HydraModel.OperationStatusValues.Succeeded)
9390
{
@@ -106,9 +103,9 @@ public override void ExecuteCmdlet()
106103
WriteObject(JobConversions.GetPSJob(job));
107104
}
108105

109-
var errorMessage(string.Format("Operation failed with error code and error message",
110-
response.OperationStatus.OperationStatusError,
111-
response.OperationStatus.OperationStatusError));
106+
var errorMessage = string.Format(Resources.EnableProtectionOperationFailed,
107+
response.OperationStatus.OperationStatusError.Code,
108+
response.OperationStatus.OperationStatusError.Message);
112109

113110
throw new Exception(errorMessage);
114111
}

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Helpers/Commands.RecoveryServices.Backup.Helpers.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<ItemGroup>
5252
<Compile Include="Conversions\JobConversions.cs" />
5353
<Compile Include="Conversions\RecoveryPointConversions.cs" />
54+
<Compile Include="OperationStatusHelper.cs" />
5455
<Compile Include="Utils.cs" />
5556
<Compile Include="Validations\PolicyValidations.cs" />
5657
<Compile Include="Conversions\SchedulePolicyConversions.cs" />
@@ -64,6 +65,10 @@
6465
<Project>{5ee72c53-1720-4309-b54b-5fb79703195f}</Project>
6566
<Name>Commands.Common</Name>
6667
</ProjectReference>
68+
<ProjectReference Include="Commands.RecoveryServices.Backup.HydraAdapter\Commands.RecoveryServices.Backup.HydraAdapter.csproj">
69+
<Project>{b758fec1-35c1-4f93-a954-66dd33f6e0ec}</Project>
70+
<Name>Commands.RecoveryServices.Backup.HydraAdapter</Name>
71+
</ProjectReference>
6772
<ProjectReference Include="..\Commands.RecoveryServices.Backup.Logger\Commands.RecoveryServices.Backup.Logger.csproj">
6873
<Project>{5e675749-6139-464a-904c-59c0ffdfec82}</Project>
6974
<Name>Commands.RecoveryServices.Backup.Logger</Name>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using System;
16+
using System.Collections.Specialized;
17+
using System.Web;
18+
using CmdletModel = Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models;
19+
using HydraModel = Microsoft.Azure.Management.RecoveryServices.Backup.Models;
20+
using Microsoft.Azure.Management.RecoveryServices.Backup.Models;
21+
using Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.HydraAdapter;
22+
23+
namespace Microsoft.Azure.Commands.RecoveryServices.Backup.Helpers
24+
{
25+
public class OperationStatusHelper
26+
{
27+
public const double defaultOperationStatusRetryTimeInSec = 5.0;
28+
29+
public static BackUpOperationStatusResponse TrackOperationStatus(BaseRecoveryServicesJobResponse jobResponse, HydraAdapter hydraAdapter)
30+
{
31+
var response = hydraAdapter.GetProtectedItemOperationStatusByURL(jobResponse.AzureAsyncOperation);
32+
while (response.OperationStatus.Status == HydraModel.OperationStatusValues.InProgress)
33+
{
34+
response = hydraAdapter.GetProtectedItemOperationStatusByURL(jobResponse.AzureAsyncOperation);
35+
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(defaultOperationStatusRetryTimeInSec));
36+
}
37+
38+
return response;
39+
}
40+
}
41+
}

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Models/Properties/Resources.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ResourceManager/RecoveryServices.Backup/Commands.RecoveryServices.Backup.Models/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,4 +323,7 @@ Please contact Microsoft for further assistant.</value>
323323
<data name="BothCloudServiceNameAndResourceGroupNameShouldNotEmpty" xml:space="preserve">
324324
<value>For Azure VM, both cloud service name and resource group name can not be empty</value>
325325
</data>
326+
<data name="EnableProtectionOperationFailed" xml:space="preserve">
327+
<value>Enable Protection OperationFailed with error code {0} , and error Message {1}</value>
328+
</data>
326329
</root>

0 commit comments

Comments
 (0)