void OnDataCollectWorker_DoWork(object sender, DoWorkEventArgs e) { try { ProgressPanelUpdate(-1); // run collector to get host information CollectionManager = new CCollectionManager(); List <CQuery.Types> queries = new List <CQuery.Types> { }; queries.Add(new CQuery.Types(CQuery.Types.Hosts)); queries.Add(new CQuery.Types(CQuery.Types.Components)); CollectionManager.Collect(DiscoveredSites, DiscoveredServers, queries, new CCollectionSchedule(CCollectionSchedule.RunOnce)); // update progress panel int p = 10; // wait for collector to complete p = OnDataCollectWorker_WaitForCollector(p, 20, "Collecting Data...", CollectionManager); // removing objects from discovered server list that are in fact children of other objects OnDataCollectWorker_RemoveDuplicateServers(); // run collector to get vm and datastore information queries = new List <CQuery.Types> { }; queries.Add(new CQuery.Types(CQuery.Types.VMs)); queries.Add(new CQuery.Types(CQuery.Types.Datastores)); queries.Add(new CQuery.Types(CQuery.Types.Events)); CollectionManager.Collect(DiscoveredSites, DiscoveredServers, queries, new CCollectionSchedule(CCollectionSchedule.RunOnce)); // wait for collector to complete p = OnDataCollectWorker_WaitForCollector(p, 70, "Collecting Data...", CollectionManager); if (CollectionManager.SessionManager.ErrorCount != DiscoveredServers.Count) // run if we don't have as many errors as discovered servers { //ReportManager = new CReportManager(); // [tbd] create templated layout, maybe add scheduling //ReportManager.RunReport(DiscoveredSites, DiscoveredServers); DatabaseManager = new CDatabaseManager(); DatabaseManager.Export(DiscoveredSites, DiscoveredServers); // wait for reporter to complete //OnDataCollectWorker_WaitForReporter(p, 95, "Generating Report...", ReportManager); OnDataCollectWorker_WaitForExport(p, 95, "Exporting Data...", DatabaseManager); ProgressPanelUpdate(100, "Data Collection Complete."); } else { ProgressPanelUpdate(100, "Data Collection Failed."); } } catch (Exception ex) { CExceptionHandler.ShowExceptionDialog(ex.ToString()); } }
private int OnDataCollectWorker_WaitForCollector(int p, int max, string title, CCollectionManager CollectionManager) { ProgressPanelUpdate(p, title, CollectionManager.SessionInfo); if (CollectionManager.SessionManager.ErrorCount != DiscoveredServers.Count) // run if we don't have as many errors as discovered servers { do { p = ProgressPanelUpdate(p, max); }while (CollectionManager != null && CollectionManager.SessionManager != null && !CollectionManager.SessionManager.Completed); // wait for data collection to complete } return(p); }