Skip to content

Commit c8e17d8

Browse files
authored
emit scope properties on existing resources with symbolic names (#6181)
1 parent 888968e commit c8e17d8

File tree

12 files changed

+109
-26
lines changed

12 files changed

+109
-26
lines changed

src/Bicep.Core.IntegrationTests/ScopeTests.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
using Bicep.Core.Diagnostics;
99
using Bicep.Core.TypeSystem;
1010
using Bicep.Core.Resources;
11+
using Bicep.Core.UnitTests;
12+
using System.Diagnostics.CodeAnalysis;
1113

1214
namespace Bicep.Core.IntegrationTests
1315
{
@@ -19,6 +21,9 @@ public class ScopeTests
1921
private const string ExpectedSubSchema = "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#";
2022
private const string ExpectedRgSchema = "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#";
2123

24+
[NotNull]
25+
public TestContext? TestContext { get; set; }
26+
2227
[DataRow("tenant", "tenant()", "tenant", ExpectedTenantSchema, "[reference(tenantResourceId('Microsoft.Resources/deployments', 'myMod')).outputs.hello.value]", "[tenantResourceId('Microsoft.Resources/deployments', 'myMod')]")]
2328
[DataRow("tenant", "managementGroup('abc')", "managementGroup", ExpectedTenantSchema, "[reference(extensionResourceId(tenantResourceId('Microsoft.Management/managementGroups', 'abc'), 'Microsoft.Resources/deployments', 'myMod')).outputs.hello.value]", "[extensionResourceId(tenantResourceId('Microsoft.Management/managementGroups', 'abc'), 'Microsoft.Resources/deployments', 'myMod')]")]
2429
[DataRow("tenant", "subscription('abc')", "subscription", ExpectedTenantSchema, "[reference(subscriptionResourceId('abc', 'Microsoft.Resources/deployments', 'myMod')).outputs.hello.value]", "[subscriptionResourceId('abc', 'Microsoft.Resources/deployments', 'myMod')]")]
@@ -349,5 +354,43 @@ public void Tenant_scope_resources_can_be_deployed_from_anywhere(string targetSc
349354
}
350355
}
351356
}
357+
358+
[TestMethod]
359+
public void Existing_resource_with_symbolic_names_enabled_includes_scope_properties()
360+
{
361+
var context = new CompilationHelper.CompilationHelperContext(Features: BicepTestConstants.CreateFeaturesProvider(this.TestContext, symbolicNameCodegenEnabled: true));
362+
var (template, diagnostics, _) = CompilationHelper.Compile(context, @"
363+
targetScope = 'subscription'
364+
365+
var accounts = [
366+
{
367+
name: 'majastrzcri'
368+
rg: 'majastrz-cri'
369+
}
370+
{
371+
name: 'majastrzcri2'
372+
rg: 'majastrz-cri2'
373+
}
374+
]
375+
376+
resource storage 'Microsoft.Storage/storageAccounts@2021-08-01' existing = [for account in accounts: {
377+
name: account.name
378+
scope: resourceGroup(account.rg)
379+
}]
380+
381+
#disable-next-line outputs-should-not-contain-secrets
382+
output keys array = [for (account, i) in accounts: storage[i].listKeys().keys[0].value]
383+
output tiers array = [for (account, i) in accounts: storage[i].properties.accessTier]
384+
385+
");
386+
using(new AssertionScope())
387+
{
388+
diagnostics.Should().BeEmpty();
389+
template.Should().NotBeNull();
390+
391+
template.Should().HaveValueAtPath("$.resources.storage.existing", true);
392+
template.Should().HaveValueAtPath("$.resources.storage.resourceGroup", "[variables('accounts')[copyIndex()].rg]");
393+
}
394+
}
352395
}
353396
}

