Skip to content

Commit a318179

Browse files
committed
Addressed PR comments
1 parent 06dc57b commit a318179

34 files changed

+7650
-7437
lines changed

src/Resources/ResourceManager/Entities/Policy/EnforcementMode.cs renamed to src/Resources/ResourceManager/Entities/Policy/PolicyAssignmentEnforcementMode.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515
namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Entities.Policy
1616
{
1717
/// <summary>
18-
/// The policy definition mode.
18+
/// The policy assignment enforcement mode.
1919
/// </summary>
20-
public class EnforcementMode
20+
public enum PolicyAssignmentEnforcementMode
2121
{
2222
/// <summary>
2323
/// The policy effect is enforced during resource creation or update.
2424
/// </summary>
25-
public const string Default = "Default";
25+
Default,
2626

2727
/// <summary>
2828
/// The policy effect is not enforced during resource creation or update.
2929
/// </summary>
30-
public const string DoNotEnforce = "DoNotEnforce";
30+
DoNotEnforce
3131
}
3232
}

src/Resources/ResourceManager/Entities/Policy/PolicyAssignmentProperties.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public class PolicyAssignmentProperties
5656
/// The policy assignment enforcement mode.
5757
/// </summary>
5858
[JsonProperty(Required = Required.Default)]
59-
public string EnforcementMode { get; set; }
59+
public PolicyAssignmentEnforcementMode? EnforcementMode { get; set; }
6060

6161
/// <summary>
6262
/// The policy definition id.

src/Resources/ResourceManager/Implementation/Policy/NewAzurePolicyAssignment.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,9 @@ public class NewAzurePolicyAssignmentCmdlet : PolicyCmdletBase, IDynamicParamete
111111
/// <summary>
112112
/// Gets or sets the policy assignment enforcement mode.
113113
/// </summary>
114-
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = PolicyHelpStrings.NewPolicyAssignmentEnforcementModeHelp)]
115-
[PSArgumentCompleter(Entities.Policy.EnforcementMode.Default, Entities.Policy.EnforcementMode.DoNotEnforce)]
114+
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = PolicyHelpStrings.NewPolicyAssignmentEnforcementModeHelp)]
116115
[ValidateNotNullOrEmpty]
117-
public string EnforcementMode { get; set; }
116+
public PolicyAssignmentEnforcementMode? EnforcementMode { get; set; }
118117

119118
/// <summary>
120119
/// Gets or sets a flag indicating whether a system assigned identity should be added to the policy assignment.
@@ -201,7 +200,7 @@ private JToken GetResource()
201200
Scope = this.Scope,
202201
NotScopes = this.NotScope ?? null,
203202
Metadata = this.Metadata == null ? null : JObject.Parse(this.GetObjectFromParameter(this.Metadata).ToString()),
204-
EnforcementMode = this.EnforcementMode ?? null,
203+
EnforcementMode = EnforcementMode ?? PolicyAssignmentEnforcementMode.Default,
205204
Parameters = this.GetParameters(this.PolicyParameter, this.PolicyParameterObject)
206205
}
207206
};

src/Resources/ResourceManager/Implementation/Policy/SetAzurePolicyAssignment.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using System;
16+
1517
namespace Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation
1618
{
1719
using Microsoft.Azure.Commands.ResourceManager.Cmdlets.Components;
@@ -118,9 +120,8 @@ public class SetAzurePolicyAssignmentCmdlet : PolicyCmdletBase
118120
/// Gets or sets the policy assignment enforcement mode.
119121
/// </summary>
120122
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = PolicyHelpStrings.NewPolicyAssignmentEnforcementModeHelp)]
121-
[PSArgumentCompleter(Entities.Policy.EnforcementMode.Default, Entities.Policy.EnforcementMode.DoNotEnforce)]
122123
[ValidateNotNullOrEmpty]
123-
public string EnforcementMode { get; set; }
124+
public PolicyAssignmentEnforcementMode? EnforcementMode { get; set; }
124125

125126
/// <summary>
126127
/// Executes the cmdlet.
@@ -162,6 +163,12 @@ private JToken GetResource(string resourceId, string apiVersion)
162163

163164
var metaDataJson = string.IsNullOrEmpty(this.Metadata) ? resource.Properties["metadata"]?.ToString() : GetObjectFromParameter(this.Metadata).ToString();
164165

166+
PolicyAssignmentEnforcementMode? existingMode = null;
167+
if (Enum.TryParse(resource.Properties["enforcementMode"]?.ToString(), true, out PolicyAssignmentEnforcementMode tempMode))
168+
{
169+
existingMode = tempMode;
170+
}
171+
165172
var policyAssignmentObject = new PolicyAssignment
166173
{
167174
Name = this.Name ?? resource.Name,
@@ -175,7 +182,7 @@ private JToken GetResource(string resourceId, string apiVersion)
175182
NotScopes = this.NotScope ?? resource.Properties["NotScopes"]?.ToString().Split(','),
176183
PolicyDefinitionId = resource.Properties["policyDefinitionId"].ToString(),
177184
Metadata = string.IsNullOrEmpty(this.Metadata) ? null : JObject.Parse(metaDataJson),
178-
EnforcementMode = this.EnforcementMode ?? resource.Properties["enforcementMode"]?.ToString(),
185+
EnforcementMode = this.EnforcementMode ?? existingMode,
179186
Parameters = this.GetParameters(this.PolicyParameter, this.PolicyParameterObject) ?? (JObject)resource.Properties["parameters"]
180187
}
181188
};

