Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion sage.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import logging
import os
from pathlib import Path
from requests.exceptions import HTTPError
import sys

# TODO: Find scans (code locations) whose scan frequency is higher than we recommend
Expand Down Expand Up @@ -135,11 +136,21 @@ def _get_data(self):
logging.info("Fetched %i projects", len(projects))
total_versions = 0
project_count = 0
#
# When Sage runs for a long time there is a chance someone deletes a project while it is gathering data
# about the projects. To defend against that we catch the error and build a list of errant projects
# and remove them from the list (below)
errant_projects = list()
for project in projects:
project_count += 1
project_name = project['name']
print("Project ({}/{}): {}; versions:".format(project_count, len(projects), project_name), end='', flush=True)
versions = list(hub.get_resource('versions', project, headers={'accept': "application/vnd.blackducksoftware.project-detail-5+json"}))
try:
versions = list(hub.get_resource('versions', project, headers={'accept': "application/vnd.blackducksoftware.project-detail-5+json"}))
except HTTPError:
logging.warning(f"HTTPError when attempting retrieve versions for project {project['name']}, removing project")
errant_projects.append(project['name'])
continue
print(len(versions))
for version in versions:
version_name = version['versionName']
Expand All @@ -160,6 +171,8 @@ def _get_data(self):
project['versions'] = versions
project['num_versions'] = len(versions)
total_versions += len(versions)

projects = [p for p in projects if p['name'] not in errant_projects]
projects = [self._copy_common_attributes(p) for p in projects]
self.data['projects'] = projects

Expand Down
4 changes: 2 additions & 2 deletions test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ def create_project_versions(hub_instance, project_name, versions=[], project_par

if response.status_code == 201:
project = hub_instance.get_project_by_name(project_name)
for version in range(20):
response = hub_instance.create_project_version(project, version)
for version in versions:
response = hub_instance.create_project_version(project, str(version))
if response.status_code == 201:
logging.debug("Created version {}".format(version))
else:
Expand Down