[SQL Migration] Mark SQL MI premium-series memory optimized SKUs as GA (#1811)

* GA SQL MI premium-series memory optimized SKUs

* Fix null reference exception
This commit is contained in:
Raymond Truong
2023-01-18 10:26:18 -08:00
committed by GitHub
parent 5978e890b7
commit 3f2d5da69a

View File

@@ -606,21 +606,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus); prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
resultSet.sqlMiResults = provider.GetSkuRecommendation(prefs, req); 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(); sqlMiStopwatch.Stop();
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds; resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
@@ -642,21 +627,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus); prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus);
resultSet.sqlVmResults = provider.GetSkuRecommendation(prefs, req); 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(); sqlVmStopwatch.Stop();
resultSet.sqlVmDurationInMs = sqlVmStopwatch.ElapsedMilliseconds; resultSet.sqlVmDurationInMs = sqlVmStopwatch.ElapsedMilliseconds;
@@ -692,11 +662,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus); List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus);
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories); ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
DataTable SqlMISpec = pi.SqlMISpec.Copy(); DataTable SqlMISpec = pi.SqlMISpec.Copy();
if (!parameters.IncludePreviewSkus)
{
SqlMISpec = pi.SqlMISpec.AsEnumerable().Where(
p => !p.Field<string>("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); 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); 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); resultSet.sqlDbResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req);
@@ -722,30 +687,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus); List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories); ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
DataTable SqlMISpec = pi.SqlMISpec.Copy(); DataTable SqlMISpec = pi.SqlMISpec.Copy();
if (!parameters.IncludePreviewSkus)
{
SqlMISpec = pi.SqlMISpec.AsEnumerable().Where(
p => !p.Field<string>("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); 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); 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); 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(); sqlMiStopwatch.Stop();
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds; resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
@@ -761,19 +706,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
// generate SQL VM recommendations, if applicable // generate SQL VM recommendations, if applicable
if (parameters.TargetPlatforms.Contains("AzureSqlVirtualMachine")) if (parameters.TargetPlatforms.Contains("AzureSqlVirtualMachine"))
{ {
// elastic model currently doesn't support VM recommendation, return null SKU for now // elastic model currently doesn't support VM recommendation, return empty list
resultSet.sqlVmResults = new List<SkuRecommendationResult> { resultSet.sqlVmResults = new List<SkuRecommendationResult> { };
new SkuRecommendationResult()
{
SqlInstanceName = parameters.TargetSqlInstance,
DatabaseName = null,
TargetSku = null,
MonthlyCost = null,
Ranking = -1,
PositiveJustifications = null,
NegativeJustifications = null,
}
};
resultSet.sqlVmDurationInMs = -1; resultSet.sqlVmDurationInMs = -1;
resultSet.sqlVmReportPath = String.Empty; resultSet.sqlVmReportPath = String.Empty;
} }
@@ -994,24 +928,20 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
AzureSqlPaaSServiceTier.GeneralPurpose, AzureSqlPaaSServiceTier.GeneralPurpose,
ComputeTier.Provisioned, ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeries)); AzureSqlPaaSHardwareType.PremiumSeries));
// Premium Memory Optimized BC/GP
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.BusinessCritical,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
if (includePreviewSkus) eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
{ AzureSqlTargetPlatform.AzureSqlManagedInstance,
// Premium Memory Optimized BC/GP AzureSqlPurchasingModel.vCore,
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory( AzureSqlPaaSServiceTier.GeneralPurpose,
AzureSqlTargetPlatform.AzureSqlManagedInstance, ComputeTier.Provisioned,
AzureSqlPurchasingModel.vCore, AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
AzureSqlPaaSServiceTier.BusinessCritical,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.GeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
}
break; break;
case "AzureSqlVirtualMachine": case "AzureSqlVirtualMachine":
@@ -1031,7 +961,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
vmCapabilities.AddRange(vmPreviewCapabilities); vmCapabilities.AddRange(vmPreviewCapabilities);
} }
foreach (VirtualMachineFamily family in AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.GeneralPurpose] foreach (VirtualMachineFamily family in AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.GeneralPurpose]
.Concat(AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.MemoryOptimized])) .Concat(AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.MemoryOptimized]))
{ {