Skip to content

Commit a633c18

Browse files
rushk014xingzhang-suse
authored andcommitted
feat(vulnerabilities-overview): Mock master filter implementation
1 parent b498d6b commit a633c18

File tree

4 files changed

+137
-40
lines changed

4 files changed

+137
-40
lines changed

pkg/sbombastic-image-vulnerability-scanner/components/common/SevereVulnerabilitiesItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<ScoreBadge :score="vulnerability.spec.scoreV3" scoreType="v3" />
77
<div class="impacted-container">
88
<div class="impacted">
9-
<span>{{ vulnerability.spec.impactedImages }}</span>
9+
<span>{{ vulnerability.spec.impactedImages_count }}</span>
1010
<BlockPercentageBar
1111
class="percentage-bar"
1212
:percentage="(vulnerability.spec.impactedImages / vulnerability.spec.totalImages) * 100"

pkg/sbombastic-image-vulnerability-scanner/config/table-headers.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
export const REGISTRY_SCAN_TABLE = [
32
{
43
name: "registry",
@@ -249,10 +248,10 @@ export const VULNERABILITIES_TABLE = [
249248
{
250249
name: "affectedImages",
251250
labelKey: "imageScanner.vulnerabilities.table.headers.affectedImages",
252-
value: "spec.impactedImages",
251+
value: "spec.impactedImages_count",
253252
formatter: "ImpactedCell",
254253
formatterParams: { ticks: 23 },
255-
sort: "spec.impactedImages",
254+
sort: "spec.impactedImages_count",
256255
width: 200,
257256
},
258257
{
@@ -265,10 +264,10 @@ export const VULNERABILITIES_TABLE = [
265264
{
266265
name: "identifiedImages",
267266
labelKey: "imageScanner.vulnerabilities.table.headers.identifiedImages",
268-
value: "spec.identifiedImages",
267+
value: "spec.identifiedImages_count",
269268
formatter: "ImpactedCell",
270269
formatterParams: { ticks: 45 },
271-
sort: "spec.identifiedImages",
270+
sort: "spec.identifiedImages_count",
272271
width: 300,
273272
},
274273
];

pkg/sbombastic-image-vulnerability-scanner/data/sbombastic.rancher.io.vulnerability.js

Lines changed: 111 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,14 @@ export const cves = [
1515
spec: {
1616
scoreV3: '9.9',
1717
severity: 'Critical',
18-
identifiedImages: 106,
19-
impactedImages: 103,
18+
identifiedImages: {
19+
base: 40,
20+
nonBase: 66,
21+
},
22+
impactedImages: {
23+
base: 38,
24+
nonBase: 65,
25+
},
2026
}
2127
},
2228
{
@@ -27,8 +33,14 @@ export const cves = [
2733
spec: {
2834
scoreV3: '9.6',
2935
severity: 'Critical',
30-
identifiedImages: 234,
31-
impactedImages: 98,
36+
identifiedImages: {
37+
base: 100,
38+
nonBase: 134,
39+
},
40+
impactedImages: {
41+
base: 40,
42+
nonBase: 58,
43+
},
3244
}
3345
},
3446
{
@@ -39,8 +51,14 @@ export const cves = [
3951
spec: {
4052
scoreV3: '8.8',
4153
severity: 'High',
42-
identifiedImages: 321,
43-
impactedImages: 95,
54+
identifiedImages: {
55+
base: 121,
56+
nonBase: 200,
57+
},
58+
impactedImages: {
59+
base: 45,
60+
nonBase: 50,
61+
},
4462
}
4563
},
4664
{
@@ -51,8 +69,14 @@ export const cves = [
5169
spec: {
5270
scoreV3: '8.6',
5371
severity: 'High',
54-
identifiedImages: 450,
55-
impactedImages: 92,
72+
identifiedImages: {
73+
base: 200,
74+
nonBase: 250,
75+
},
76+
impactedImages: {
77+
base: 40,
78+
nonBase: 52,
79+
},
5680
}
5781
},
5882
{
@@ -63,8 +87,14 @@ export const cves = [
6387
spec: {
6488
scoreV3: '8.5',
6589
severity: 'High',
66-
identifiedImages: 300,
67-
impactedImages: 90,
90+
identifiedImages: {
91+
base: 100,
92+
nonBase: 200,
93+
},
94+
impactedImages: {
95+
base: 30,
96+
nonBase: 60,
97+
},
6898
}
6999
},
70100
{
@@ -75,8 +105,14 @@ export const cves = [
75105
spec: {
76106
scoreV3: '7.5',
77107
severity: 'Medium',
78-
identifiedImages: 250,
79-
impactedImages: 85,
108+
identifiedImages: {
109+
base: 100,
110+
nonBase: 150,
111+
},
112+
impactedImages: {
113+
base: 35,
114+
nonBase: 50,
115+
},
80116
}
81117
},
82118
{
@@ -87,8 +123,14 @@ export const cves = [
87123
spec: {
88124
scoreV3: '7.2',
89125
severity: 'Medium',
90-
identifiedImages: 200,
91-
impactedImages: 80,
126+
identifiedImages: {
127+
base: 80,
128+
nonBase: 120,
129+
},
130+
impactedImages: {
131+
base: 30,
132+
nonBase: 50,
133+
},
92134
}
93135
},
94136
{
@@ -99,8 +141,14 @@ export const cves = [
99141
spec: {
100142
scoreV3: '6.8',
101143
severity: 'Medium',
102-
identifiedImages: 150,
103-
impactedImages: 75,
144+
identifiedImages: {
145+
base: 50,
146+
nonBase: 100,
147+
},
148+
impactedImages: {
149+
base: 25,
150+
nonBase: 50,
151+
},
104152
}
105153
},
106154
{
@@ -111,8 +159,14 @@ export const cves = [
111159
spec: {
112160
scoreV3: '5.5',
113161
severity: 'Low',
114-
identifiedImages: 100,
115-
impactedImages: 70,
162+
identifiedImages: {
163+
base: 40,
164+
nonBase: 60,
165+
},
166+
impactedImages: {
167+
base: 20,
168+
nonBase: 50,
169+
},
116170
}
117171
},
118172
{
@@ -123,20 +177,50 @@ export const cves = [
123177
spec: {
124178
scoreV3: '4.3',
125179
severity: 'Low',
126-
identifiedImages: 50,
127-
impactedImages: 65,
180+
identifiedImages: {
181+
base: 20,
182+
nonBase: 30,
183+
},
184+
impactedImages: {
185+
base: 15,
186+
nonBase: 50,
187+
},
128188
}
129189
},
130190
{
131-
id: 'CVE-2024-12345',
191+
id: 'CVE-2017-5327',
132192
metadata: {
133-
name: 'CVE-2024-12345',
193+
name: 'CVE-2017-5327',
134194
},
135195
spec: {
136-
scoreV3: '9.8',
137-
severity: 'Critical',
138-
identifiedImages: 150,
139-
impactedImages: 145,
196+
scoreV3: '3.1',
197+
severity: 'Low',
198+
identifiedImages: {
199+
base: 10,
200+
nonBase: 20,
201+
},
202+
impactedImages: {
203+
base: 10,
204+
nonBase: 50,
205+
},
140206
}
141-
}
207+
},
208+
{
209+
id: 'CVE-2017-5326',
210+
metadata: {
211+
name: 'CVE-2017-5326',
212+
},
213+
spec: {
214+
scoreV3: '1.0',
215+
severity: 'None',
216+
identifiedImages: {
217+
base: 5,
218+
nonBase: 10,
219+
},
220+
impactedImages: {
221+
base: 5,
222+
nonBase: 50,
223+
},
224+
}
225+
},
142226
];

pkg/sbombastic-image-vulnerability-scanner/pages/c/_cluster/sbombastic-image-vulnerability-scanner/Vulnerabilities.vue

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
<LabeledSelect
99
v-model:value="selectedImageFilter"
1010
:options="filterImageOptions"
11-
:close-on-select="true"
12-
:multiple="false"
11+
@update:value="updateFilter"
1312
/>
1413
</div>
1514
<div>
@@ -72,9 +71,9 @@
7271
},
7372
data() {
7473
const filterImageOptions = [
75-
this.t('imageScanner.images.filters.image.allImages'),
76-
this.t('imageScanner.images.filters.image.excludeBaseImages'),
77-
this.t('imageScanner.images.filters.image.includeBaseImages')
74+
{ label: this.t('imageScanner.images.filters.image.allImages'), value: 'all' },
75+
{ label: this.t('imageScanner.images.filters.image.excludeBaseImages'), value: 'excludeBase' },
76+
{ label: this.t('imageScanner.images.filters.image.includeBaseImages'), value: 'includeBase' }
7877
];
7978
return {
8079
VULNERABILITIES_TABLE,
@@ -83,7 +82,7 @@
8382
vulnerabilities: [],
8483
selectedRows: [],
8584
filterImageOptions,
86-
selectedImageFilter: filterImageOptions[0],
85+
selectedImageFilter: filterImageOptions[0].value,
8786
};
8887
},
8988
async fetch() {
@@ -97,13 +96,28 @@
9796
totalImages: totalVulnerabilities
9897
}
9998
}));
99+
this.updateFilter(this.selectedImageFilter);
100100
this.topSevereVulnerabilities = this.vulnerabilities.sort((a, b) => Number(b.spec.scoreV3) - Number(a.spec.scoreV3)).slice(0, 5);
101-
102101
},
103102
methods: {
104103
onSelectionChange(selected) {
105104
this.selectedRows = selected || [];
106105
},
106+
updateFilter(value) {
107+
console.log('Selected filter:', value);
108+
this.vulnerabilities.forEach(vul => {
109+
if (value === 'all') {
110+
vul.spec.identifiedImages_count = vul.spec.identifiedImages.base + vul.spec.identifiedImages.nonBase;
111+
vul.spec.impactedImages_count = vul.spec.impactedImages.base + vul.spec.impactedImages.nonBase;
112+
} else if (value === 'excludeBase') {
113+
vul.spec.identifiedImages_count = vul.spec.identifiedImages.nonBase;
114+
vul.spec.impactedImages_count = vul.spec.impactedImages.nonBase;
115+
} else if (value === 'includeBase') {
116+
vul.spec.identifiedImages_count = vul.spec.identifiedImages.base;
117+
vul.spec.impactedImages_count = vul.spec.impactedImages.base;
118+
}
119+
});
120+
}
107121
},
108122
}
109123
</script>

0 commit comments

Comments
 (0)