in src/Assessment/Processor/ProcessDatasets.cs [693:765]
private bool Create_SQL_MI_PaaS_Model(List<SQL_MI_PaaS> SQL_MI_PaaS_List, HashSet<string> AzureSQL_IaaS_Instance)
{
if (AzureSQLInstancesData == null)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_MI_PaaS excel model as Azure SQL instances dataset is null");
return false;
}
if (AzureSQLInstancesData.Count <= 0)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_MI_PaaS excel model as Azure SQL instances dataset is empty");
return false;
}
UserInputObj.LoggerObj.LogInformation("Creating excel model for SQL_MI_PaaS");
if (SQL_MI_PaaS_List == null)
SQL_MI_PaaS_List = new List<SQL_MI_PaaS>();
if (AzureSQL_IaaS_Instance == null)
AzureSQL_IaaS_Instance = new HashSet<string>();
foreach (var azureSqlInstance in AzureSQLInstancesData)
{
if (azureSqlInstance.Value.AzureSQLMISuitability != Suitabilities.Suitable)
{
if (!AzureSQL_IaaS_Instance.Contains(azureSqlInstance.Value.SQLInstanceSDSArmId))
AzureSQL_IaaS_Instance.Add(azureSqlInstance.Value.SQLInstanceSDSArmId);
continue;
}
SQL_MI_PaaS obj = new SQL_MI_PaaS();
obj.MachineName = azureSqlInstance.Value.MachineName;
obj.SQLInstance = azureSqlInstance.Value.InstanceName;
obj.Environment = azureSqlInstance.Value.Environment;
obj.AzureSQLMIReadiness = new EnumDescriptionHelper().GetEnumDescription(azureSqlInstance.Value.AzureSQLMISuitability);
obj.AzureSQLMIReadiness_Warnings = UtilityFunctions.GetMigrationIssueWarnings(azureSqlInstance.Value.AzureSQLMIMigrationIssues);
obj.RecommendedDeploymentType = AzureSQLTargetType.AzureSqlManagedInstance.ToString(); // azureSqlInstance.Value.RecommendedAzureSqlTargetType.ToString();
obj.AzureSQLMIConfiguration = UtilityFunctions.GetSQLMIConfiguration(azureSqlInstance.Value);
obj.MonthlyComputeCostEstimate = azureSqlInstance.Value.AzureSQLMIMonthlyComputeCost;
obj.MonthlyComputeCostEstimate_RI3year = azureSqlInstance.Value.AzureSQLMIMonthlyComputeCost_RI3year;
obj.MonthlyComputeCostEstimate_AHUB = azureSqlInstance.Value.AzureSQLMIMonthlyComputeCost_AHUB;
obj.MonthlyComputeCostEstimate_AHUB_RI3year = azureSqlInstance.Value.AzureSQLMIMonthlyComputeCost_AHUB_RI3year;
obj.MonthlyStorageCostEstimate = azureSqlInstance.Value.AzureSQLMIMonthlyStorageCost;
obj.MonthlySecurityCostEstimate = azureSqlInstance.Value.AzureSQLMIMonthlySecurityCost;
obj.UserDatabases = azureSqlInstance.Value.DatabaseSummaryNumberOfUserDatabases;
obj.SQLEdition = azureSqlInstance.Value.SQLEdition;
obj.SQLVersion = azureSqlInstance.Value.SQLVersion;
obj.SupportStatus = azureSqlInstance.Value.SupportStatus;
obj.TotalDBSizeInMB = azureSqlInstance.Value.DatabaseSummaryTotalDatabaseSizeInMB;
obj.LargestDBSizeInMB = azureSqlInstance.Value.DatabaseSumaryLargestDatabaseSizeInMB;
obj.VCoresAllocated = azureSqlInstance.Value.NumberOfCoresAllocated;
obj.CpuUtilizationInPercentage = azureSqlInstance.Value.PercentageCoresUtilization;
obj.MemoryInUseInMB = azureSqlInstance.Value.MemoryInUseMB;
obj.NumberOfDisks = azureSqlInstance.Value.LogicalDisks.Count;
obj.DiskReadInOPS = UtilityFunctions.GetDiskReadInOPS(azureSqlInstance.Value.LogicalDisks);
obj.DiskWriteInOPS = UtilityFunctions.GetDiskWriteInOPS(azureSqlInstance.Value.LogicalDisks);
obj.DiskReadInMBPS = UtilityFunctions.GetDiskReadInMBPS(azureSqlInstance.Value.LogicalDisks);
obj.DiskWriteInMBPS = UtilityFunctions.GetDiskWriteInMBPS(azureSqlInstance.Value.LogicalDisks);
obj.AzureSQLMIConfigurationTargetServiceTier = UtilityFunctions.GetStringValue(azureSqlInstance.Value.AzureSQLMISkuServiceTier);
obj.AzureSQLMIConfigurationTargetComputeTier = UtilityFunctions.GetStringValue(azureSqlInstance.Value.AzureSQLMISkuComputeTier);
obj.AzureSQLMIConfigurationTargetHardwareType = UtilityFunctions.GetStringValue(azureSqlInstance.Value.AzureSQLMISkuHardwareGeneration);
obj.AzureSQLMIConfigurationTargetCores = azureSqlInstance.Value.AzureSQLMISkuCores;
obj.AzureSQLMIConfigurationTargetStorageInGB = Math.Round(azureSqlInstance.Value.AzureSQLMISkuStorageMaxSizeInMB / 1024.0);
obj.GroupName = azureSqlInstance.Value.GroupName;
obj.MachineId = AssessmentIdToDiscoveryIdLookup.ContainsKey(azureSqlInstance.Value.MachineArmId) ? AssessmentIdToDiscoveryIdLookup[azureSqlInstance.Value.MachineArmId] : "";
SQL_MI_PaaS_List.Add(obj);
}
UserInputObj.LoggerObj.LogInformation($"Updated SQL_MI_PaaS excel model with data of {SQL_MI_PaaS_List.Count} instances");
UserInputObj.LoggerObj.LogInformation($"Number of instances that will be evaluated for Azure SQL instance rehost: {AzureSQL_IaaS_Instance.Count}");
return true;
}