Skip to content

Commit dfb5294

Browse files
Fixed bugs Registries and Image overview page
1 parent 7c618e1 commit dfb5294

File tree

4 files changed

+40
-15
lines changed

4 files changed

+40
-15
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export const images = [
22
{
3+
id: "struts-attacher:1.0",
34
metadata: {
45
name: "struts-attacher:1.0",
56
},
@@ -16,6 +17,7 @@ export const images = [
1617
},
1718
},
1819
{
20+
id: "imagemagick4.8.5613",
1921
metadata: {
2022
name: "imagemagick4.8.5613",
2123
},
@@ -32,6 +34,7 @@ export const images = [
3234
},
3335
},
3436
{
37+
id: "centos7.7.1908",
3538
metadata: {
3639
name: "centos7.7.1908",
3740
},
@@ -48,6 +51,7 @@ export const images = [
4851
},
4952
},
5053
{
54+
id: "nginx1.19.10",
5155
metadata: {
5256
name: "nginx1.19.10",
5357
},
@@ -64,6 +68,7 @@ export const images = [
6468
},
6569
},
6670
{
71+
id: "docker-compose:1.29.2",
6772
metadata: {
6873
name: "docker-compose:1.29.2",
6974
},
@@ -80,6 +85,7 @@ export const images = [
8085
},
8186
},
8287
{
88+
id: "python3.9.7",
8389
metadata: {
8490
name: "python3.9.7",
8591
},
@@ -96,6 +102,7 @@ export const images = [
96102
},
97103
},
98104
{
105+
id: "nodejs14.17.3",
99106
metadata: {
100107
name: "nodejs14.17.3",
101108
},
@@ -112,6 +119,7 @@ export const images = [
112119
},
113120
},
114121
{
122+
id: "redis5.0.7",
115123
metadata: {
116124
name: "redis5.0.7",
117125
},
@@ -128,6 +136,7 @@ export const images = [
128136
},
129137
},
130138
{
139+
id: "mongodb4.4.1",
131140
metadata: {
132141
name: "mongodb4.4.1",
133142
},
@@ -144,6 +153,7 @@ export const images = [
144153
},
145154
},
146155
{
156+
id: "golang1.16.5",
147157
metadata: {
148158
name: "golang1.16.5",
149159
},
@@ -160,6 +170,7 @@ export const images = [
160170
},
161171
},
162172
{
173+
id: "ruby2.7.3",
163174
metadata: {
164175
name: "ruby2.7.3",
165176
},
@@ -176,6 +187,7 @@ export const images = [
176187
},
177188
},
178189
{
190+
id: "elasticsearch7.10.0",
179191
metadata: {
180192
name: "elasticsearch7.10.0",
181193
},
@@ -192,6 +204,7 @@ export const images = [
192204
},
193205
},
194206
{
207+
id: "mysql8.0.25",
195208
metadata: {
196209
name: "mysql8.0.25",
197210
},
@@ -208,6 +221,7 @@ export const images = [
208221
},
209222
},
210223
{
224+
id: "php8.0.9",
211225
metadata: {
212226
name: "php8.0.9",
213227
},
@@ -224,6 +238,7 @@ export const images = [
224238
},
225239
},
226240
{
241+
id: "postgresql13.3",
227242
metadata: {
228243
name: "postgresql13.3",
229244
},
@@ -240,6 +255,7 @@ export const images = [
240255
},
241256
},
242257
{
258+
id: "terraform1.0.0",
243259
metadata: {
244260
name: "terraform1.0.0",
245261
},
@@ -256,6 +272,7 @@ export const images = [
256272
},
257273
},
258274
{
275+
id: "ansible2.10.5",
259276
metadata: {
260277
name: "ansible2.10.5",
261278
},
@@ -272,6 +289,7 @@ export const images = [
272289
},
273290
},
274291
{
292+
id: "kafka2.8.0",
275293
metadata: {
276294
name: "kafka2.8.0",
277295
},

pkg/sbombastic-image-vulnerability-scanner/models/sbombastic.rancher.io.registry.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { RESOURCE } from '@sbombastic-image-vulnerability-scanner/types';
44
import { _CREATE } from '@shell/config/query-params';
55
export default class Registry extends SteveModel {
66
get _availableActions() {
7-
console.log("Registry _availableActions");
87
const out = super._availableActions.filter(action => !['showConfiguration','download','downloadYaml', 'showConfiguration'].includes(action.action));
98

109
// In details page, we don't want to show the scan action
@@ -17,11 +16,10 @@ export default class Registry extends SteveModel {
1716
label: this.t('imageScanner.registries.button.startScan'),
1817
icon: 'icon-play',
1918
enabled: true,
20-
bulkable: false,
19+
bulkable: true,
2120
invoke: async ({}, res = []) => {
2221
const target = (res && res.length ? res[0] : r);
2322
const model = target._model || target;
24-
console.log("scanRegistry model", model);
2523
const scanjobObj = await this.$dispatch('create', {
2624
type: RESOURCE.SCAN_JOB,
2725
metadata: {

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,28 @@
2828
type="button"
2929
:disabled="disabled"
3030
@click="openAddEditRuleModal()">
31+
<i class="icon icon-download"></i>
3132
{{ t('imageScanner.images.downloadReport') }}
3233
</button>
3334
</div>
3435
</div>
3536
<div class="summary-section">
36-
<TopRiskyImagesChart :topRiskyImages="preprocessedDataset.topRiskyImages"/>
37-
<ImageRiskAssessment :chartData="preprocessedDataset.chartData"/>
37+
<TopRiskyImagesChart v-if="preprocessedDataset.topRiskyImages" :topRiskyImages="preprocessedDataset.topRiskyImages"/>
38+
<ImageRiskAssessment v-if="preprocessedDataset.chartData" :chartData="preprocessedDataset.chartData"/>
3839
</div>
3940
<SortableTable
4041
:has-advanced-filtering="false"
4142
:namespaced="false"
4243
:row-actions="false"
44+
:table-actions="true"
4345
:force-update-live-and-delayed="0"
4446
:use-query-params-for-simple-filtering="true"
4547
:sub-expandable="isGrouped"
4648
:sub-rows="isGrouped"
4749
:sub-expand-column="isGrouped"
4850
:rows="isGrouped ? preprocessedDataset.rowsByRepo : rows"
4951
:headers="isGrouped ? REPO_BASED_TABLE : IMAGE_LIST_TABLE"
52+
:key-field="'id'"
5053
@selection="onSelectionChange"
5154
>
5255
<template #header-left>
@@ -80,7 +83,6 @@
8083
:search="false"
8184
:row-actions="false"
8285
:table-actions="false"
83-
key-field="id"
8486
/>
8587
</td>
8688
</tr>
@@ -100,6 +102,7 @@
100102
import { images } from "@sbombastic-image-vulnerability-scanner/data/sbombastic.rancher.io.image";
101103
import { IMAGE_LIST_TABLE, REPO_BASED_TABLE, REPO_BASED_IMAGE_LIST_TABLE } from "@sbombastic-image-vulnerability-scanner/config/table-headers";
102104
import { Checkbox } from '@components/Form/Checkbox';
105+
import { RESOURCE } from '@sbombastic-image-vulnerability-scanner/types/sbombastic-image-vulnerability-scanner';
103106
export default {
104107
name: 'imageOverview',
105108
components: {

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
:has-advanced-filtering="false"
4242
:namespaced="false"
4343
:row-actions="true"
44+
:table-actions="true"
4445
:force-update-live-and-delayed="0"
4546
:use-query-params-for-simple-filtering="true"
4647
:rows="rows"
@@ -115,19 +116,17 @@ import { template } from "lodash";
115116
this.statusSummary = {};
116117
117118
let registriesCRD = this.$store.getters['cluster/all'](RESOURCE.REGISTRY);
118-
console.group("registriesCRD", registriesCRD);
119119
120120
//Fetch ScanJob CRD and sort by startTime DESC
121121
let scanJobCRD = this.$store.getters['cluster/all'](RESOURCE.SCAN_JOB).sort((a, b) => {
122-
if (!a.status || !a.status.startTime) {
122+
if (!a.status || !a.status.conditions|| !a.status.conditions[0].lastTransitionTime) {
123123
return 1;
124124
}
125-
if (!b.status || !b.status.startTime) {
125+
if (!b.status || !b.status.conditions|| !b.status.conditions[0].lastTransitionTime) {
126126
return -1;
127127
}
128-
return new Date(b.status.startTime) - new Date(a.status.startTime);
128+
return this.getLastTransitionTime(b.status.conditions) - this.getLastTransitionTime(a.status.conditions);
129129
});
130-
console.group("scanJobCRD", scanJobCRD);
131130
132131
const scanJobMap = this.getScanJobMap(scanJobCRD);
133132
const registryDataset = this.getRegistryDataset(registriesCRD, scanJobMap);
@@ -163,7 +162,9 @@ import { template } from "lodash";
163162
getScanJobMap(scanJobCRD) {
164163
let scanJobMap = {};
165164
scanJobCRD.forEach((rec) => {
166-
if (!rec.status) {
165+
// Calculate statusResult
166+
167+
if (!rec.status) {// A extreme corner case, the scanner created a job without status object
167168
rec.status = {
168169
statusResult: {
169170
type: "Pending",
@@ -243,8 +244,6 @@ import { template } from "lodash";
243244
if (status && statusSummary.hasOwnProperty(status)) {
244245
statusSummary[status]++;
245246
}
246-
// rec = this.addCustomActions(rec);
247-
console.log("rec", rec)
248247
return rec;
249248
});
250249
// Sort and limit the registryStatusList to 5 most recent updates
@@ -323,7 +322,14 @@ import { template } from "lodash";
323322
const availableActions = [scanAction, divider, ...actions];
324323
const _model = rec;
325324
return { ...rec, _model, availableActions};
326-
}
325+
},
326+
getLastTransitionTime(conditions) {
327+
let lastTransitionTime = 0;
328+
conditions.forEach(condition => {
329+
lastTransitionTime = Math.max(lastTransitionTime, new Date(condition.lastTransitionTime).getTime())
330+
})
331+
return lastTransitionTime;
332+
},
327333
},
328334
computed: {
329335
schema() {

0 commit comments

Comments
 (0)