Skip to content

Commit 1ea270a

Browse files
authored
Merge pull request #1584 from aboutcode-org/github-importer-pipeline
Migrate GitHub importer to aboutcode pipeline
2 parents 454bd07 + 1d3da91 commit 1ea270a

File tree

8 files changed

+254
-111
lines changed

8 files changed

+254
-111
lines changed

vulnerabilities/importers/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from vulnerabilities.importers import epss
2020
from vulnerabilities.importers import fireeye
2121
from vulnerabilities.importers import gentoo
22-
from vulnerabilities.importers import github
2322
from vulnerabilities.importers import github_osv
2423
from vulnerabilities.importers import istio
2524
from vulnerabilities.importers import mozilla
@@ -38,14 +37,14 @@
3837
from vulnerabilities.importers import vulnrichment
3938
from vulnerabilities.importers import xen
4039
from vulnerabilities.pipelines import VulnerableCodeBaseImporterPipeline
40+
from vulnerabilities.pipelines import github_importer
4141
from vulnerabilities.pipelines import gitlab_importer
4242
from vulnerabilities.pipelines import nginx_importer
4343
from vulnerabilities.pipelines import npm_importer
4444
from vulnerabilities.pipelines import pypa_importer
4545

4646
IMPORTERS_REGISTRY = [
4747
nvd.NVDImporter,
48-
github.GitHubAPIImporter,
4948
pysec.PyPIImporter,
5049
alpine_linux.AlpineImporter,
5150
openssl.OpensslImporter,
@@ -78,6 +77,7 @@
7877
npm_importer.NpmImporterPipeline,
7978
nginx_importer.NginxImporterPipeline,
8079
gitlab_importer.GitLabImporterPipeline,
80+
github_importer.GitHubAPIImporterPipeline,
8181
]
8282

8383
IMPORTERS_REGISTRY = {

vulnerabilities/improvers/valid_versions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from vulnerabilities.importers.debian import DebianImporter
3232
from vulnerabilities.importers.debian_oval import DebianOvalImporter
3333
from vulnerabilities.importers.elixir_security import ElixirSecurityImporter
34-
from vulnerabilities.importers.github import GitHubAPIImporter
3534
from vulnerabilities.importers.github_osv import GithubOSVImporter
3635
from vulnerabilities.importers.istio import IstioImporter
3736
from vulnerabilities.importers.oss_fuzz import OSSFuzzImporter
@@ -42,6 +41,7 @@
4241
from vulnerabilities.improver import Inference
4342
from vulnerabilities.models import Advisory
4443
from vulnerabilities.pipelines import VulnerableCodeBaseImporterPipeline
44+
from vulnerabilities.pipelines.github_importer import GitHubAPIImporterPipeline
4545
from vulnerabilities.pipelines.gitlab_importer import GitLabImporterPipeline
4646
from vulnerabilities.pipelines.nginx_importer import NginxImporterPipeline
4747
from vulnerabilities.pipelines.npm_importer import NpmImporterPipeline
@@ -371,7 +371,7 @@ class GitLabBasicImprover(ValidVersionImprover):
371371

372372

373373
class GitHubBasicImprover(ValidVersionImprover):
374-
importer = GitHubAPIImporter
374+
importer = GitHubAPIImporterPipeline
375375
ignorable_versions = frozenset(
376376
[
377377
"0.1-bulbasaur",
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by Django 4.2.15 on 2024-09-27 14:31
2+
3+
from django.db import migrations
4+
5+
"""
6+
Update the created_by field on Advisory from the old qualified_name
7+
to the new pipeline_id.
8+
"""
9+
10+
11+
def update_created_by(apps, schema_editor):
12+
from vulnerabilities.pipelines.github_importer import GitHubAPIImporterPipeline
13+
14+
Advisory = apps.get_model("vulnerabilities", "Advisory")
15+
Advisory.objects.filter(created_by="vulnerabilities.importers.github.GitHubAPIImporter").update(
16+
created_by=GitHubAPIImporterPipeline.pipeline_id
17+
)
18+
19+
20+
21+
def reverse_update_created_by(apps, schema_editor):
22+
from vulnerabilities.pipelines.github_importer import GitHubAPIImporterPipeline
23+
24+
Advisory = apps.get_model("vulnerabilities", "Advisory")
25+
Advisory.objects.filter(created_by=GitHubAPIImporterPipeline.pipeline_id).update(
26+
created_by="vulnerabilities.importers.github.GitHubAPIImporter"
27+
)
28+
29+
30+
class Migration(migrations.Migration):
31+
32+
dependencies = [
33+
("vulnerabilities", "0066_update_gitlab_advisory_created_by"),
34+
]
35+
36+
operations = [
37+
migrations.RunPython(update_created_by, reverse_code=reverse_update_created_by),
38+
]

vulnerabilities/pipelines/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,12 @@ def advisories_count(self) -> int:
8989

9090
def collect_and_store_advisories(self):
9191
collected_advisory_count = 0
92-
progress = LoopProgress(total_iterations=self.advisories_count(), logger=self.log)
92+
estimated_advisory_count = self.advisories_count()
93+
94+
if estimated_advisory_count > 0:
95+
self.log(f"Collecting {estimated_advisory_count:,d} advisories")
96+
97+
progress = LoopProgress(total_iterations=estimated_advisory_count, logger=self.log)
9398
for advisory in progress.iter(self.collect_advisories()):
9499
if _obj := insert_advisory(
95100
advisory=advisory,

0 commit comments

Comments
 (0)