in src/Assessment/Processor/ProcessDatasets.cs [781:877]
private bool Create_SQL_IaaS_Instance_Rehost_Perf_Model(List<SQL_IaaS_Instance_Rehost_Perf> SQL_IaaS_Instance_Rehost_Perf_List, HashSet<String> AzureSQL_IaaS_Instance, HashSet<string> AzureSQL_IaaS_Server)
{
if (AzureSQLInstancesData == null)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_IaaS_Instance_Rehost_Perf excel model as Azure SQL instances dataset is null");
return false;
}
if (AzureSQLInstancesData.Count <= 0)
{
UserInputObj.LoggerObj.LogWarning("Not creating SQL_IaaS_Instance_Rehost_Perf excel model as Azure SQL instances dataset is empty");
return false;
}
if (SQL_IaaS_Instance_Rehost_Perf_List == null)
SQL_IaaS_Instance_Rehost_Perf_List = new List<SQL_IaaS_Instance_Rehost_Perf>();
if (AzureSQL_IaaS_Server == null)
AzureSQL_IaaS_Server = new HashSet<string>();
foreach (string sqlInstanceId in AzureSQL_IaaS_Instance)
{
if (!AzureSQLInstancesData.ContainsKey(sqlInstanceId))
{
UserInputObj.LoggerObj.LogWarning($"SQL Instance ID {sqlInstanceId} does not exist in Azure SQL instances dataset, skipping");
continue;
}
var value = AzureSQLInstancesData[sqlInstanceId];
string discoveredMachineId = AssessmentIdToDiscoveryIdLookup.ContainsKey(value.MachineArmId) ? AssessmentIdToDiscoveryIdLookup[value.MachineArmId] : "";
if (value.AzureSQLVMSuitability != Suitabilities.Suitable && value.AzureSQLVMSuitability != Suitabilities.ConditionallySuitable)
{
if (string.IsNullOrEmpty(discoveredMachineId))
continue;
if (!AzureSQL_IaaS_Server.Contains(discoveredMachineId))
AzureSQL_IaaS_Server.Add(discoveredMachineId);
continue;
}
SQL_IaaS_Instance_Rehost_Perf obj = new SQL_IaaS_Instance_Rehost_Perf();
obj.MachineName = value.MachineName;
obj.SQLInstance = value.InstanceName;
obj.Environment = value.Environment;
obj.SQLServerOnAzureVMReadiness = new EnumDescriptionHelper().GetEnumDescription(value.AzureSQLVMSuitability);
obj.SQLServerOnAzureVMReadiness_Warnings = UtilityFunctions.GetMigrationIssueWarnings(value.AzureSQLVMMigrationIssues);
obj.SQLServerOnAzureVMConfiguration = value.AzureSQLVMSkuName;
obj.MonthlyComputeCostEstimate = value.AzureSQLVMMonthlyComputeCost;
obj.MonthlyComputeCostEstimate_RI3year = value.AzureSQLVMMonthlyComputeCost_RI3year;
obj.MonthlyComputeCostEstimate_AHUB = value.AzureSQLVMMonthlyComputeCost_AHUB;
obj.MonthlyComputeCostEstimate_AHUB_RI3year = value.AzureSQLVMMonthlyComputeCost_AHUB_RI3year;
obj.MonthlyComputeCostEstimate_ASP3year = value.AzureSQLVMMonthlyComputeCost_ASP3year;
obj.MonthlyStorageCostEstimate = value.AzureSQLVMMonthlyStorageCost;
obj.MonthlySecurityCostEstimate = value.AzureSQLVMMonthlySecurityCost;
obj.SQLServerONAzureVMManagedDiskConfiguration = UtilityFunctions.GetRecommendedDiskSKUs(value.AzureSQLVMLogDisks) +
UtilityFunctions.GetRecommendedDiskSKUs(value.AzureSQLVMDataDisks);
obj.UserDatabases = value.DatabaseSummaryNumberOfUserDatabases;
obj.RecommendedDeploymentType = AzureSQLTargetType.AzureSqlVirtualMachine.ToString(); // value.RecommendedAzureSqlTargetType.ToString();
obj.StandardHddDisks = UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Standard) + UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Standard);
obj.StandardSsdDisks = UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMLogDisks, RecommendedDiskTypes.StandardSSD) + UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMDataDisks, RecommendedDiskTypes.StandardSSD);
obj.PremiumDisks = UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Premium) + UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Premium);
obj.UltraDisks = UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Ultra) + UtilityFunctions.GetDiskTypeCount(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Ultra);
obj.MonthlyStorageCostForStandardHddDisks = UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Standard) + UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Standard);
obj.MonthlyStorageCostForStandardSsdDisks = UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMLogDisks, RecommendedDiskTypes.StandardSSD) + UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMDataDisks, RecommendedDiskTypes.StandardSSD);
obj.MonthlyStorageCostForPremiumDisks = UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Premium) + UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Premium);
obj.MonthlyStorageCostForUltraDisks = UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMLogDisks, RecommendedDiskTypes.Ultra) + UtilityFunctions.GetDiskTypeStorageCost(value.AzureSQLVMDataDisks, RecommendedDiskTypes.Ultra);
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.CpuUtilizationPercentage = 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.SQLServerOnAzureVMConfigurationTargetCores = value.AzureSQLVMCores;
obj.MonthlyAzureSiteRecoveryCostEstimate = value.MonthlyAzureSiteRecoveryCostEstimate;
obj.MonthlyAzureBackupCostEstimate = value.MonthlyAzureBackupCostEstimate;
obj.GroupName = value.GroupName;
obj.MachineId = AssessmentIdToDiscoveryIdLookup.ContainsKey(value.MachineArmId) ? AssessmentIdToDiscoveryIdLookup[value.MachineArmId] : "";
SQL_IaaS_Instance_Rehost_Perf_List.Add(obj);
}
UserInputObj.LoggerObj.LogInformation($"Updated SQL_IaaS_Instance_Rehost_Perf excel model with data of {SQL_IaaS_Instance_Rehost_Perf_List.Count} instances");
UserInputObj.LoggerObj.LogInformation($"Number of servers that will be evaluated for Azure SQL server rehost: {AzureSQL_IaaS_Server.Count}");
return true;
}