Skip to content

Commit c92f1b2

Browse files
committed
Fixed Azure field binding Azure#2460
1 parent 4b2297f commit c92f1b2

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

docs/CHANGELOG-v1.md

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ See [upgrade notes][1] for helpful information when upgrading from previous vers
2828

2929
## Unreleased
3030

31+
What's changed since v1.30.1:
32+
33+
- Bug fixes:
34+
- Fixed binding of results resourceId and resourceGroupName by @BenrieWhite.
35+
[#2460](https://github.com/Azure/PSRule.Rules.Azure/issues/2460)
36+
3137
## v1.30.1
3238

3339
What's changed since v1.30.0:

src/PSRule.Rules.Azure/Pipeline/Export/ResourceExportVisitor.cs

+12-4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ internal sealed class ResourceExportVisitor
2020
private const string PROPERTY_ZONES = "zones";
2121
private const string PROPERTY_RESOURCES = "resources";
2222
private const string PROPERTY_SUBSCRIPTIONID = "subscriptionId";
23+
private const string PROPERTY_RESOURCEGROUPNAME = "resourceGroupName";
2324
private const string PROPERTY_KIND = "kind";
2425
private const string PROPERTY_SHAREDKEY = "sharedKey";
2526
private const string PROPERTY_NETWORKPROFILE = "networkProfile";
@@ -128,8 +129,8 @@ private async Task<bool> ExpandResource(IResourceExportContext context, JObject
128129

129130
var resourceContext = new ResourceContext(context, tenantId);
130131

131-
// Set the subscription Id.
132-
SetSubscriptionId(resource, resourceId);
132+
// Set subscriptionId and resourceGroupName.
133+
SetResourceIdentifiers(resource, resourceType, resourceId);
133134

134135
// Ignore expand of these.
135136
if (string.Equals(resourceType, TYPE_VISUALSTUDIO_ACCOUNT, StringComparison.OrdinalIgnoreCase))
@@ -181,9 +182,16 @@ private async Task GetProperties(ResourceContext context, JObject resource, stri
181182
resource.Add(PROPERTY_PROPERTIES, properties);
182183
}
183184

184-
private static void SetSubscriptionId(JObject resource, string resourceId)
185+
/// <summary>
186+
/// Set <c>subscriptionId</c> and <c>resourceGroupName</c> on the resource based on the provided <c>resourceId</c>.
187+
/// </summary>
188+
private static void SetResourceIdentifiers(JObject resource, string resourceType, string resourceId)
185189
{
186-
if (ResourceHelper.TrySubscriptionId(resourceId, out var subscriptionId))
190+
if (ResourceHelper.TryResourceGroup(resourceId, out var subscriptionId, out var resourceGroupName) &&
191+
!string.Equals(resourceType, TYPE_RESOURCES_RESOURCEGROUP, StringComparison.OrdinalIgnoreCase))
192+
resource.Add(PROPERTY_RESOURCEGROUPNAME, resourceGroupName);
193+
194+
if (!string.IsNullOrEmpty(subscriptionId))
187195
resource.Add(PROPERTY_SUBSCRIPTIONID, subscriptionId);
188196
}
189197

src/PSRule.Rules.Azure/rules/Config.Rule.yaml

+5-4
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,20 @@ spec:
2121
- ResourceType
2222
- type
2323
field:
24-
resourceId: [ 'ResourceId' ]
25-
subscriptionId: [ 'SubscriptionId' ]
26-
resourceGroupName: [ 'ResourceGroupName' ]
24+
resourceId: [ 'ResourceId', 'id' ]
25+
subscriptionId: [ 'subscriptionId' ]
26+
resourceGroupName: [ 'resourceGroupName' ]
2727
configuration:
2828
AZURE_PARAMETER_FILE_EXPANSION: false
2929
AZURE_PARAMETER_FILE_METADATA_LINK: false
3030
AZURE_BICEP_FILE_EXPANSION: false
3131
AZURE_BICEP_PARAMS_FILE_EXPANSION: false
3232
AZURE_BICEP_MINIMUM_VERSION: '0.4.451'
33-
AZURE_BICEP_CHECK_TOOL: false
33+
AZURE_BICEP_CHECK_TOOL: false
3434

3535
# Configure minimum AKS cluster version
3636
AZURE_AKS_CLUSTER_MINIMUM_VERSION: '1.26.6'
37+
3738
AZURE_DEPLOYMENT_SENSITIVE_PROPERTY_NAMES:
3839
- adminUsername
3940
- administratorLogin

tests/PSRule.Rules.Azure.Tests/ResourceExportVisitorTests.cs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public async Task VisitAsync()
2020
var resource = GetResourceObject("Microsoft.ContainerService/managedClusters");
2121
await visitor.VisitAsync(context, resource);
2222

23+
Assert.Equal("rg-test", resource["resourceGroupName"].Value<string>());
2324
Assert.Equal("ffffffff-ffff-ffff-ffff-ffffffffffff", resource["subscriptionId"].Value<string>());
2425
Assert.Equal("ffffffff-ffff-ffff-ffff-ffffffffffff", resource["tenantId"].Value<string>());
2526
}

0 commit comments

Comments
 (0)