in src/Authentication.Abstractions/AzureEnvironment.cs [39:106]
internal static IDictionary<string, AzureEnvironment> InitializeBuiltInEnvironments(string armMetadataRequestUri, Action<string> debugLogger = null, Action<string> warningLogger = null, IHttpOperations httpOperations = null)
{
IDictionary<string, AzureEnvironment> armAzureEnvironments = new Dictionary<string, AzureEnvironment>(StringComparer.InvariantCultureIgnoreCase);
try
{
if (string.IsNullOrEmpty(armMetadataRequestUri))
{
armMetadataRequestUri = Environment.GetEnvironmentVariable(ArmMetadataEnvVariable);
if (string.IsNullOrEmpty(armMetadataRequestUri))
{
armMetadataRequestUri = DefaultArmMetaDataEndpoint;
}
else
{
debugLogger?.Invoke($"Get {armMetadataRequestUri} from environment variable {ArmMetadataEnvVariable}");
}
}
if (DisableArmMetaDataEndpoint.Equals(armMetadataRequestUri?.Trim().ToUpper()))
{
warningLogger?.Invoke($"Discover feature is disabled.");
armMetadataRequestUri = null;
}
if (!string.IsNullOrEmpty(armMetadataRequestUri))
{
debugLogger?.Invoke($"Discover environments via {armMetadataRequestUri}");
try
{
var list = InitializeEnvironmentsFromArm(armMetadataRequestUri, httpOperations).ConfigureAwait(false).GetAwaiter().GetResult();
foreach (var metadata in list)
{
var env = MapArmToAzureEnvironment(metadata);
env.Type = TypeDiscovered;
armAzureEnvironments[env.Name] = env;
debugLogger?.Invoke($"Added discovered environment {env.Name}");
}
}
catch (Exception e)
{
warningLogger?.Invoke($"Cannot discover environments from ARM with URI {armMetadataRequestUri}. Falling back to built-in environments.");
debugLogger?.Invoke(e.StackTrace);
}
}
}
catch (Exception e)
{
warningLogger?.Invoke("Cannot discover environments with error");
warningLogger?.Invoke(e.StackTrace);
}
debugLogger?.Invoke($"Load built-in environments");
if (!armAzureEnvironments.ContainsKey(EnvironmentName.AzureCloud))
{
armAzureEnvironments[EnvironmentName.AzureCloud] = GetBuiltInAzureCloud();
}
if (!armAzureEnvironments.ContainsKey(EnvironmentName.AzureChinaCloud))
{
armAzureEnvironments[EnvironmentName.AzureChinaCloud] = GetBuiltInChinaAzureCloud();
}
if (!armAzureEnvironments.ContainsKey(EnvironmentName.AzureUSGovernment))
{
armAzureEnvironments[EnvironmentName.AzureUSGovernment] = GetBuiltInUSGovernmentCloud();
}
SetExtendedProperties(armAzureEnvironments);
return armAzureEnvironments;
}