Skip to content

Commit 50c3fc7

Browse files
committed
Merge pull request #1142 from shuagarw/release-1.0.0-preview
Role commands bugbash fixes
2 parents 4b17c27 + 5ee69cc commit 50c3fc7

File tree

4 files changed

+45
-6
lines changed

4 files changed

+45
-6
lines changed

src/ResourceManager/Resources/Commands.Resources/Models.ActiveDirectory/ParameterSet.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ internal static class ParameterSet
7070

7171
public const string RoleDefinitionName = "RoleDefinitionNameParameterSet";
7272

73+
public const string RoleDefinitionId = "RoleDefinitionIdParameterSet";
74+
7375
public const string RoleIdWithScopeAndObjectId = "RoleIdWithScopeAndObjectIdParameterSet";
7476

7577
public const string RoleDefinitionCustom = "RoleDefinitionCustomParameterSet";

src/ResourceManager/Resources/Commands.Resources/Models.Authorization/AuthorizationClient.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ public PSRoleAssignment CreateRoleAssignment(FilterRoleAssignmentsOptions parame
133133
Guid principalId = ActiveDirectoryClient.GetObjectId(parameters.ADObjectFilter);
134134
Guid roleAssignmentId = RoleAssignmentNames.Count == 0 ? Guid.NewGuid() : RoleAssignmentNames.Dequeue();
135135
string roleDefinitionId = !string.IsNullOrEmpty(parameters.RoleDefinitionName)
136-
? GetRoleRoleDefinition(parameters.RoleDefinitionName).Id
136+
? AuthorizationHelper.GetRoleDefinitionFullyQualifiedId(subscriptionId, GetRoleRoleDefinition(parameters.RoleDefinitionName).Id)
137137
: parameters.RoleDefinitionId;
138138

139139
RoleAssignmentCreateParameters createParameters = new RoleAssignmentCreateParameters
140140
{
141141
Properties = new RoleAssignmentProperties
142142
{
143143
PrincipalId = principalId,
144-
RoleDefinitionId = AuthorizationHelper.GetRoleDefinitionFullyQualifiedId(subscriptionId, roleDefinitionId)
144+
RoleDefinitionId = roleDefinitionId
145145
}
146146
};
147147

@@ -315,14 +315,24 @@ public PSRoleDefinition RemoveRoleDefinition(Guid roleDefinitionId, string subsc
315315
PSRoleDefinition roleDefinition = this.GetRoleDefinition(roleDefinitionId);
316316
if (roleDefinition != null)
317317
{
318-
AuthorizationManagementClient.RoleDefinitions.Delete(roleDefinitionFullyQualifiedId);
318+
return AuthorizationManagementClient.RoleDefinitions.Delete(roleDefinitionFullyQualifiedId).RoleDefinition.ToPSRoleDefinition();
319319
}
320320
else
321321
{
322322
throw new KeyNotFoundException(string.Format(ProjectResources.RoleDefinitionWithIdNotFound, id));
323323
}
324+
}
324325

325-
return roleDefinition;
326+
/// <summary>
327+
/// Deletes a role definition based on the name.
328+
/// </summary>
329+
/// <param name="roleDefinitionName">The role definition name.</param>
330+
/// <returns>The deleted role definition.</returns>
331+
public PSRoleDefinition RemoveRoleDefinition(string roleDefinitionName, string subscriptionId)
332+
{
333+
PSRoleDefinition roleDefinition = this.GetRoleRoleDefinition(roleDefinitionName);
334+
string roleDefinitionFullyQualifiedId = AuthorizationHelper.GetRoleDefinitionFullyQualifiedId(subscriptionId, roleDefinition.Id);
335+
return AuthorizationManagementClient.RoleDefinitions.Delete(roleDefinitionFullyQualifiedId).RoleDefinition.ToPSRoleDefinition();
326336
}
327337

328338
/// <summary>

src/ResourceManager/Resources/Commands.Resources/RoleDefinitions/GetAzureRoleDefinitionCommand.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Azure.Commands.Resources.Models;
1616
using Microsoft.Azure.Commands.Resources.Models.ActiveDirectory;
1717
using Microsoft.Azure.Commands.Resources.Models.Authorization;
18+
using System;
1819
using System.Collections.Generic;
1920
using System.Management.Automation;
2021

@@ -31,6 +32,11 @@ public class GetAzureRoleDefinitionCommand : ResourcesBaseCmdlet
3132
[ValidateNotNullOrEmpty]
3233
public string Name { get; set; }
3334

35+
[Parameter(Position = 0, Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ParameterSet.RoleDefinitionId,
36+
HelpMessage = "Role definition id.")]
37+
[ValidateNotNullOrEmpty]
38+
public Guid Id { get; set; }
39+
3440
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ParameterSet.RoleDefinitionCustom,
3541
HelpMessage = "If specified, only displays the custom created roles in the directory.")]
3642
public SwitchParameter Custom { get; set; }
@@ -41,6 +47,10 @@ protected override void ProcessRecord()
4147
{
4248
WriteObject(PoliciesClient.FilterRoleDefinitionsByCustom(), enumerateCollection: true);
4349
}
50+
else if (Id != Guid.Empty)
51+
{
52+
WriteObject(PoliciesClient.GetRoleDefinition(Id));
53+
}
4454
else
4555
{
4656
WriteObject(PoliciesClient.FilterRoleDefinitions(Name), enumerateCollection: true);

src/ResourceManager/Resources/Commands.Resources/RoleDefinitions/RemoveAzureRoleDefinitionCommand.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
using System.Management.Automation;
1616
using Microsoft.Azure.Commands.Resources.Models;
17+
using Microsoft.Azure.Commands.Resources.Models.ActiveDirectory;
1718
using Microsoft.Azure.Commands.Resources.Models.Authorization;
1819
using ProjectResources = Microsoft.Azure.Commands.Resources.Properties.Resources;
1920
using System;
@@ -26,10 +27,16 @@ namespace Microsoft.Azure.Commands.Resources
2627
[Cmdlet(VerbsCommon.Remove, "AzureRmRoleDefinition"), OutputType(typeof(bool))]
2728
public class RemoveAzureRoleDefinitionCommand : ResourcesBaseCmdlet
2829
{
30+
[Parameter(Position = 0, Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ParameterSet.RoleDefinitionId,
31+
HelpMessage = "Role definition id")]
2932
[ValidateNotNullOrEmpty]
30-
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, HelpMessage = "Role definition id.")]
3133
public Guid Id { get; set; }
3234

