Skip to content

Commit cf356a1

Browse files
feat!: Move resource group name from appsettings to function
Appsettings and the like should only contain values that cannot be calculated. ResourceGroupName can be calculated and is thus move to the construction of the Environment Configuration.
1 parent 85a0f63 commit cf356a1

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/Core/EnvironmentConfigurationExtension.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,17 @@ public static class EnvironmentConfigurationExtension
1313
{
1414
/// <summary>
1515
/// Configures and adds the environment configuration to the service collection.
16+
/// This expects the following values to be present in the ConfigurationManager, preferably automatically through
17+
/// appsettings.*.json.
18+
/// * ApplicationConfiguration.TenantId: Used to populate TenantId in EnvironmentConfiguration
19+
/// * ApplicationConfiguration.SubscriptionId: Used to populate TenantId in EnvironmentConfiguration
20+
/// Neither of the two values can be calculataed.
1621
/// </summary>
1722
/// <param name="services">DI Service Collection.</param>
1823
/// <param name="configuration">Configuration Manager.</param>
1924
/// <param name="applicationName">Application name.</param>
2025
/// <param name="keyVaultUriFunc">Function to build key vault Uri based in contemporary environment configuration.</param>
26+
/// <param name="resourceGroupNameFunc">Function to build resource group name based in contemporary environment configuration.</param>
2127
/// <param name="applicationDescription">Application description.</param>
2228
/// <param name="managedIdentityResourceIdFunc">Function to build managed identity resource id based in contemporary environment configuration.</param>
2329
/// <returns>Environment Configuration</returns>
@@ -29,13 +35,19 @@ public static EnvironmentConfiguration AddEnvironmentConfiguration(
2935
ConfigurationManager configuration,
3036
string applicationName,
3137
Func<EnvironmentConfiguration, Uri> keyVaultUriFunc,
38+
Func<EnvironmentConfiguration, string> resourceGroupNameFunc,
3239
string applicationDescription = "N/A",
3340
Func<EnvironmentConfiguration, ResourceIdentifier>? managedIdentityResourceIdFunc = null)
3441
{
3542
ArgumentNullException.ThrowIfNull(keyVaultUriFunc);
43+
ArgumentNullException.ThrowIfNull(resourceGroupNameFunc);
3644

3745
var environmentConfiguration =
3846
GetEnvironmentConfiguration(configuration, applicationName, applicationDescription);
47+
environmentConfiguration = environmentConfiguration with
48+
{
49+
ResourceGroupName = resourceGroupNameFunc(environmentConfiguration),
50+
};
3951

4052
TokenCredential credential = environmentConfiguration.RuntimeEnvironment switch
4153
{
@@ -113,9 +125,6 @@ private static EnvironmentConfiguration GetEnvironmentConfiguration(
113125
var tenantId = configuration["ApplicationConfiguration:TenantId"]
114126
?? throw new InvalidOperationException("ApplicationConfiguration:TenantId is not set.");
115127

116-
var resourceGroupName = configuration["ApplicationConfiguration:ResourceGroupName"] ??
117-
throw new InvalidOperationException("ApplicationConfiguration:ResourceGroupName is not set.");
118-
119128
configuration.AddJsonFile("appsettings.json", optional: true)
120129
.AddJsonFile($"appsettings.{applicationEnvironment}.json", optional: true);
121130

@@ -130,7 +139,7 @@ private static EnvironmentConfiguration GetEnvironmentConfiguration(
130139
RuntimeEnvironment: runtimeEnvironment,
131140
TenantId: tenantId,
132141
SubscriptionId: subscriptionId,
133-
ResourceGroupName: resourceGroupName);
142+
ResourceGroupName: null!);
134143

135144
return environmentConfiguration;
136145
}

0 commit comments

Comments
 (0)