示例#1
0
        public async Task <FaultInjectionResponseModel <DisplayConfigResponseModel> > GetSubscriptions(string tenantId, string clientId, string clientSecret)
        {
            if (string.IsNullOrWhiteSpace(clientId) ||
                string.IsNullOrWhiteSpace(clientSecret) ||
                string.IsNullOrWhiteSpace(tenantId))
            {
                return(null);
            }

            var subscriptionClient = AzureClient.GetSubscriptionClient(clientId,
                                                                       clientSecret,
                                                                       tenantId);

            IPage <SubscriptionInner> subscriptionTask = null;

            try
            {
                subscriptionTask = await subscriptionClient.Subscriptions.ListAsync();
            }
            catch (Exception ex)
            {
                return(new FaultInjectionResponseModel <DisplayConfigResponseModel>()
                {
                    ErrorMessage = ex.Message, Success = false
                });
            }

            var subscriptionList = subscriptionTask?.Select(x => x);

            // Read the existing config from storage account
            string storageConnection = ConfigurationManager.AppSettings[StorageConnectionString];

            var model = new DisplayConfigResponseModel()
            {
                SubcriptionList = subscriptionList
            };

            if (!string.IsNullOrWhiteSpace(storageConnection))
            {
                var settings = AzureClient.GetAzureSettings(storageConnection);
                if (settings != null)
                {
                    model.Config = ConvertAzureSettingsConfigModel(settings);
                }

                model.ResourceGroups = await GetResourceGroups(settings.Client.TenantId, settings.Client.ClientId,
                                                               settings.Client.ClientSecret, settings.Client.SubscriptionId);
            }

            //return response;
            return(new FaultInjectionResponseModel <DisplayConfigResponseModel>()
            {
                Result = model, Success = true
            });
        }