35+
[Parameter(Position = 0, Mandatory = false, ValueFromPipelineByPropertyName = true, ParameterSetName = ParameterSet.RoleDefinitionName,
36+
HelpMessage = "Role definition name. For e.g. Reader, Contributor, Virtual Machine Contributor.")]
37+
[ValidateNotNullOrEmpty]
38+
public string Name { get; set; }
39+
3340
[Parameter(Mandatory = false)]
3441
public SwitchParameter Force { get; set; }
3542

@@ -39,13 +46,23 @@ public class RemoveAzureRoleDefinitionCommand : ResourcesBaseCmdlet
3946
protected override void ProcessRecord()
4047
{
4148
PSRoleDefinition roleDefinition = null;
49+
Action action = null;
50+
51+
if(Id != Guid.Empty)
52+
{
53+
action = (() => roleDefinition = PoliciesClient.RemoveRoleDefinition(Id, DefaultProfile.Context.Subscription.Id.ToString()));
54+
}
55+
else
56+
{
57+
action = (() => roleDefinition = PoliciesClient.RemoveRoleDefinition(Name, DefaultProfile.Context.Subscription.Id.ToString()));
58+
}
4259

4360
ConfirmAction(
4461
Force.IsPresent,
4562
string.Format(ProjectResources.RemoveRoleDefinition, Id),
4663
ProjectResources.RemoveRoleDefinition,
4764
Id.ToString(),
48-
() => roleDefinition = PoliciesClient.RemoveRoleDefinition(Id, DefaultProfile.Context.Subscription.Id.ToString()));
65+
action);
4966

5067
if (PassThru)
5168
{

0 commit comments

Comments
 (0)