in src/Assessment/Processor/ProcessDatasets.cs [1098:1170]
private bool Create_SQL_MI_Opportunity_Model(List<SQL_MI_Opportunity> SQL_MI_Opportunity_List, HashSet<string> AzureSQL_IaaS_Instance)
{
if (AzureSQLInstancesData == null)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_MI_Opportunity excel model as Azure SQL instances dataset is null");
return false;
}
if (AzureSQLInstancesData.Count <= 0)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_MI_Opportuniey excel model as Azure SQL instances dataset is empty");
return false;
}
UserInputObj.LoggerObj.LogInformation("Creating excel model for SQL_MI_Opportunity");
if (SQL_MI_Opportunity_List == null)
SQL_MI_Opportunity_List = new List<SQL_MI_Opportunity>();
foreach (var instanceArmId in AzureSQL_IaaS_Instance)
{
if (!AzureSQLInstancesData.ContainsKey(instanceArmId))
{
UserInputObj.LoggerObj.LogWarning($"SQL Instance ID: {instanceArmId} does not exist Azure SQL instances dataset, skipping");
continue;
}
var value = AzureSQLInstancesData[instanceArmId];
SQL_MI_Opportunity obj = new SQL_MI_Opportunity();
obj.MachineName = value.MachineName;
obj.SQLInstance = value.InstanceName;
obj.Environment = value.Environment;
obj.AzureSQLMIReadiness = new EnumDescriptionHelper().GetEnumDescription(value.AzureSQLMISuitability);
obj.AzureSQLMIReadiness_Warnings = UtilityFunctions.GetMigrationIssueWarnings(value.AzureSQLMIMigrationIssues);
obj.AzureSQLMIReadiness_Issues = UtilityFunctions.GetMigrationIssueByType(value.AzureSQLMIMigrationIssues, IssueCategories.Issue);
obj.RecommendedDeploymentType = value.RecommendedAzureSqlTargetType.ToString();
obj.AzureSQLMIConfiguration = UtilityFunctions.GetSQLMIConfiguration(value);
obj.MonthlyComputeCostEstimate = value.AzureSQLMIMonthlyComputeCost;
obj.MonthlyComputeCostEstimate_RI3year = value.AzureSQLMIMonthlyComputeCost_RI3year;
obj.MonthlyComputeCostEstimate_AHUB = value.AzureSQLMIMonthlyComputeCost_AHUB;
obj.MonthlyComputeCostEstimate_AHUB_RI3year = value.AzureSQLMIMonthlyComputeCost_AHUB_RI3year;
obj.MonthlyStorageCostEstimate = value.AzureSQLMIMonthlyStorageCost;
obj.MonthlySecurityCostEstimate = value.AzureSQLMIMonthlySecurityCost;
obj.UserDatabases = value.DatabaseSummaryNumberOfUserDatabases;
obj.SQLEdition = value.SQLEdition;
obj.SQLVersion = value.SQLVersion;
obj.SupportStatus = value.SupportStatus;
obj.TotalDBSizeInMB = value.DatabaseSummaryTotalDatabaseSizeInMB;
obj.LargestDBSizeInMB = value.DatabaseSumaryLargestDatabaseSizeInMB;
obj.VCoresAllocated = value.NumberOfCoresAllocated;
obj.CpuUtilizationInPercentage = value.PercentageCoresUtilization;
obj.MemoryInUseInMB = value.MemoryInUseMB;
obj.NumberOfDisks = value.LogicalDisks.Count;
obj.DiskReadInOPS = UtilityFunctions.GetDiskReadInOPS(value.LogicalDisks);
obj.DiskWriteInOPS = UtilityFunctions.GetDiskWriteInOPS(value.LogicalDisks);
obj.DiskReadInMBPS = UtilityFunctions.GetDiskReadInMBPS(value.LogicalDisks);
obj.DiskWriteInMBPS = UtilityFunctions.GetDiskWriteInMBPS(value.LogicalDisks);
obj.ConfidenceRatingInPercentage = value.ConfidenceRatingInPercentage;
obj.AzureSQLMIConfigurationTargetServiceTier = UtilityFunctions.GetStringValue(value.AzureSQLMISkuServiceTier);
obj.AzureSQLMIConfigurationTargetComputeTier = UtilityFunctions.GetStringValue(value.AzureSQLMISkuComputeTier);
obj.AzureSQLMIConfigurationTargetHardwareType = UtilityFunctions.GetStringValue(value.AzureSQLMISkuHardwareGeneration);
obj.AzureSQLMIConfigurationTargetCores = value.AzureSQLMISkuCores;
obj.AzureSQLMIConfigurationTargetStorageInGB = Math.Round(value.AzureSQLMISkuStorageMaxSizeInMB / 1024.0);
obj.GroupName = value.GroupName;
obj.MachineId = AssessmentIdToDiscoveryIdLookup.ContainsKey(value.MachineArmId) ? AssessmentIdToDiscoveryIdLookup[value.MachineArmId] : "";
SQL_MI_Opportunity_List.Add(obj);
}
UserInputObj.LoggerObj.LogInformation($"Updated SQL_MI_Opportunity excel model with data of {SQL_MI_Opportunity_List.Count} instances");
return true;
}