src/Resources/Resources.Test/ScenarioTests/PolicyTests.ps1

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,32 +432,42 @@ function Test-PolicyAssignmentEnforcementMode
432432
$policy = New-AzPolicyDefinition -Name $policyName -Policy "$TestOutputRoot\SamplePolicyDefinition.json" -Description $description
433433

434434
# assign the policy definition to the resource group, get the assignment back and validate
435-
$actual = New-AzPolicyAssignment -Name testPA -PolicyDefinition $policy -Scope $rg.ResourceId -Description $description -Location $location -EnforcementMode $enforcementModeDoNotEnforce
435+
$actual = New-AzPolicyAssignment -Name testPA -PolicyDefinition $policy -Scope $rg.ResourceId -Description $description -Location $location -EnforcementMode DoNotEnforce
436436
$expected = Get-AzPolicyAssignment -Name testPA -Scope $rg.ResourceId
437437
Assert-AreEqual $expected.Name $actual.Name
438438
Assert-AreEqual Microsoft.Authorization/policyAssignments $actual.ResourceType
439439
Assert-AreEqual $expected.PolicyAssignmentId $actual.PolicyAssignmentId
440440
Assert-AreEqual $expected.Properties.PolicyDefinitionId $policy.PolicyDefinitionId
441441
Assert-AreEqual $expected.Properties.Scope $rg.ResourceId
442-
Assert-AreEqual $expected.Properties.EnforcementMode $actual.Properties.EnforcementMode
442+
Assert-AreEqual $expected.Properties.EnforcementMode $actual.Properties.EnforcementMode
443+
Assert-AreEqual $expected.Properties.EnforcementMode $enforcementModeDoNotEnforce
443444
Assert-AreEqual $location $actual.Location
444445
Assert-AreEqual $expected.Location $actual.Location
445446

446447
# get it back by id and validate
447448
$actualById = Get-AzPolicyAssignment -Id $actual.ResourceId
448449
Assert-AreEqual $actual.Properties.EnforcementMode $actualById.Properties.EnforcementMode
449450

450-
# update the policy assignment, validate enforcement mode is updated correctly.
451-
$setResult = Set-AzPolicyAssignment -Id $actualById.ResourceId -DisplayName "testDisplay" -EnforcementMode $enforcementModeDefault
451+
# update the policy assignment, validate enforcement mode is updated correctly with Default enum value.
452+
$setResult = Set-AzPolicyAssignment -Id $actualById.ResourceId -DisplayName "testDisplay" -EnforcementMode Default
452453
Assert-AreEqual "testDisplay" $setResult.Properties.DisplayName
453454
Assert-AreEqual $enforcementModeDefault $setResult.Properties.EnforcementMode
454455

456+
# update the policy assignment, validate enforcement mode is updated correctly with 'Default' enum as string value.
457+
$setResult = Set-AzPolicyAssignment -Id $actualById.ResourceId -DisplayName "testDisplay" -EnforcementMode $enforcementModeDefault
458+
Assert-AreEqual "testDisplay" $setResult.Properties.DisplayName
459+
Assert-AreEqual $enforcementModeDefault $setResult.Properties.EnforcementMode
460+
455461
# make another policy assignment without an enforcementMode, validate default mode is set
456462
$withoutEnforcementMode = New-AzPolicyAssignment -Name test2 -Scope $rg.ResourceId -PolicyDefinition $policy -Description $description
457463
Assert-AreEqual $enforcementModeDefault $withoutEnforcementMode.Properties.EnforcementMode
458464

459465
# set an enforcement mode to the new assignment using the SET cmdlet
460466
$setResult = Set-AzPolicyAssignment -Id $withoutEnforcementMode.ResourceId -Location $location -EnforcementMode $enforcementModeDoNotEnforce
467+
Assert-AreEqual $enforcementModeDoNotEnforce $setResult.Properties.EnforcementMode
468+
469+
# set an enforcement mode to the new assignment using the SET cmdlet enum value and validate
470+
$setResult = Set-AzPolicyAssignment -Id $withoutEnforcementMode.ResourceId -Location $location -EnforcementMode DoNotEnforce
461471
Assert-AreEqual $enforcementModeDoNotEnforce $setResult.Properties.EnforcementMode
462472

463473
# verify enforcement mode is returned in collection GET

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.PolicyTests/TestGetBuiltinsByName.json

Lines changed: 4725 additions & 4850 deletions
Large diffs are not rendered by default.

src/Resources/Resources.Test/SessionRecords/Microsoft.Azure.Commands.Resources.Test.ScenarioTests.PolicyTests/TestGetCmdletFilterParameter.json

Lines changed: 42 additions & 42 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)