From 1660ef323257c8b511fa69588409f2b12bbdc6ab Mon Sep 17 00:00:00 2001 From: AkshayMata Date: Mon, 30 Jan 2023 22:24:09 -0800 Subject: [PATCH] [SQL-Migration] Port changes to new migration service (#1835) This PR ports some changes that were missed to the new, separated Migration Service project. Here is the PR to separate Migration Service into project: #1828 Changes from the following PRs were not ported over: [SQL Migration] Mark SQL MI premium-series memory optimized SKUs as GA #1811 Update login migrations nuget with perf improvements #1789 --- .../MigrationService.cs | 74 +------------------ .../Utils/ExtensionMethods.cs | 5 ++ 2 files changed, 7 insertions(+), 72 deletions(-) diff --git a/src/Microsoft.SqlTools.Migration/MigrationService.cs b/src/Microsoft.SqlTools.Migration/MigrationService.cs index 9983bc63..27919e43 100644 --- a/src/Microsoft.SqlTools.Migration/MigrationService.cs +++ b/src/Microsoft.SqlTools.Migration/MigrationService.cs @@ -546,21 +546,6 @@ namespace Microsoft.SqlTools.Migration prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus); resultSet.sqlMiResults = provider.GetSkuRecommendation(prefs, req); - // if no result was generated, create a result with a null SKU - if (!resultSet.sqlMiResults.Any()) - { - resultSet.sqlMiResults.Add(new SkuRecommendationResult() - { - SqlInstanceName = parameters.TargetSqlInstance, - DatabaseName = null, - TargetSku = null, - MonthlyCost = null, - Ranking = -1, - PositiveJustifications = null, - NegativeJustifications = null, - }); - } - sqlMiStopwatch.Stop(); resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds; @@ -582,21 +567,6 @@ namespace Microsoft.SqlTools.Migration prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus); resultSet.sqlVmResults = provider.GetSkuRecommendation(prefs, req); - // if no result was generated, create a result with a null SKU - if (!resultSet.sqlVmResults.Any()) - { - resultSet.sqlVmResults.Add(new SkuRecommendationResult() - { - SqlInstanceName = parameters.TargetSqlInstance, - DatabaseName = null, - TargetSku = null, - MonthlyCost = null, - Ranking = -1, - PositiveJustifications = null, - NegativeJustifications = null, - }); - } - sqlVmStopwatch.Stop(); resultSet.sqlVmDurationInMs = sqlVmStopwatch.ElapsedMilliseconds; @@ -632,11 +602,6 @@ namespace Microsoft.SqlTools.Migration List eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus); ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories); DataTable SqlMISpec = pi.SqlMISpec.Copy(); - if (!parameters.IncludePreviewSkus) - { - SqlMISpec = pi.SqlMISpec.AsEnumerable().Where( - p => !p.Field("SLO").Contains("Premium")).CopyToDataTable(); - } MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance); DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance); resultSet.sqlDbResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req); @@ -662,30 +627,10 @@ namespace Microsoft.SqlTools.Migration List eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus); ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories); DataTable SqlMISpec = pi.SqlMISpec.Copy(); - if (!parameters.IncludePreviewSkus) - { - SqlMISpec = pi.SqlMISpec.AsEnumerable().Where( - p => !p.Field("SLO").Contains("Premium")).CopyToDataTable(); - } MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance); DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance); resultSet.sqlMiResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req); - // if no result was generated, create a result with a null SKU - if (!resultSet.sqlMiResults.Any()) - { - resultSet.sqlMiResults.Add(new SkuRecommendationResult() - { - SqlInstanceName = parameters.TargetSqlInstance, - DatabaseName = null, - TargetSku = null, - MonthlyCost = null, - Ranking = -1, - PositiveJustifications = null, - NegativeJustifications = null, - }); - } - sqlMiStopwatch.Stop(); resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds; @@ -701,19 +646,8 @@ namespace Microsoft.SqlTools.Migration // generate SQL VM recommendations, if applicable if (parameters.TargetPlatforms.Contains("AzureSqlVirtualMachine")) { - // elastic model currently doesn't support VM recommendation, return null SKU for now - resultSet.sqlVmResults = new List { - new SkuRecommendationResult() - { - SqlInstanceName = parameters.TargetSqlInstance, - DatabaseName = null, - TargetSku = null, - MonthlyCost = null, - Ranking = -1, - PositiveJustifications = null, - NegativeJustifications = null, - } - }; + // elastic model currently doesn't support VM recommendation, return empty list + resultSet.sqlVmResults = new List { }; resultSet.sqlVmDurationInMs = -1; resultSet.sqlVmReportPath = String.Empty; } @@ -935,8 +869,6 @@ namespace Microsoft.SqlTools.Migration ComputeTier.Provisioned, AzureSqlPaaSHardwareType.PremiumSeries)); - if (includePreviewSkus) - { // Premium Memory Optimized BC/GP eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory( AzureSqlTargetPlatform.AzureSqlManagedInstance, @@ -951,7 +883,6 @@ namespace Microsoft.SqlTools.Migration AzureSqlPaaSServiceTier.GeneralPurpose, ComputeTier.Provisioned, AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized)); - } break; case "AzureSqlVirtualMachine": @@ -971,7 +902,6 @@ namespace Microsoft.SqlTools.Migration vmCapabilities.AddRange(vmPreviewCapabilities); } - foreach (VirtualMachineFamily family in AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.GeneralPurpose] .Concat(AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.MemoryOptimized])) { diff --git a/src/Microsoft.SqlTools.Migration/Utils/ExtensionMethods.cs b/src/Microsoft.SqlTools.Migration/Utils/ExtensionMethods.cs index 161cc978..cba318f9 100644 --- a/src/Microsoft.SqlTools.Migration/Utils/ExtensionMethods.cs +++ b/src/Microsoft.SqlTools.Migration/Utils/ExtensionMethods.cs @@ -13,6 +13,11 @@ namespace Microsoft.SqlTools.Migration.Utils { public static void AddExceptions(this IDictionary> exceptionMap1, IDictionary> exceptionMap2) { + if (exceptionMap1 is null || exceptionMap2 is null) + { + return; + } + foreach (var keyValuePair2 in exceptionMap2) { // If the dictionary already contains the key then merge them