Skip to content

Commit 382d7df

Browse files
committed
Taking CR comments and changing cmdlet names for mapping (storage classification) cmdlet
1 parent 2cc13cf commit 382d7df

File tree

8 files changed

+57
-66
lines changed

8 files changed

+57
-66
lines changed

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Commands.SiteRecovery.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@
170170
<Compile Include="Server\GetAzureSiteRecoveryServer.cs" />
171171
<Compile Include="Storage\Classification\GetAzureSiteRecoveryStorageClassification.cs" />
172172
<Compile Include="Storage\Classification\GetAzureSiteRecoveryStorageClassificationMapping.cs" />
173-
<Compile Include="Storage\Classification\StartAzureSiteRecoveryStorageClassificationMappingJob.cs" />
174-
<Compile Include="Storage\Classification\StartAzureSiteRecoveryStorageClassificationUnmappingJob.cs" />
173+
<Compile Include="Storage\Classification\NewAzureRmSiteRecoveryStorageClassificationMapping.cs" />
174+
<Compile Include="Storage\Classification\RemoveAzureSiteRecoveryStorageClassificationMapping.cs" />
175175
<Compile Include="Utilities\CertUtils.cs" />
176176
<Compile Include="Utilities\Utilities.cs" />
177177
<Compile Include="Vault\RemoveAzureSiteRecoveryVault.cs" />

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Common/PSSiteRecoveryStorageClassificationClient.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,21 +86,23 @@ public Task EnumerateStorageClassificationMappingsAsync(Action<IEnumerable<Stora
8686
}
8787

8888
/// <summary>
89-
/// Starts job for unmapping storage classifications.
89+
/// Starts job for unmapping classifications
9090
/// </summary>
91-
/// <param name="mapping">Classification mapping.</param>
92-
/// <returns>Operation response.</returns>
91+
/// <param name="fabricName">Fabric name name.</param>
92+
/// <param name="storageClassificationName">Storage classification name.</param>
93+
/// <param name="mappingName">Classification mapping name.</param>
94+
/// <returns>Operation result.</returns>
9395
public LongRunningOperationResponse UnmapStorageClassifications(
94-
StorageClassificationMapping mapping)
96+
string fabricName,
97+
string storageClassificationName,
98+
string mappingName)
9599
{
96-
string[] tokens = mapping.Id.UnFormatArmId(
97-
ARMResourceIdPaths.StorageClassificationMappingResourceIdPath);
98100
return this.GetSiteRecoveryClient().StorageClassificationMapping
99101
.BeginUnpairStorageClassification(
100-
tokens[0],
101-
tokens[1],
102-
tokens[2],
103-
this.GetRequestHeaders());
102+
fabricName,
103+
storageClassificationName,
104+
mappingName,
105+
customRequestHeaders: this.GetRequestHeaders());
104106
}
105107

106108
/// <summary>

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Common/SiteRecoveryCmdletBase.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,21 @@ internal PSRecoveryServicesClient RecoveryServicesClient
6161
}
6262
}
6363

