Skip to content

Commit 3db0a98

Browse files
committed
Refactor federate task
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent e0b1d95 commit 3db0a98

3 files changed

Lines changed: 16 additions & 44 deletions

File tree

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,16 @@
66
# See https://github.com/nexB/federatedcode for support or download.
77
# See https://aboutcode.org for more information about AboutCode.org OSS projects.
88
#
9+
910
from traceback import format_exc as traceback_format_exc
1011

1112
from django.core.management.base import BaseCommand
12-
from django.core.management.base import CommandError
1313

14-
from fedcode.importer import Importer
1514
from fedcode.models import FederateRequest
16-
from fedcode.models import SyncRequest
1715
from fedcode.signatures import FEDERATEDCODE_PRIVATE_KEY
1816
from fedcode.signatures import HttpSignature
1917

2018

21-
def sync_task():
22-
"""
23-
sync_task is a task to run the Importer and save the status
24-
"""
25-
for sync_r in SyncRequest.objects.all().order_by("created_at"):
26-
if not sync_r.done:
27-
try:
28-
repo = sync_r.repo
29-
repo.git_repo_obj.remotes.origin.pull()
30-
importer = Importer(repo, repo.admin)
31-
importer.run()
32-
sync_r.done = True
33-
except Exception as e:
34-
sync_r.error_message = (
35-
f"Failed to sync {sync_r.repo!r} {e!r} \n {traceback_format_exc()}"
36-
)
37-
finally:
38-
sync_r.save()
39-
40-
4119
def send_fed_req_task():
4220
"""
4321
send_fed_req_task is a task to send the http signed request to the target and save the status of the request
@@ -57,11 +35,5 @@ def send_fed_req_task():
5735

5836

5937
class Command(BaseCommand):
60-
def add_arguments(self, parser):
61-
parser.add_argument("task", choices=["sync", "federate"])
62-
6338
def handle(self, *args, **options):
64-
if options["task"] == "sync":
65-
sync_task()
66-
elif options["task"] == "federate":
67-
send_fed_req_task()
39+
send_fed_req_task()

fedcode/pipelines/sync_vulnerablecode.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def sync_vulnerabilities(repository, logger):
100100
yaml_data_a_blob,
101101
yaml_data_b_blob,
102102
)
103-
break
103+
104104
repository.last_imported_commit = latest_commit_hash
105105
repository.save()
106106
logger("The Importer run successfully")

tests/pipelines/test_sync_vulnerablecode.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
from django.contrib.auth.models import User
1111
from fedcode_test_utils import mute_post_save_signal # NOQA
1212

13-
from fedcode.importer import Importer
1413
from fedcode.models import Note
1514
from fedcode.models import Package
1615
from fedcode.models import Repository
1716
from fedcode.models import Service
1817
from fedcode.models import Vulnerability
18+
from fedcode.pipelines.sync_vulnerablecode import SyncVulnerableCode
1919

2020

2121
@pytest.fixture
@@ -45,8 +45,8 @@ def repo(db, service, mute_post_save_signal):
4545
def test_simple_importer(service, repo, mute_post_save_signal):
4646
# just add all packages and vulnerabilities
4747
repo.path = "/home/ziad/vul-sample/repo1"
48-
importer = Importer(repo, service)
49-
importer.run()
48+
importer = SyncVulnerableCode()
49+
importer.execute()
5050

5151
assert Note.objects.count() > 1
5252
assert Vulnerability.objects.count() > 1
@@ -59,8 +59,8 @@ def test_simple_importer(service, repo, mute_post_save_signal):
5959
last_imported_commit = repo.last_imported_commit
6060

6161
# Run importer again without add any new data
62-
importer = Importer(repo, service)
63-
importer.run()
62+
importer = SyncVulnerableCode()
63+
importer.execute()
6464

6565
assert note_n == Note.objects.count()
6666
assert vul_n == Vulnerability.objects.count()
@@ -70,17 +70,17 @@ def test_simple_importer(service, repo, mute_post_save_signal):
7070
# Edit last_imported_commit
7171
repo.last_imported_commit = "c8de84af0a7c11bf151e96142ce711824648ec41"
7272
repo.save()
73-
importer = Importer(repo, service)
74-
importer.run()
73+
importer = SyncVulnerableCode()
74+
importer.execute()
7575

7676

7777
@pytest.mark.skip(reason="Need a real git repo to test the importer")
7878
@pytest.mark.django_db
7979
def test_complex_importer(service, repo, mute_post_save_signal):
8080
# repo with 1 commit
8181
repo.path = "/home/ziad/vul-sample/repo1"
82-
importer = Importer(repo, service)
83-
importer.run()
82+
importer = SyncVulnerableCode()
83+
importer.execute()
8484

8585
assert Note.objects.count() > 1
8686
assert Vulnerability.objects.count() > 1
@@ -95,8 +95,8 @@ def test_complex_importer(service, repo, mute_post_save_signal):
9595
# Run importer again without add any new data
9696
# the same repo with 2 commit ( after pull )
9797
repo.path = "/home/ziad/vul-sample/repo2"
98-
importer = Importer(repo, service)
99-
importer.run()
98+
importer = SyncVulnerableCode()
99+
importer.execute()
100100

101101
assert note_n > Note.objects.count()
102102
assert vul_n > Vulnerability.objects.count()
@@ -105,5 +105,5 @@ def test_complex_importer(service, repo, mute_post_save_signal):
105105
# Edit last_imported_commit
106106
repo.last_imported_commit = "9c3ccee39baef6017d9152367402de9909eadd72"
107107
repo.save()
108-
importer = Importer(repo, service)
109-
importer.run()
108+
importer = SyncVulnerableCode()
109+
importer.execute()

0 commit comments

Comments
 (0)