Skip to content

Commit 916ca8e

Browse files
committed
Fix failing V2 pipelines
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 5d7b97e commit 916ca8e

3 files changed

Lines changed: 50 additions & 33 deletions

File tree

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Version v39.0.0
2727
- Increase frequency and priority for critical pipelines
2828
- Add ALTCHA verification in UI
2929
- Add API/ UI support for Patch/PackageCommitPatch
30+
- Fix failing V2 pipelinea
3031

3132

3233
Version v38.6.0

vulnerabilities/pipelines/v2_improvers/collect_ssvc_trees.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,13 @@ def collect_ssvc_data(self):
8080
advisory_map[alias.alias].add(adv)
8181

8282
existing_ssvc = {
83-
s.source_advisory_id: s
83+
(s.source_advisory_id, s.vector): s
8484
for s in SSVC.objects.filter(source_advisory_id__in=[a.id for a in advisories])
8585
}
8686

87+
self.log(f"Existing SSVC rows found: {len(existing_ssvc)}")
88+
self.log(f"Advisories to process: {len(advisories)}")
89+
8790
to_create = []
8891
to_update = []
8992

@@ -99,7 +102,9 @@ def collect_ssvc_data(self):
99102
if not (ssvc_tree and decision):
100103
continue
101104

102-
existing = existing_ssvc.get(advisory.id)
105+
key = (advisory.id, ssvc_vector)
106+
107+
existing = existing_ssvc.get(key)
103108

104109
if existing:
105110
existing.options = ssvc_tree
@@ -131,33 +136,31 @@ def collect_ssvc_data(self):
131136
)
132137

133138
# Refresh newly created IDs
134-
created_ssvc = {
135-
s.source_advisory_id: s
136-
for s in SSVC.objects.filter(source_advisory_id__in=[a.id for a in advisories])
137-
}
139+
created_ssvc = defaultdict(list)
140+
141+
for s in SSVC.objects.filter(source_advisory_id__in=[a.id for a in advisories]):
142+
created_ssvc[s.source_advisory_id].append(s)
138143

139144
through_model = SSVC.related_advisories.through
140145

141146
through_rows = []
142147

143148
for advisory in advisories:
144-
ssvc_obj = created_ssvc.get(advisory.id)
145-
146-
if not ssvc_obj:
147-
continue
149+
ssvc_objs = created_ssvc.get(advisory.id, [])
148150

149151
related = advisory_map.get(advisory.advisory_id, set())
150152

151-
for related_adv in related:
152-
if related_adv.id == advisory.id:
153-
continue
153+
for ssvc_obj in ssvc_objs:
154+
for related_adv in related:
155+
if related_adv.id == advisory.id:
156+
continue
154157

155-
through_rows.append(
156-
through_model(
157-
ssvc_id=ssvc_obj.id,
158-
advisoryv2_id=related_adv.id,
158+
through_rows.append(
159+
through_model(
160+
ssvc_id=ssvc_obj.id,
161+
advisoryv2_id=related_adv.id,
162+
)
159163
)
160-
)
161164

162165
through_model.objects.bulk_create(
163166
through_rows,

vulnerabilities/pipes/apache_kafka.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,39 @@ def parse_range(raw_range):
4848
if not range:
4949
continue
5050
if "-" not in range:
51-
parsed_range.append(
52-
VersionConstraint(
53-
comparator="=",
54-
version=SemverVersion(range),
51+
version = parse_exact_version(range)
52+
if version:
53+
parsed_range.append(
54+
VersionConstraint(
55+
comparator="=",
56+
version=version,
57+
)
5558
)
56-
)
5759
continue
5860

5961
lhs, rhs = range.split("-")
60-
parsed_range.append(
61-
VersionConstraint(
62-
comparator=">=",
63-
version=SemverVersion(lhs.strip()),
62+
lhs_version = parse_exact_version(lhs.strip())
63+
rhs_version = parse_exact_version(rhs.strip())
64+
if lhs_version:
65+
parsed_range.append(
66+
VersionConstraint(
67+
comparator=">=",
68+
version=lhs_version,
69+
)
6470
)
65-
)
66-
parsed_range.append(
67-
VersionConstraint(
68-
comparator="<=",
69-
version=SemverVersion(rhs.strip()),
71+
if rhs_version:
72+
parsed_range.append(
73+
VersionConstraint(
74+
comparator="<=",
75+
version=rhs_version,
76+
)
7077
)
71-
)
7278

7379
return parsed_range
80+
81+
82+
def parse_exact_version(version_str):
83+
try:
84+
return SemverVersion(version_str)
85+
except Exception:
86+
return None

0 commit comments

Comments
 (0)