Skip to content

Commit afd68ca

Browse files
Adding support for ShouldProcess in Removal (destructive) cmdlets.
1 parent 38d54f3 commit afd68ca

File tree

6 files changed

+235
-241
lines changed

6 files changed

+235
-241
lines changed

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/Fabrics/RemoveAzureRmSiteRecoveryFabric.cs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace Microsoft.Azure.Commands.SiteRecovery
2525
/// <summary>
2626
/// Creates Azure Site Recovery Policy object in memory.
2727
/// </summary>
28-
[Cmdlet(VerbsCommon.Remove, "AzureRmSiteRecoveryFabric", DefaultParameterSetName = ASRParameterSets.Default)]
28+
[Cmdlet(VerbsCommon.Remove, "AzureRmSiteRecoveryFabric", DefaultParameterSetName = ASRParameterSets.Default, SupportsShouldProcess = true)]
2929
[OutputType(typeof(ASRJob))]
3030
public class RemoveAzureRmSiteRecoveryFabric : SiteRecoveryCmdletBase
3131
{
@@ -53,22 +53,25 @@ public override void ExecuteSiteRecoveryCmdlet()
5353
{
5454
base.ExecuteSiteRecoveryCmdlet();
5555

56-
LongRunningOperationResponse response;
57-
58-
if (!this.Force.IsPresent)
59-
{
60-
response = RecoveryServicesClient.DeleteAzureSiteRecoveryFabric(this.Fabric.Name);
61-
}
62-
else
56+
if (ShouldProcess(this.Fabric.FriendlyName, VerbsCommon.Remove))
6357
{
64-
response = RecoveryServicesClient.PurgeAzureSiteRecoveryFabric(this.Fabric.Name);
65-
}
66-
67-
JobResponse jobResponse =
68-
RecoveryServicesClient
69-
.GetAzureSiteRecoveryJobDetails(PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));
58+
LongRunningOperationResponse response;
7059

71-
WriteObject(new ASRJob(jobResponse.Job));
60+
if (!this.Force.IsPresent)
61+
{
62+
response = RecoveryServicesClient.DeleteAzureSiteRecoveryFabric(this.Fabric.Name);
63+
}
64+
else
65+
{
66+
response = RecoveryServicesClient.PurgeAzureSiteRecoveryFabric(this.Fabric.Name);
67+
}
68+
69+
JobResponse jobResponse =
70+
RecoveryServicesClient
71+
.GetAzureSiteRecoveryJobDetails(PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));
72+
73+
WriteObject(new ASRJob(jobResponse.Job));
74+
}
7275
}
7376
}
7477
}

src/ResourceManager/SiteRecovery/Commands.SiteRecovery/ProtectionContainerMapping/RemoveAzureRmSiteRecoveryProtectionContainerMapping.cs

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace Microsoft.Azure.Commands.SiteRecovery
2323
/// <summary>
2424
/// Adds Azure Site Recovery Policy settings to a Protection Container.
2525
/// </summary>
26-
[Cmdlet(VerbsCommon.Remove, "AzureRmSiteRecoveryProtectionContainerMapping", DefaultParameterSetName = ASRParameterSets.ByObject)]
26+
[Cmdlet(VerbsCommon.Remove, "AzureRmSiteRecoveryProtectionContainerMapping", DefaultParameterSetName = ASRParameterSets.ByObject, SupportsShouldProcess = true)]
2727
[OutputType(typeof(ASRJob))]
2828
public class RemoveAzureRmSiteRecoveryProtectionContainerMapping : SiteRecoveryCmdletBase
2929
{
@@ -52,39 +52,42 @@ public override void ExecuteSiteRecoveryCmdlet()
5252
{
5353
base.ExecuteSiteRecoveryCmdlet();
5454

55-
LongRunningOperationResponse response = null;
56-
57-
if (!this.Force.IsPresent)
55+
if (ShouldProcess(this.ProtectionContainerMapping.Name, VerbsCommon.Remove))
5856
{
59-
RemoveProtectionContainerMappingInputProperties inputProperties = new RemoveProtectionContainerMappingInputProperties()
60-
{
61-
ProviderSpecificInput = new ReplicationProviderContainerUnmappingInput()
62-
};
57+
LongRunningOperationResponse response = null;
6358

64-
RemoveProtectionContainerMappingInput input = new RemoveProtectionContainerMappingInput()
59+
if (!this.Force.IsPresent)
6560
{
66-
Properties = inputProperties
67-
};
61+
RemoveProtectionContainerMappingInputProperties inputProperties = new RemoveProtectionContainerMappingInputProperties()
62+
{
63+
ProviderSpecificInput = new ReplicationProviderContainerUnmappingInput()
64+
};
6865

69-
response = RecoveryServicesClient.UnConfigureProtection(
70-
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationFabrics),
71-
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationProtectionContainers),
72-
this.ProtectionContainerMapping.Name,
73-
input);
74-
}
75-
else
76-
{
77-
response = RecoveryServicesClient.PurgeCloudMapping(
78-
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationFabrics),
79-
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationProtectionContainers),
80-
this.ProtectionContainerMapping.Name);
81-
}
66+
RemoveProtectionContainerMappingInput input = new RemoveProtectionContainerMappingInput()
67+
{
68+
Properties = inputProperties
69+
};
70+
71+
response = RecoveryServicesClient.UnConfigureProtection(
72+
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationFabrics),
73+
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationProtectionContainers),
74+
this.ProtectionContainerMapping.Name,
75+
input);
76+
}
77+
else
78+
{
79+
response = RecoveryServicesClient.PurgeCloudMapping(
80+
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationFabrics),
81+
Utilities.GetValueFromArmId(this.ProtectionContainerMapping.ID, ARMResourceTypeConstants.ReplicationProtectionContainers),
82+
this.ProtectionContainerMapping.Name);
83+
}
8284

83-
JobResponse jobResponse =
84-
RecoveryServicesClient
85-
.GetAzureSiteRecoveryJobDetails(PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));
85+
JobResponse jobResponse =
86+
RecoveryServicesClient
87+
.GetAzureSiteRecoveryJobDetails(PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));
8688

87-
this.WriteObject(new ASRJob(jobResponse.Job));
89+
this.WriteObject(new ASRJob(jobResponse.Job));
90+
}
8891
}
8992
}
9093
}

0 commit comments

Comments
 (0)