@@ -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