Skip to content

Commit 2ceb046

Browse files
committed
Do bulk update
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 2362056 commit 2ceb046

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

vulnerabilities/improvers/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from vulnerabilities.pipelines import enhance_with_exploitdb
1818
from vulnerabilities.pipelines import enhance_with_kev
1919
from vulnerabilities.pipelines import enhance_with_metasploit
20-
from vulnerabilities.pipelines import fill_vulnerability_summary_pipeline
2120
from vulnerabilities.pipelines import flag_ghost_packages
21+
from vulnerabilities.pipelines import populate_vulnerability_summary_pipeline
2222
from vulnerabilities.pipelines import remove_duplicate_advisories
2323

2424
IMPROVERS_REGISTRY = [
@@ -48,7 +48,7 @@
4848
collect_commits.CollectFixCommitsPipeline,
4949
add_cvss31_to_CVEs.CVEAdvisoryMappingPipeline,
5050
remove_duplicate_advisories.RemoveDuplicateAdvisoriesPipeline,
51-
fill_vulnerability_summary_pipeline.PopulateVulnerabilitySummariesPipeline,
51+
populate_vulnerability_summary_pipeline.PopulateVulnerabilitySummariesPipeline,
5252
]
5353

5454
IMPROVERS_REGISTRY = {

vulnerabilities/pipelines/fill_vulnerability_summary_pipeline.py renamed to vulnerabilities/pipelines/populate_vulnerability_summary_pipeline.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ def populate_missing_summaries(self):
3636

3737
progress = LoopProgress(total_iterations=vulnerabilities_qs.count(), logger=self.log)
3838

39+
vulnerabilities_to_be_updated = []
40+
3941
for vulnerability in progress.iter(vulnerabilities_qs.iterator()):
4042
cve_alias = vulnerability.aliases.filter(alias__startswith="CVE-").first()
4143

4244
if not cve_alias:
4345
self.log(
4446
f"Vulnerability {vulnerability.vulnerability_id} has no CVE alias",
45-
level=logging.INFO,
47+
level=logging.DEBUG,
4648
)
4749
continue
4850

@@ -54,10 +56,16 @@ def populate_missing_summaries(self):
5456
best_advisory = matching_advisories.order_by("-date_collected").first()
5557
# Note: we filtered above to only get non-empty summaries
5658
vulnerability.summary = best_advisory.summary
57-
vulnerability.save()
59+
vulnerabilities_to_be_updated.append(vulnerability)
5860
self.log(
5961
f"Updated summary for vulnerability {vulnerability.vulnerability_id}",
6062
level=logging.INFO,
6163
)
6264
else:
63-
self.log(f"No advisory found for alias {cve_alias}", level=logging.INFO)
65+
self.log(f"No advisory found for alias {cve_alias}", level=logging.DEBUG)
66+
Vulnerability.objects.bulk_update(vulnerabilities_to_be_updated, ["summary"])
67+
self.log(
68+
f"Successfully populated {len(vulnerabilities_to_be_updated)} vulnerabilities with summary",
69+
level=logging.INFO,
70+
)
71+
self.log("Pipeline completed", level=logging.INFO)

vulnerabilities/tests/pipelines/test_fill_vulnerability_summary_pipeline.py renamed to vulnerabilities/tests/pipelines/test_populate_vulnerability_summary_pipeline.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
from vulnerabilities.models import Advisory
1717
from vulnerabilities.models import Alias
1818
from vulnerabilities.models import Vulnerability
19-
from vulnerabilities.pipelines.fill_vulnerability_summary_pipeline import (
19+
from vulnerabilities.pipelines.populate_vulnerability_summary_pipeline import (
2020
PopulateVulnerabilitySummariesPipeline,
2121
)
2222

2323

24-
class FillVulnerabilitySummariesPipelineTest(TestCase):
24+
class PopulateVulnerabilitySummariesPipelineTest(TestCase):
2525
def setUp(self):
2626
self.data = Path(__file__).parent.parent / "test_data"
2727

28-
def test_fill_missing_summaries_from_nvd(self):
28+
def test_populate_missing_summaries_from_nvd(self):
2929
"""
3030
Test that vulnerabilities without summaries get them from NVD advisories.
3131
"""

0 commit comments

Comments
 (0)