64+
/// <summary>
65+
/// Overrides base implementation of Process record.
66+
/// </summary>
67+
protected override void ProcessRecord()
68+
{
69+
try
70+
{
71+
base.ProcessRecord();
72+
}
73+
catch (Exception ex)
74+
{
75+
this.HandleException(ex);
76+
}
77+
}
78+
6479
/// <summary>
6580
/// Exception handler.
6681
/// </summary>

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Properties/Resources.Designer.cs

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

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Properties/Resources.resx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,4 @@ Please provide a storage account with the same location as that of the vault.</v
310310
<data name="SiteRecoveryVaultTypeWillBeDeprecatedSoon" xml:space="preserve">
311311
<value>SiteRecovery vault type will be deprecated soon. Please use RecoveryServices vault type instead.</value>
312312
</data>
313-
<data name="NoClassificationMappingFound" xml:space="preserve">
314-
<value>No storage classification mapping found with Id {0}</value>
315-
</data>
316313
</root>
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using System;
1516
using System.Collections.Generic;
1617
using System.Management.Automation;
1718
using Microsoft.Azure.Management.SiteRecovery.Models;
@@ -21,9 +22,9 @@ namespace Microsoft.Azure.Commands.SiteRecovery
2122
/// <summary>
2223
/// Pairs storage classification
2324
/// </summary>
24-
[Cmdlet(VerbsLifecycle.Start, "AzureRmSiteRecoveryStorageClassificationMappingJob", DefaultParameterSetName = ASRParameterSets.Default)]
25+
[Cmdlet(VerbsCommon.New, "AzureRmSiteRecoveryStorageClassificationMapping", DefaultParameterSetName = ASRParameterSets.Default)]
2526
[OutputType(typeof(IEnumerable<ASRStorageClassification>))]
26-
public class StartAzureSiteRecoveryStorageClassificationMappingJob : SiteRecoveryCmdletBase
27+
public class NewAzureRmSiteRecoveryStorageClassificationMapping : SiteRecoveryCmdletBase
2728
{
2829
#region Parameters
2930

@@ -48,9 +49,10 @@ public class StartAzureSiteRecoveryStorageClassificationMappingJob : SiteRecover
4849
public override void ExecuteCmdlet()
4950
{
5051
string armName = string.Format(
51-
"StrgMap_{0}_{1}",
52+
"StrgMap_{0}_{1}_{2}",
5253
PrimaryStorageClassification.Name,
53-
RecoveryStorageClassification.Name);
54+
RecoveryStorageClassification.Name,
55+
Guid.NewGuid());
5456

5557
var props = new StorageClassificationMappingInputProperties()
5658
{
Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ namespace Microsoft.Azure.Commands.SiteRecovery
2424
// <summary>
2525
/// Pairs storage classification
2626
/// </summary>
27-
[Cmdlet(VerbsLifecycle.Start, "AzureRmSiteRecoveryStorageClassificationUnmappingJob", DefaultParameterSetName = ASRParameterSets.Default)]
27+
[Cmdlet(VerbsCommon.Remove, "AzureRmSiteRecoveryStorageClassificationMapping", DefaultParameterSetName = ASRParameterSets.Default)]
2828
[OutputType(typeof(IEnumerable<ASRStorageClassification>))]
29-
public class StartAzureSiteRecoveryStorageClassificationUnmappingJob : SiteRecoveryCmdletBase
29+
public class RemoveAzureSiteRecoveryStorageClassificationMapping : SiteRecoveryCmdletBase
3030
{
3131
#region Parameters
3232

@@ -43,38 +43,17 @@ public class StartAzureSiteRecoveryStorageClassificationUnmappingJob : SiteRecov
4343
/// </summary>
4444
public override void ExecuteCmdlet()
4545
{
46-
List<StorageClassificationMapping> storageClassificationMappings
47-
= new List<StorageClassificationMapping>();
48-
49-
Task mappingsTask =
50-
RecoveryServicesClient.EnumerateStorageClassificationMappingsAsync((entities) =>
51-
{
52-
storageClassificationMappings.AddRange(entities);
53-
});
54-
55-
Task.WaitAll(mappingsTask);
56-
57-
StorageClassificationMapping selectedMap = storageClassificationMappings
58-
.Where(item =>
59-
item.Id.Equals(StorageClassificationMapping.Id))
60-
.FirstOrDefault();
61-
62-
if (selectedMap == null)
63-
{
64-
throw new ArgumentException(
65-
string.Format(Properties.Resources.NoClassificationMappingFound,
66-
StorageClassificationMapping.Id));
67-
}
68-
else
69-
{
70-
var operationResponse =
71-
RecoveryServicesClient.UnmapStorageClassifications(selectedMap);
72-
JobResponse jobResponse =
73-
RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
74-
PSRecoveryServicesClient.GetJobIdFromReponseLocation(operationResponse.Location));
75-
76-
base.WriteObject(new ASRJob(jobResponse.Job));
77-
}
46+
string[] tokens = StorageClassificationMapping.Id.UnFormatArmId(
47+
ARMResourceIdPaths.StorageClassificationMappingResourceIdPath);
48+
var operationResponse = RecoveryServicesClient.UnmapStorageClassifications(
49+
fabricName: tokens[0],
50+
storageClassificationName: tokens[1],
51+
mappingName: tokens[2]);
52+
JobResponse jobResponse =
53+
RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
54+
PSRecoveryServicesClient.GetJobIdFromReponseLocation(operationResponse.Location));
55+
56+
base.WriteObject(new ASRJob(jobResponse.Job));
7857
}
7958
}
8059
}

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Utilities/Utilities.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,14 +205,19 @@ public static string[] UnFormatArmId(this string data, string format)
205205
List<string> tokens = new List<string>();
206206
string processData = string.Empty;
207207

208+
if (string.IsNullOrEmpty(dataCopy))
209+
{
210+
throw new Exception("Null and empty strings are not valid resource Ids - " + data);
211+
}
212+
208213
// First truncate data string to point from where format string starts.
209214
// We start from 1 index so that if url starts with / we avoid picking the first /.
210215
int firstTokenEnd = format.IndexOf("/", 1);
211216
int matchIndex = dataCopy.ToLower().IndexOf(format.Substring(0, firstTokenEnd).ToLower());
212217

213-
if (matchIndex == -1 || string.IsNullOrEmpty(dataCopy))
218+
if (matchIndex == -1)
214219
{
215-
throw new Exception("Invalid ARM Id - " + data);
220+
throw new Exception("Invalid resource Id - " + data);
216221
}
217222

218223
processData = dataCopy.Substring(matchIndex);
@@ -251,13 +256,13 @@ public static string[] UnFormatArmId(this string data, string format)
251256
}
252257
else
253258
{
254-
throw new Exception("Invalid ARM Id - " + data);
259+
throw new Exception("Invalid resource Id - " + data);
255260
}
256261
}
257262
catch (Exception ex)
258263
{
259264
throw new Exception(
260-
string.Format("Invalid ARM Id - {0}. Exception - {1} ", data, ex));
265+
string.Format("Invalid resource Id - {0}. Exception - {1} ", data, ex));
261266
}
262267
}
263268

0 commit comments

Comments
 (0)