in src/Discovery/Discover.cs [27:102]
public bool BeginDiscovery()
{
if (UserInputObj == null)
throw new Exception("User input provided is null");
UserInputObj.LoggerObj.LogInformation("Initiating discovered data retrieval");
DeletePreviousDiscoveryReport();
string masterSitesUrl = Routes.ProtocolScheme + Routes.AzureManagementApiHostname + Routes.ForwardSlash +
Routes.SubscriptionPath + Routes.ForwardSlash + UserInputObj.Subscription.Key + Routes.ForwardSlash +
Routes.ResourceGroupPath + Routes.ForwardSlash + UserInputObj.ResourceGroupName.Value + Routes.ForwardSlash +
Routes.ProvidersPath + Routes.ForwardSlash + Routes.OffAzureProvidersPath + Routes.ForwardSlash +
Routes.MasterSitesPath + Routes.ForwardSlash + UserInputObj.DiscoverySiteName +
Routes.QueryStringQuestionMark + Routes.QueryParameterApiVersion + Routes.QueryStringEquals + Routes.MasterSiteApiVersion;
string masterSitesJsonResponse = "";
try
{
masterSitesJsonResponse = new HttpClientHelper().GetHttpRequestJsonStringResponse(masterSitesUrl, UserInputObj).Result;
}
catch (OperationCanceledException)
{
throw;
}
catch (AggregateException aeMasterSites)
{
string errorMessage = "";
foreach (var e in aeMasterSites.Flatten().InnerExceptions)
{
if (e is OperationCanceledException)
throw e;
else
{
errorMessage = errorMessage + e.Message + " ";
}
}
UserInputObj.LoggerObj.LogError($"Failed to retrieve master sites: {errorMessage}");
return false;
}
catch (Exception exMasterSitesHttpResponse)
{
UserInputObj.LoggerObj.LogError($"Failed to retrieve master sites: {exMasterSitesHttpResponse.Message}");
return false;
}
MasterSitesJSON masterSitesObj = JsonConvert.DeserializeObject<MasterSitesJSON>(masterSitesJsonResponse);
UserInputObj.LoggerObj.LogInformation(3, "Received discovery sites"); // 8 % complete
if (UserInputObj.CancellationContext.IsCancellationRequested)
UtilityFunctions.InitiateCancellation(UserInputObj);
int excelCreationPercentProgress = 0;
if (UserInputObj.AzureMigrateSourceAppliances.Contains("import"))
excelCreationPercentProgress = PerformImportDiscovery(masterSitesObj);
else
excelCreationPercentProgress = PerformApplianceDiscovery(masterSitesObj);
if (DiscoveredData.Count == 0)
{
UserInputObj.LoggerObj.LogError($"Consolidated discovery data has no discovered machines");
return false;
}
UserInputObj.LoggerObj.LogInformation($"Retrieved discovery data for {DiscoveredData.Count.ToString()} machines");
DiscoveryProperties discoveryProperties = new DiscoveryProperties();
CreateDiscoveryPropertiesModel(discoveryProperties);
ExportDiscoveryReport exporter = new ExportDiscoveryReport(DiscoveredData, VCenterHostData, discoveryProperties);
exporter.GenerateDiscoveryReportExcel();
UserInputObj.LoggerObj.LogInformation(excelCreationPercentProgress, "Discovery report excel created successfully"); // IsExpressWorkflow ? 20 : 100 % Complete
return true;
}