public ScanSummaryView GetMostRecentScanSummary(CodeLocationView codeLocationView)
        {
            HubPagedResponse <ScanSummaryView> response = GetScanSummaries(codeLocationView);
            ScanSummaryView scanSummary = null;

            if (response != null && response.Items != null)
            {
                scanSummary = response.Items[0];
            }
            return(scanSummary);
        }
예제 #2
0
        private List <ScanSummaryView> GetPendingScans(List <ScanSummaryView> scanSummaries)
        {
            List <ScanSummaryView> pendingScans = new List <ScanSummaryView>();

            foreach (ScanSummaryView scanSummaryItem in scanSummaries)
            {
                string          scanSummaryLink        = scanSummaryItem.Metadata.Href;
                ScanSummaryView currentScanSummaryItem = scanSummaryDataService.GetItem <ScanSummaryView>(scanSummaryLink);
                if (IsPending(currentScanSummaryItem.Status))
                {
                    pendingScans.Add(currentScanSummaryItem);
                }
                else if (IsError(currentScanSummaryItem.Status))
                {
                    throw new BlackDuckIntegrationException("There was a problem in the Hub processing the scan(s). Error Status : "
                                                            + currentScanSummaryItem.Status.ToString());
                }
            }

            return(pendingScans);
        }
예제 #3
0
        public void WaitForScanComplete(HttpClient client, HubPagedResponse <ScanSummaryView> currentPagedSummaries)
        {
            int currentSummaries = 0;

            if (currentPagedSummaries != null)
            {
                currentSummaries = currentPagedSummaries.TotalCount;
            }

            Stopwatch        stopwatch    = Stopwatch.StartNew();
            CodeLocationView codeLocation = null;

            while (stopwatch.ElapsedMilliseconds / 1000 < HubScanTimeout)
            {
                Log.LogMessage("Checking scan summary status");
                codeLocation = CodeLocationDataService.GetCodeLocationView(BdioId);
                if (codeLocation != null)
                {
                    break;
                }
                else
                {
                    Log.LogMessage("No code locations found. Trying again...");
                    Thread.Sleep(500);
                }
            }

            if (codeLocation == null)
            {
                throw new BlackDuckIntegrationException($"Failed to get the codelocation for {HubProjectName} ");
            }

            ScanStatusEnum currentStatus = ScanStatusEnum.UNSTARTED;

            while (stopwatch.ElapsedMilliseconds / 1000 < HubScanTimeout)
            {
                HubPagedResponse <ScanSummaryView> scanSummaries = ScanSummariesDataService.GetScanSummaries(codeLocation);
                if (scanSummaries == null || scanSummaries.Items == null)
                {
                    throw new BlackDuckIntegrationException($"There are no scan summaries @: {codeLocation.Metadata.Href}");
                }
                else if (scanSummaries.TotalCount > currentSummaries)
                {
                    ScanSummaryView scanSummary = scanSummaries.Items[0];
                    ScanStatusEnum  scanStatus  = scanSummary.Status;
                    if (!scanStatus.Equals(currentStatus))
                    {
                        currentStatus = scanStatus;
                        Log.LogMessage($"\tScan Status = {currentStatus} @ {stopwatch.ElapsedMilliseconds / 1000.0}");
                    }
                    if (currentStatus.Equals(ScanStatusEnum.COMPLETE))
                    {
                        stopwatch.Stop();
                        break;
                    }
                }
                Thread.Sleep(500);
            }

            if (stopwatch.ElapsedMilliseconds / 1000 > HubScanTimeout)
            {
                throw new BlackDuckIntegrationException($"Scanning of the codelocation: {codeLocation.Metadata.Href} execeded the {HubScanTimeout} second timeout");
            }
        }