private async Task SetSecrets(ApplicationConfiguration configuration, ISecretStore secretStore)
{
try
{
IApplicationResourceSettingNameProvider nameProvider = new ApplicationResourceSettingNameProvider();
// set the secrets
foreach (ApplicationComponent component in configuration.ApplicationComponents)
{
IComponentIdentity componentIdentity = new ComponentIdentity(component.Fqn);
if (!string.IsNullOrWhiteSpace(component.SqlServerConnectionString))
{
string key = nameProvider.SqlConnectionString(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.SqlServerConnectionString);
}
if (!string.IsNullOrWhiteSpace(component.StorageAccountConnectionString))
{
string key = nameProvider.StorageAccountConnectionString(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.StorageAccountConnectionString);
}
if (!string.IsNullOrWhiteSpace(component.ServiceBusConnectionString))
{
string key = nameProvider.ServiceBusConnectionString(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.ServiceBusConnectionString);
}
if (!string.IsNullOrWhiteSpace(component.DbContextType))
{
string key = nameProvider.SqlContextType(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DbContextType);
}
if (!string.IsNullOrWhiteSpace(component.DefaultQueueName))
{
string key = nameProvider.DefaultQueueName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultQueueName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultBlobContainerName))
{
string key = nameProvider.DefaultBlobContainerName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultBlobContainerName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultTableName))
{
string key = nameProvider.DefaultTableName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultTableName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultLeaseBlockName))
{
string key = nameProvider.DefaultLeaseBlockName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultLeaseBlockName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultSubscriptionName))
{
string key = nameProvider.DefaultSubscriptionName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultSubscriptionName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultTopicName))
{
string key = nameProvider.DefaultTopicName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultTopicName);
}
if (!string.IsNullOrWhiteSpace(component.DefaultBrokeredMessageQueueName))
{
string key = nameProvider.DefaultBrokeredMessageQueueName(componentIdentity);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, component.DefaultBrokeredMessageQueueName);
}
foreach (ApplicationComponentSetting setting in component.Settings)
{
string key = nameProvider.SettingName(componentIdentity, setting.Key);
await SetValueInSecretStoreIfIsSecret(secretStore, configuration, key, setting.Value);
}
}
}
catch (AggregateException aex)
{
foreach (Exception ex in aex.InnerExceptions)
{
WriteError(new ErrorRecord(ex, Guid.NewGuid().ToString(), ErrorCategory.InvalidOperation, null));
}
}
}