src/Bicep.Core.Samples/Files/Modules_CRLF/main.symbolicnames.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "17982262982198579672"
10+
"templateHash": "10105950490850461524"
1111
}
1212
},
1313
"parameters": {
@@ -95,6 +95,7 @@
9595
"existing": true,
9696
"type": "Microsoft.KeyVault/vaults",
9797
"apiVersion": "2019-09-01",
98+
"resourceGroup": "otherGroup",
9899
"name": "testkeyvault"
99100
},
100101
"loopedKv": {
@@ -105,6 +106,8 @@
105106
"existing": true,
106107
"type": "Microsoft.KeyVault/vaults",
107108
"apiVersion": "2019-09-01",
109+
"subscriptionId": "[variables('vaults')[copyIndex()].vaultSub]",
110+
"resourceGroup": "[variables('vaults')[copyIndex()].vaultRG]",
108111
"name": "[variables('vaults')[copyIndex()].vaultName]"
109112
},
110113
"modATest": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/101/databricks-all-in-one-template-for-vnet-injection/main.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "18417593559327655298"
10+
"templateHash": "7621613489475986772"
1111
}
1212
},
1313
"parameters": {
@@ -101,6 +101,7 @@
101101
"existing": true,
102102
"type": "Microsoft.Resources/resourceGroups",
103103
"apiVersion": "2021-04-01",
104+
"subscriptionId": "[subscription().subscriptionId]",
104105
"name": "[variables('managedResourceGroupName')]"
105106
},
106107
"nsg": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/101/template-spec-deploy/main.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "3214106287326946885"
10+
"templateHash": "2129236952501743137"
1111
}
1212
},
1313
"parameters": {
@@ -31,12 +31,16 @@
3131
"existing": true,
3232
"type": "Microsoft.Resources/templateSpecs/versions",
3333
"apiVersion": "2019-06-01-preview",
34+
"subscriptionId": "[parameters('templateSpecSub')]",
35+
"resourceGroup": "[parameters('templateSpecRg')]",
3436
"name": "[format('{0}/{1}', parameters('templateSpecName'), parameters('templateSpecVersion'))]"
3537
},
3638
"ts": {
3739
"existing": true,
3840
"type": "Microsoft.Resources/templateSpecs",
3941
"apiVersion": "2019-06-01-preview",
42+
"subscriptionId": "[parameters('templateSpecSub')]",
43+
"resourceGroup": "[parameters('templateSpecRg')]",
4044
"name": "[parameters('templateSpecName')]"
4145
},
4246
"deployTs": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/101/website-with-container/main.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "97755062618535923"
10+
"templateHash": "8882781331082655516"
1111
}
1212
},
1313
"parameters": {
@@ -49,6 +49,8 @@
4949
"existing": true,
5050
"type": "Microsoft.ContainerRegistry/registries",
5151
"apiVersion": "2019-05-01",
52+
"subscriptionId": "[parameters('acrSubscription')]",
53+
"resourceGroup": "[parameters('acrResourceGroup')]",
5254
"name": "[parameters('acrName')]"
5355
},
5456
"site": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/301/sql-database-with-management/main.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "4698237609729778047"
10+
"templateHash": "799864613260087717"
1111
}
1212
},
1313
"parameters": {
@@ -61,7 +61,7 @@
6161
"_generator": {
6262
"name": "bicep",
6363
"version": "dev",
64-
"templateHash": "7891355063625276557"
64+
"templateHash": "5674317740980132409"
6565
}
6666
},
6767
"parameters": {
@@ -133,6 +133,8 @@
133133
"existing": true,
134134
"type": "Microsoft.KeyVault/vaults",
135135
"apiVersion": "2021-04-01-preview",
136+
"subscriptionId": "[union(variables('defaultSqlLogicalServerProperties'), parameters('sqlLogicalServers')[copyIndex()]).passwordFromKeyVault.subscriptionId]",
137+
"resourceGroup": "[parameters('sqlLogicalServers')[copyIndex()].passwordFromKeyVault.resourceGroupName]",
136138
"name": "[parameters('sqlLogicalServers')[copyIndex()].passwordFromKeyVault.name]"
137139
},
138140
"sqlLogicalServer": {
@@ -173,7 +175,7 @@
173175
"_generator": {
174176
"name": "bicep",
175177
"version": "dev",
176-
"templateHash": "11627375028675542139"
178+
"templateHash": "17481587090364955512"
177179
}
178180
},
179181
"parameters": {
@@ -300,6 +302,7 @@
300302
"existing": true,
301303
"type": "Microsoft.Storage/storageAccounts",
302304
"apiVersion": "2021-04-01",
305+
"resourceGroup": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
303306
"name": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.name]"
304307
},
305308
"vulnerabilityAssessments": {
@@ -377,6 +380,8 @@
377380
"existing": true,
378381
"type": "Microsoft.OperationalInsights/workspaces",
379382
"apiVersion": "2020-10-01",
383+
"subscriptionId": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.subscriptionId]",
384+
"resourceGroup": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.resourceGroupName]",
380385
"name": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.name]"
381386
},
382387
"auditDiagnosticSettings": {
@@ -535,7 +540,7 @@
535540
"_generator": {
536541
"name": "bicep",
537542
"version": "dev",
538-
"templateHash": "174370743240355342"
543+
"templateHash": "13476748154905990322"
539544
}
540545
},
541546
"parameters": {
@@ -610,6 +615,7 @@
610615
"existing": true,
611616
"type": "Microsoft.Storage/storageAccounts",
612617
"apiVersion": "2021-04-01",
618+
"resourceGroup": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
613619
"name": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.name]"
614620
},
615621
"vulnerabilityAssessments": {
@@ -637,6 +643,8 @@
637643
"existing": true,
638644
"type": "Microsoft.OperationalInsights/workspaces",
639645
"apiVersion": "2020-10-01",
646+
"subscriptionId": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.subscriptionId]",
647+
"resourceGroup": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.resourceGroupName]",
640648
"name": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.name]"
641649
},
642650
"auditDiagnosticSettings": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/301/sql-database-with-management/modules/sql-database.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "174370743240355342"
10+
"templateHash": "13476748154905990322"
1111
}
1212
},
1313
"parameters": {
@@ -82,6 +82,7 @@
8282
"existing": true,
8383
"type": "Microsoft.Storage/storageAccounts",
8484
"apiVersion": "2021-04-01",
85+
"resourceGroup": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
8586
"name": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.name]"
8687
},
8788
"vulnerabilityAssessments": {
@@ -109,6 +110,8 @@
109110
"existing": true,
110111
"type": "Microsoft.OperationalInsights/workspaces",
111112
"apiVersion": "2020-10-01",
113+
"subscriptionId": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.subscriptionId]",
114+
"resourceGroup": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.resourceGroupName]",
112115
"name": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.name]"
113116
},
114117
"auditDiagnosticSettings": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/301/sql-database-with-management/modules/sql-logical-server.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "11627375028675542139"
10+
"templateHash": "17481587090364955512"
1111
}
1212
},
1313
"parameters": {
@@ -134,6 +134,7 @@
134134
"existing": true,
135135
"type": "Microsoft.Storage/storageAccounts",
136136
"apiVersion": "2021-04-01",
137+
"resourceGroup": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
137138
"name": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.name]"
138139
},
139140
"vulnerabilityAssessments": {
@@ -211,6 +212,8 @@
211212
"existing": true,
212213
"type": "Microsoft.OperationalInsights/workspaces",
213214
"apiVersion": "2020-10-01",
215+
"subscriptionId": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.subscriptionId]",
216+
"resourceGroup": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.resourceGroupName]",
214217
"name": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.name]"
215218
},
216219
"auditDiagnosticSettings": {
@@ -369,7 +372,7 @@
369372
"_generator": {
370373
"name": "bicep",
371374
"version": "dev",
372-
"templateHash": "174370743240355342"
375+
"templateHash": "13476748154905990322"
373376
}
374377
},
375378
"parameters": {
@@ -444,6 +447,7 @@
444447
"existing": true,
445448
"type": "Microsoft.Storage/storageAccounts",
446449
"apiVersion": "2021-04-01",
450+
"resourceGroup": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
447451
"name": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.name]"
448452
},
449453
"vulnerabilityAssessments": {
@@ -471,6 +475,8 @@
471475
"existing": true,
472476
"type": "Microsoft.OperationalInsights/workspaces",
473477
"apiVersion": "2020-10-01",
478+
"subscriptionId": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.subscriptionId]",
479+
"resourceGroup": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.resourceGroupName]",
474480
"name": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.name]"
475481
},
476482
"auditDiagnosticSettings": {

src/Bicep.Core.Samples/Files/experimental/symbolicnames/301/sql-database-with-management/modules/sql-logical-servers.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"_generator": {
88
"name": "bicep",
99
"version": "dev",
10-
"templateHash": "7891355063625276557"
10+
"templateHash": "5674317740980132409"
1111
}
1212
},
1313
"parameters": {
@@ -79,6 +79,8 @@
7979
"existing": true,
8080
"type": "Microsoft.KeyVault/vaults",
8181
"apiVersion": "2021-04-01-preview",
82+
"subscriptionId": "[union(variables('defaultSqlLogicalServerProperties'), parameters('sqlLogicalServers')[copyIndex()]).passwordFromKeyVault.subscriptionId]",
83+
"resourceGroup": "[parameters('sqlLogicalServers')[copyIndex()].passwordFromKeyVault.resourceGroupName]",
8284
"name": "[parameters('sqlLogicalServers')[copyIndex()].passwordFromKeyVault.name]"
8385
},
8486
"sqlLogicalServer": {
@@ -119,7 +121,7 @@
119121
"_generator": {
120122
"name": "bicep",
121123
"version": "dev",
122-
"templateHash": "11627375028675542139"
124+
"templateHash": "17481587090364955512"
123125
}
124126
},
125127
"parameters": {
@@ -246,6 +248,7 @@
246248
"existing": true,
247249
"type": "Microsoft.Storage/storageAccounts",
248250
"apiVersion": "2021-04-01",
251+
"resourceGroup": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
249252
"name": "[parameters('sqlLogicalServer').azureDefender.vulnerabilityAssessments.storageAccount.name]"
250253
},
251254
"vulnerabilityAssessments": {
@@ -323,6 +326,8 @@
323326
"existing": true,
324327
"type": "Microsoft.OperationalInsights/workspaces",
325328
"apiVersion": "2020-10-01",
329+
"subscriptionId": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.subscriptionId]",
330+
"resourceGroup": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.resourceGroupName]",
326331
"name": "[parameters('sqlLogicalServer').diagnosticLogsAndMetrics.name]"
327332
},
328333
"auditDiagnosticSettings": {
@@ -481,7 +486,7 @@
481486
"_generator": {
482487
"name": "bicep",
483488
"version": "dev",
484-
"templateHash": "174370743240355342"
489+
"templateHash": "13476748154905990322"
485490
}
486491
},
487492
"parameters": {
@@ -556,6 +561,7 @@
556561
"existing": true,
557562
"type": "Microsoft.Storage/storageAccounts",
558563
"apiVersion": "2021-04-01",
564+
"resourceGroup": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.resourceGroupName]",
559565
"name": "[parameters('sqlDatabase').azureDefender.vulnerabilityAssessments.storageAccount.name]"
560566
},
561567
"vulnerabilityAssessments": {
@@ -583,6 +589,8 @@
583589
"existing": true,
584590
"type": "Microsoft.OperationalInsights/workspaces",
585591
"apiVersion": "2020-10-01",
592+
"subscriptionId": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.subscriptionId]",
593+
"resourceGroup": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.resourceGroupName]",
586594
"name": "[parameters('sqlDatabase').diagnosticLogsAndMetrics.name]"
587595
},
588596
"auditDiagnosticSettings": {

src/Bicep.Core/Emit/EmitLimitationCalculator.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
using Bicep.Core.DataFlow;
77
using Bicep.Core.Diagnostics;
88
using Bicep.Core.Semantics;
9-
using Bicep.Core.Semantics.Namespaces;
109
using Bicep.Core.Semantics.Metadata;
1110
using Bicep.Core.Syntax;
1211
using Bicep.Core.TypeSystem;
13-
using Bicep.Core.TypeSystem.Az;
1412
using Bicep.Core.Utils;
1513
using Bicep.Core.Extensions;
1614

0 commit comments

Comments
 (0)