private async Task ShouldExecute(CloudOdsApiOperationContext context)
        {
            var token = await GetAccessTokenCredentialsAsync();

            var site = await GetApiWebsiteAsync(context.TargetEnvironment);

            var client = new WebSiteManagementClient(token)
            {
                SubscriptionId = DefaultAzureActiveDirectoryClientInfo.SubscriptionId
            };
            var settings = await client.Sites.ListSiteAppSettingsAsync(DefaultTestCloudOdsInstance.SystemName, site.Name);

            settings.Properties[CloudOdsApiWebsiteSettings.BearerTokenTimeoutSettingName] = "20";
            settings.Properties[CloudOdsApiWebsiteSettings.LogLevelSettingName]           = LogLevel.Warn.DisplayName;

            await client.Sites.UpdateSiteAppSettingsAsync(DefaultTestCloudOdsInstance.SystemName, site.Name, settings);

            var getAzureCloudOdsHostedInstanceQuery = new GetAzureCloudOdsHostedInstanceQuery(DefaultAzureActiveDirectoryClientInfo, DefaultTokenCache);
            var getWebsiteQuery = new GetAzureCloudOdsHostedComponentsQuery(DefaultAzureActiveDirectoryClientInfo, DefaultTokenCache, getAzureCloudOdsHostedInstanceQuery);
            var query           = new GetAzureCloudOdsApiWebsiteSettingsQuery(DefaultAzureActiveDirectoryClientInfo,
                                                                              getWebsiteQuery, DefaultTokenCache, getAzureCloudOdsHostedInstanceQuery);

            var result = await query.Execute(context);

            result.BearerTokenTimeoutInMinutes.ShouldBe(20);
            result.LogLevel.ShouldBe(LogLevel.Warn);
        }
コード例 #2
0
        public async Task <ProductionApiProvisioningWarnings> Execute(CloudOdsInstance cloudOdsInstance)
        {
            var result = new ProductionApiProvisioningWarnings
            {
                ResolutionUrl = "https://portal.azure.com"
            };

            var warnings = new List <string>();

            using (var conn = _rawSqlConnectionService.GetDatabaseConnectionFromConfigFile(_cloudOdsDatabaseNameProvider.GetDatabaseName(CloudOdsDatabases.ProductionOds)))
            {
                var sqlPerformanceLevel = _azureDatabaseManagementService.GetDatabasePerformanceLevel(conn, CloudOdsDatabaseNames.ProductionOds);

                //we have to be careful here not to output a warning in case the user is not running against an Azure Sql instance, hence the validity check
                if (sqlPerformanceLevel.IsValid() && sqlPerformanceLevel < _expectedDatabasePerformanceLevel)
                {
                    warnings.Add($"Azure Sql performance tier '{_expectedDatabasePerformanceLevel.ServiceObjective}' or above is recommended");
                }
            }

            var cloudOdsApiOperationContext = new CloudOdsApiOperationContext(cloudOdsInstance, CloudOdsEnvironment.Production);
            var serverPerformanceLevel      = await _getAzureCloudOdsWebsitePerformanceLevelQuery.Execute(cloudOdsApiOperationContext);

            if (serverPerformanceLevel != null && serverPerformanceLevel < _expectedWebsitePerformanceLevel)
            {
                warnings.Add($"Azure Website performance tier '{_expectedWebsitePerformanceLevel.ServiceObjective}' or above is recommended");
            }

            result.Warnings = warnings;
            return(result);
        }
コード例 #3
0
        public async Task UpdateSettings(string instanceName, CloudOdsApiWebsiteSettings newSettings)
        {
            var instance = await GetCloudOdsInstance(instanceName);

            var context = new CloudOdsApiOperationContext(instance);

            await _updateCloudOdsApiWebsiteSettingsCommand.Execute(context, newSettings);
        }
コード例 #4
0
        public async Task <CloudOdsApiWebsiteSettings> GetSettings(string instanceName)
        {
            var instance = await GetCloudOdsInstance(instanceName);

            var context = new CloudOdsApiOperationContext(instance);

            return(await _getCloudOdsApiWebsiteSettingsQuery.Execute(context));
        }
        public async Task Execute(CloudOdsApiOperationContext context, CloudOdsApiWebsiteSettings newSettings)
        {
            var website       = (await _getAzureCloudOdsHostedComponentsQuery.Execute(context)).Single();
            var azureSettings = await _getAzureCloudOdsComponentApiWebsiteSettingsQuery.ExecuteRaw(context);

            foreach (var setting in newSettings.AsDictionary())
            {
                azureSettings.Properties[setting.Key] = setting.Value;
            }
            var instance = await _getCloudOdsHostedInstanceQuery.Execute(context.Instance);

            await _armClient.SaveWebsiteSettingsAsync(_azureActiveDirectoryClientInfo.SubscriptionId, instance?.SystemName, website.SystemName, azureSettings);
        }
        public async Task<StringDictionary> ExecuteRaw(CloudOdsApiOperationContext context)
        {
            if (context == null)
                throw new ArgumentNullException(nameof(context));

            if (context.TargetEnvironment == null)
                throw new InvalidOperationException("You must provide a TargetEnvironment for this operation");
            
            var website = Enumerable.Single<CloudOdsWebsite>((await _getAzureCloudOdsHostedComponentsQuery.Execute(context)));
            var instance = await _getCloudOdsHostedInstanceQuery.Execute(context.Instance);
            var settings = await _armClient.GetWebsiteSettingsAsync(_azureActiveDirectoryClientInfo.SubscriptionId, instance?.SystemName, website.SystemName);

            return settings;
        }
 public async Task<CloudOdsApiWebsiteSettings> Execute(CloudOdsApiOperationContext context)
 {
     var settings = await ExecuteRaw(context);
     return new CloudOdsApiWebsiteSettings(settings.Properties);
 }
コード例 #8
0
 public Task <CloudOdsApiWebsiteSettings> Execute(CloudOdsApiOperationContext context)
 {
     throw new System.NotImplementedException();
 }