Skip to content

Commit

Permalink
Next gen General purpose sku recommendation integration changes (#2347)
Browse files Browse the repository at this point in the history
* Next gen integration changes

* undo not needed files
  • Loading branch information
stuti149 authored Mar 22, 2024
1 parent 1cfdc0a commit 0ecce4a
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 11 deletions.
4 changes: 2 additions & 2 deletions Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@
<PackageReference Update="Microsoft.Azure.Kusto.Data" Version="9.0.4" />
<PackageReference Update="Microsoft.Azure.Kusto.Language" Version="9.0.4" />
<PackageReference Update="Microsoft.SqlServer.Assessment" Version="[1.1.17]" />
<PackageReference Update="Microsoft.SqlServer.Migration.Assessment" Version="1.0.20240318.1" />
<PackageReference Update="Microsoft.SqlServer.Migration.Assessment" Version="1.0.20240321.1" />
<PackageReference Update="Microsoft.SqlServer.Migration.Logins" Version="1.0.20240222.1" />
<PackageReference Update="Microsoft.SqlServer.Management.QueryStoreModel" Version="163.55.1" />
<PackageReference Update="Microsoft.SqlServer.Management.SqlParser" Version="170.9.0" />
<PackageReference Update="Microsoft.SqlServer.Migration.Tde" Version="1.0.0-preview.1.0.20230914.107" />
<PackageReference Update="Microsoft.SqlServer.SqlTargetProvisioning" Version="1.0.20240318.1" />
<PackageReference Update="Microsoft.SqlServer.SqlTargetProvisioning" Version="1.0.20240321.1" />

<!-- Deprecated: TODO Migrate to Azure.Monitor.Query -->
<PackageReference Update="Microsoft.Azure.OperationalInsights" Version="1.0.0" />
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ public class GetSkuRecommendationsParams
/// Defaults to false if not explicitly provided.
/// </summary>
public bool IsPremiumSSDV2Enabled { get; set; } = false;

/// <summary>
/// Whether or not NextGenGeneralPurpose as a feature is enabled.
/// Defaults to false if not explicitly provided.
/// </summary>
public bool IsNextGenGPEnabled { get; set; } = false;
}

public class GetSkuRecommendationsResult
Expand Down
47 changes: 38 additions & 9 deletions src/Microsoft.SqlTools.Migration/MigrationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@ internal RecommendationResultSet GenerateBaselineRecommendations(SqlInstanceRequ
Stopwatch sqlDbStopwatch = new Stopwatch();
sqlDbStopwatch.Start();

prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus);
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus, false);
resultSet.sqlDbResults = provider.GetSkuRecommendation(prefs, req);

sqlDbStopwatch.Stop();
Expand All @@ -776,7 +776,7 @@ internal RecommendationResultSet GenerateBaselineRecommendations(SqlInstanceRequ
Stopwatch sqlMiStopwatch = new Stopwatch();
sqlMiStopwatch.Start();

prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus, parameters.IsNextGenGPEnabled);
resultSet.sqlMiResults = provider.GetSkuRecommendation(prefs, req);

sqlMiStopwatch.Stop();
Expand All @@ -797,7 +797,7 @@ internal RecommendationResultSet GenerateBaselineRecommendations(SqlInstanceRequ
Stopwatch sqlVmStopwatch = new Stopwatch();
sqlVmStopwatch.Start();

prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus);
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus, false);
resultSet.sqlVmResults = provider.GetSkuRecommendation(prefs, req);

sqlVmStopwatch.Stop();
Expand Down Expand Up @@ -842,7 +842,7 @@ internal RecommendationResultSet GenerateElasticRecommendations(SqlInstanceRequi
Stopwatch sqlDbStopwatch = new Stopwatch();
sqlDbStopwatch.Start();

List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus);
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus, false);
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
DataTable SqlMISpec = pi.SqlMISpec.Copy();
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
Expand All @@ -867,7 +867,7 @@ internal RecommendationResultSet GenerateElasticRecommendations(SqlInstanceRequi
Stopwatch sqlMiStopwatch = new Stopwatch();
sqlMiStopwatch.Start();

List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus, parameters.IsNextGenGPEnabled);
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
DataTable SqlMISpec = pi.SqlMISpec.Copy();
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
Expand Down Expand Up @@ -1057,7 +1057,7 @@ internal string CreateAssessmentResultKey(ISqlMigrationAssessmentResult assessme
}

// Returns the list of eligible SKUs to consider, depending on the desired target platform
internal static List<AzureSqlSkuCategory> GetEligibleSkuCategories(string targetPlatform, bool includePreviewSkus)
internal static List<AzureSqlSkuCategory> GetEligibleSkuCategories(string targetPlatform, bool includePreviewSkus, bool recommendNextGen)
{
List<AzureSqlSkuCategory> eligibleSkuCategories = new List<AzureSqlSkuCategory>();

Expand Down Expand Up @@ -1088,43 +1088,72 @@ internal static List<AzureSqlSkuCategory> GetEligibleSkuCategories(string target
break;

case "AzureSqlManagedInstance":
// Gen5 BC/GP MI
// Gen5 BC/Next-GenGP/GP MI
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.BusinessCritical,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.Gen5));
if (recommendNextGen)
{
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.NextGenGeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.Gen5));
}

eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.GeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.Gen5));
// Premium BC/GP
// Premium BC/Next-GenGP/GP
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.BusinessCritical,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeries));

if (recommendNextGen)
{
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.NextGenGeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeries));
}

eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.GeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeries));

// Premium Memory Optimized BC/GP
// Premium Memory Optimized BC/NextGenGP/GP
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.BusinessCritical,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));

if (recommendNextGen)
{
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
AzureSqlPaaSServiceTier.NextGenGeneralPurpose,
ComputeTier.Provisioned,
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
}

eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
AzureSqlTargetPlatform.AzureSqlManagedInstance,
AzureSqlPurchasingModel.vCore,
Expand Down

0 comments on commit 0ecce4a

Please sign in to comment.