in src/Assessment/Processor/ProcessDatasets.cs [80:271]
public void InititateProcessing()
{
if (UserInputObj == null)
throw new Exception("Received null user input object for processing datasets.");
UserInputObj.LoggerObj.LogInformation("Processing datasets to generate excel models");
// Core report models
CoreProperties corePropertiesObj = new CoreProperties();
List<All_VM_IaaS_Server_Rehost_Perf> All_VM_IaaS_Server_Rehost_Perf_List = new List<All_VM_IaaS_Server_Rehost_Perf>();
List<SQL_All_Instances> SQL_All_Instances_List = new List<SQL_All_Instances>();
List<SQL_MI_PaaS> SQL_MI_PaaS_List = new List<SQL_MI_PaaS>();
List<SQL_IaaS_Instance_Rehost_Perf> SQL_IaaS_Instance_Rehost_Perf_List = new List<SQL_IaaS_Instance_Rehost_Perf>();
List<SQL_IaaS_Server_Rehost_Perf> SQL_IaaS_Server_Rehost_Perf_List = new List<SQL_IaaS_Server_Rehost_Perf>();
List<SQL_IaaS_Server_Rehost_AsOnPrem> SQL_IaaS_Server_Rehost_AsOnPrem_List = new List<SQL_IaaS_Server_Rehost_AsOnPrem>();
List<WebApp_PaaS> WebApp_PaaS_List = new List<WebApp_PaaS>();
List<WebApp_IaaS_Server_Rehost_Perf> WebApp_IaaS_Server_Rehost_Perf_List = new List<WebApp_IaaS_Server_Rehost_Perf>();
List<WebApp_IaaS_Server_Rehost_AsOnPrem> WebApp_IaaS_Server_Rehost_AsOnPrem_List = new List<WebApp_IaaS_Server_Rehost_AsOnPrem>();
List<VM_SS_IaaS_Server_Rehost_Perf> VM_SS_IaaS_Server_Rehost_Perf_List = new List<VM_SS_IaaS_Server_Rehost_Perf>();
List<VM_SS_IaaS_Server_Rehost_AsOnPrem> VM_SS_IaaS_Server_Rehost_AsOnPrem_List = new List<VM_SS_IaaS_Server_Rehost_AsOnPrem>();
List<VM_IaaS_Server_Rehost_Perf> VM_IaaS_Server_Rehost_Perf_List = new List<VM_IaaS_Server_Rehost_Perf>();
List<VM_IaaS_Server_Rehost_AsOnPrem> VM_IaaS_Server_Rehost_AsOnPrem_List = new List<VM_IaaS_Server_Rehost_AsOnPrem>();
Business_Case Business_Case_Data = new Business_Case();
List<Financial_Summary> Financial_Summary_List = new List<Financial_Summary>();
Cash_Flows Cash_Flows_Data = new Cash_Flows();
List<AVS_Summary> AVS_Summary_List = new List<AVS_Summary>();
List<AVS_IaaS_Rehost_Perf> AVS_IaaS_Rehost_Perf_List = new List<AVS_IaaS_Rehost_Perf>();
List<Decommissioned_Machines> Decommissioned_Machines_List = new List<Decommissioned_Machines>();
// Opportunity report models
List<SQL_MI_Issues_and_Warnings> SQL_MI_Issues_and_Warnings_List = new List<SQL_MI_Issues_and_Warnings>();
List<SQL_MI_Opportunity> SQL_MI_Opportunity_List = new List<SQL_MI_Opportunity>();
List<WebApp_Opportunity> WebApp_Opportunity_List = new List<WebApp_Opportunity>();
List<VM_Opportunity_Perf> VM_Opportunity_Perf_List = new List<VM_Opportunity_Perf>();
List<VM_Opportunity_AsOnPrem> VM_Opportunity_AsOnPrem_List = new List<VM_Opportunity_AsOnPrem>();
// Clash report models
List<Clash_Report> Clash_Report_List = new List<Clash_Report>();
// Dependent lists
HashSet<string> AzureSQL_IaaS_Instance = new HashSet<string>(); // Also the list for SQL_MI_Opportunity
HashSet<string> AzureSQL_IaaS_Server = new HashSet<string>();
HashSet<string> AzureVM_Opportunity_Perf = new HashSet<string>();
HashSet<string> AzureVM_Opportunity_AsOnPrem = new HashSet<string>();
HashSet<string> AzureWebApp_Opportunity = new HashSet<string>();
if (AzureWebApp_IaaS == null)
AzureWebApp_IaaS = new HashSet<string>();
// Core report tabs
CreateCorePropertiesModel(corePropertiesObj);
Process_All_VM_IaaS_Server_Rehost_Perf_Model(All_VM_IaaS_Server_Rehost_Perf_List);
Process_SQL_All_Instances_Model(SQL_All_Instances_List); // should be the first SQL core report model to be processed.
Process_SQL_MI_PaaS_Model(SQL_MI_PaaS_List, AzureSQL_IaaS_Instance);
Process_SQL_IaaS_Instance_Rehost_Perf_Model(SQL_IaaS_Instance_Rehost_Perf_List, AzureSQL_IaaS_Instance, AzureSQL_IaaS_Server);
Process_SQL_IaaS_Server_Rehost_Perf_Model(SQL_IaaS_Server_Rehost_Perf_List, AzureSQL_IaaS_Server, AzureVM_Opportunity_Perf);
Process_SQL_IaaS_Server_Rehost_AsOnPrem_Model(SQL_IaaS_Server_Rehost_AsOnPrem_List, AzureSQL_IaaS_Server, AzureVM_Opportunity_AsOnPrem);
Process_WebApp_PaaS_Model(WebApp_PaaS_List, AzureWebApp_Opportunity);
Process_WebApp_IaaS_Server_Rehost_Perf_Model(WebApp_IaaS_Server_Rehost_Perf_List, AzureVM_Opportunity_Perf);
Process_WebApp_IaaS_Server_Rehost_AsOnPrem_Model(WebApp_IaaS_Server_Rehost_AsOnPrem_List, AzureVM_Opportunity_AsOnPrem);
Process_VM_SS_IaaS_Server_Rehost_Perf_Model(VM_SS_IaaS_Server_Rehost_Perf_List, AzureVM_Opportunity_Perf, AzureSQL_IaaS_Server);
Process_VM_SS_IaaS_Server_Rehost_AsOnPrem_Model(VM_SS_IaaS_Server_Rehost_AsOnPrem_List, AzureVM_Opportunity_AsOnPrem, AzureSQL_IaaS_Server);
Process_VM_IaaS_Server_Rehost_Perf_Model(VM_IaaS_Server_Rehost_Perf_List, AzureVM_Opportunity_Perf);
Process_VM_IaaS_Server_Rehost_AsOnPrem_Model(VM_IaaS_Server_Rehost_AsOnPrem_List, AzureVM_Opportunity_AsOnPrem);
Process_Business_Case_Model(Business_Case_Data, SQL_MI_PaaS_List, SQL_IaaS_Instance_Rehost_Perf_List, SQL_IaaS_Server_Rehost_Perf_List,
WebApp_PaaS_List, WebApp_IaaS_Server_Rehost_Perf_List,
VM_IaaS_Server_Rehost_Perf_List);
Process_Financial_Summary_Model(Financial_Summary_List, SQL_MI_PaaS_List, SQL_IaaS_Instance_Rehost_Perf_List, SQL_IaaS_Server_Rehost_Perf_List,
WebApp_PaaS_List, WebApp_IaaS_Server_Rehost_Perf_List,
VM_IaaS_Server_Rehost_Perf_List);
Process_Cash_Flows_Model(Cash_Flows_Data);
Process_AVS_Summary_Model(AVS_Summary_List);
Process_AVS_IaaS_Rehost_Perf_Model(AVS_IaaS_Rehost_Perf_List);
Process_Decommissioned_Machines_Model(Decommissioned_Machines_List);
// Opportunity report tabs
Process_SQL_MI_Issues_and_Warnings_Model(SQL_MI_Issues_and_Warnings_List);
Process_SQL_MI_Opportunity_Model(SQL_MI_Opportunity_List, AzureSQL_IaaS_Instance);
Process_WebApp_Opportunity_Model(WebApp_Opportunity_List, AzureWebApp_Opportunity);
Process_VM_Opportunity_Perf_Model(VM_Opportunity_Perf_List, AzureVM_Opportunity_Perf);
Process_VM_Opportunity_AsOnPrem_Model(VM_Opportunity_AsOnPrem_List, AzureVM_Opportunity_AsOnPrem);
// Generate the clash report
UserInputObj.LoggerObj.LogInformation("Generating excel model for Clash_Report");
foreach (var kvp in AzureVMPerformanceBasedMachinesData)
{
Clash_Report obj = new Clash_Report();
obj.MachineName = kvp.Value.DisplayName;
obj.Environment = kvp.Value.Environment;
obj.OperatingSystem = UtilityFunctions.GetStringValue(kvp.Value.OperatingSystem);
obj.BootType = UtilityFunctions.GetStringValue(kvp.Value.BootType);
var macIpKvp = UtilityFunctions.ParseMacIpAddress(kvp.Value.NetworkAdapterList);
obj.MacAddresses = macIpKvp.Key;
obj.IPAddresses = macIpKvp.Value;
obj.VMHost = UtilityFunctions.GetStringValue(kvp.Value.DatacenterManagementServerName);
obj.MachineId = kvp.Value.DatacenterMachineArmId;
int count = 0;
foreach (var value in VM_IaaS_Server_Rehost_Perf_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.VM_IaaS_Server_Rehost_Perf_Clash = count;
count = 0;
foreach (var value in SQL_IaaS_Instance_Rehost_Perf_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.SQL_IaaS_Instance_Rehost_Perf_Clash = count;
count = 0;
foreach (var value in SQL_MI_PaaS_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.SQL_MI_PaaS_Clash = count;
count = 0;
foreach (var value in SQL_IaaS_Server_Rehost_Perf_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.SQL_IaaS_Server_Rehost_Perf_Clash = count;
count = 0;
foreach (var value in WebApp_PaaS_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.WebApp_PaaS_Clash = count;
count = 0;
foreach (var value in WebApp_IaaS_Server_Rehost_Perf_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.WebApp_IaaS_Server_Rehost_Perf_Clash = count;
count = 0;
foreach (var value in VM_SS_IaaS_Server_Rehost_Perf_List)
if (kvp.Key.Equals(value.MachineId))
count += 1;
obj.VM_SS_IaaS_Server_Rehost_Perf_Clash = count;
Clash_Report_List.Add(obj);
}
UserInputObj.LoggerObj.LogInformation($"Updated Clash_Report excel model with data of {Clash_Report_List.Count} machines");
UserInputObj.LoggerObj.LogInformation(90 - UserInputObj.LoggerObj.GetCurrentProgress(), "Completed job for creating excel models");
UserInputObj.LoggerObj.LogInformation("Generating core report excel sheet");
ExportCoreReport exportCoreReportObj = new ExportCoreReport
(
corePropertiesObj,
All_VM_IaaS_Server_Rehost_Perf_List,
SQL_All_Instances_List,
SQL_MI_PaaS_List,
SQL_IaaS_Instance_Rehost_Perf_List,
SQL_IaaS_Server_Rehost_Perf_List,
SQL_IaaS_Server_Rehost_AsOnPrem_List,
WebApp_PaaS_List,
WebApp_IaaS_Server_Rehost_Perf_List,
WebApp_IaaS_Server_Rehost_AsOnPrem_List,
VM_SS_IaaS_Server_Rehost_Perf_List,
VM_SS_IaaS_Server_Rehost_AsOnPrem_List,
VM_IaaS_Server_Rehost_Perf_List,
VM_IaaS_Server_Rehost_AsOnPrem_List,
Business_Case_Data,
Financial_Summary_List,
Cash_Flows_Data,
AVS_Summary_List,
AVS_IaaS_Rehost_Perf_List,
Decommissioned_Machines_List
);
exportCoreReportObj.GenerateCoreReportExcel();
UserInputObj.LoggerObj.LogInformation(93 - UserInputObj.LoggerObj.GetCurrentProgress(), "Generated core report excel sheet");
UserInputObj.LoggerObj.LogInformation("Generating opportunity report excel sheet");
ExportOpportunityReport exportOpportunityReportObj = new ExportOpportunityReport
(
SQL_MI_Issues_and_Warnings_List,
SQL_MI_Opportunity_List,
WebApp_Opportunity_List,
VM_Opportunity_Perf_List,
VM_Opportunity_AsOnPrem_List
);
exportOpportunityReportObj.GenerateOpportunityReportExcel();
UserInputObj.LoggerObj.LogInformation(96 - UserInputObj.LoggerObj.GetCurrentProgress(), "Generated opportunity report excel sheet");
UserInputObj.LoggerObj.LogInformation("Generating clash report excel sheet");
ExportClashReport exportClashReportObj = new ExportClashReport(Clash_Report_List);
exportClashReportObj.GenerateClashReportExcel();
UserInputObj.LoggerObj.LogInformation(100 - UserInputObj.LoggerObj.GetCurrentProgress(), "Generated clash report excel sheet");
}