コード例 #1
0
        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());
            }
        }
コード例 #2
0
 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);
 }