Skip to content

Commit 6dbd9d7

Browse files
Changed status setting for no-scanjob pattern, simplified the scanjob map, embeded scan button into resource table's table actions
1 parent 83e431c commit 6dbd9d7

File tree

10 files changed

+136
-74
lines changed

10 files changed

+136
-74
lines changed

pkg/sbombastic-image-vulnerability-scanner/components/RegistryDetails.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<div class="resource-header">
66
<div class="resource-header-name-state">
77
<span class="resource-header-name">
8-
<RouterLink :to="`/c/${this.$route.params.cluster}/${ this.PRODUCT_NAME }/${ this.RESOURCE.REGISTRY }/`">{{ t('imageScanner.registries.title') }}:</RouterLink>
8+
<RouterLink :to="`/c/${this.$route.params.cluster}/${ this.PRODUCT_NAME }/${ this.RESOURCE.REGISTRY }/`">{{ t('imageScanner.registries.title') }}:</RouterLink>
99
{{ $route.params.id }}
1010
</span>
1111
<RegisterStatusBadge :status="registryStatus" />
@@ -63,6 +63,15 @@
6363
await this.$store.dispatch('cluster/find', { type: RESOURCE.REGISTRY, id: `${this.$route.params.ns}/${this.$route.params.id}` });
6464
let registry = this.$store.getters['cluster/byId'](RESOURCE.REGISTRY, `${this.$route.params.ns}/${this.$route.params.id}`);
6565
66+
67+
await this.$store.dispatch('cluster/findAll', { type: RESOURCE.SCAN_JOB });
68+
let scanJobs = this.$store.getters['cluster/all'](RESOURCE.SCAN_JOB);
69+
70+
// filter scan jobs for the current registry
71+
scanJobs = scanJobs.filter((job) => {
72+
return job.spec.registry === registry.metadata.name;
73+
});
74+
6675
this.registryStatus = this.getRegistryStatus(registry);
6776
this.registryMetadata = [
6877
{

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div class="badge" :class="statusClass">
3-
<div v-if="status" class="text">{{ t(`imageScanner.enum.status.${status.toLowerCase()}`) }}</div>
3+
<div v-if="status" class="text" :class="statusClass">{{ t(`imageScanner.enum.status.${status.toLowerCase()}`) }}</div>
44
</div>
55
</template>
66

@@ -29,7 +29,7 @@
2929
case REGISTRY_STATUS.FAILED:
3030
return "failed";
3131
default:
32-
return "";
32+
return "none";
3333
}
3434
}
3535
}
@@ -82,6 +82,9 @@
8282
font-style: normal;
8383
font-weight: 400;
8484
line-height: 19px;
85+
&.none {
86+
color: var(--muted);
87+
}
8588
}
8689
}
8790
</style>

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<template>
2-
<div v-if="registryStatus.registry_name" class="registry-status-record">
3-
<RouterLink class="registry-name" :to="`/c/${this.$route.params.cluster}/${ this.PRODUCT_NAME }/${ this.PAGE.REGISTRIES }/${ registryStatus.namespace }/${ registryStatus.registry_name }`">{{ registryStatus.registry_name }}</RouterLink>
2+
<div v-if="registryStatus.registryName" class="registry-status-record">
3+
<RouterLink class="registry-name" :to="`/c/${this.$route.params.cluster}/${ this.PRODUCT_NAME }/${ this.PAGE.REGISTRIES }/${ registryStatus.namespace }/${ registryStatus.registryName }`">{{ registryStatus.registryName }}</RouterLink>
44
<div class="uri">{{ registryStatus.uri }}</div>
5-
<div class="prev-status"><RegisterStatusBadge :status="registryStatus.prev_status"/></div>
5+
<div class="prev-status"><RegisterStatusBadge :status="registryStatus.prevStatus"/></div>
66
<div class="arrow"></div>
7-
<div class="curr-status"><RegisterStatusBadge :status="registryStatus.curr_status"/></div>
8-
<div class="update-time">{{ `${updateTime(registryStatus.last_update_time)} ${t("imageScanner.general.ago")}`}}</div>
7+
<div class="curr-status"><RegisterStatusBadge :status="registryStatus.currStatus"/></div>
8+
<div class="update-time">{{ `${updateTime(registryStatus.lastUpdateTime)}` }}</div>
99
</div>
1010
<div v-else class="registry-status-record">
1111
<div class="no-data"></div>
@@ -38,7 +38,7 @@
3838
},
3939
methods: {
4040
updateTime(lastUpdateTime) {
41-
return elapsedTime(Date.now() / 1000 - new Date(lastUpdateTime).getTime() / 1000).label;
41+
return elapsedTime(Math.ceil(Date.now() / 1000) - Math.ceil((new Date(lastUpdateTime).getTime() / 1000))).label + ' ' + this.t("imageScanner.general.ago");
4242
}
4343
}
4444
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ export function init($plugin: IPlugin, store: any) {
6969
PAGE.IMAGE_OVERVIEW,
7070
PAGE.VULNERABILITY_OVERVIEW,
7171
PAGE.VEX_MANAGEMENT,
72-
"demo"
72+
//"demo"
7373
]);
7474

75-
basicType([RESOURCE.REGISTRY], 'Advanced');
75+
basicType([RESOURCE.REGISTRY, PAGE.VEX_MANAGEMENT], 'Advanced');
7676

7777
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,20 @@ export const REGISTRY_SCAN_TABLE = [
3636
{
3737
name: "status",
3838
labelKey: "imageScanner.registries.registrytable.header.status",
39-
value: "scanjobs.0.status.statusResult.type",
39+
value: "currStatus",
4040
formatter: "RegistryStatusCellBadge",
4141
sort: "status",
4242
width: 100,
4343
},
4444
{
45-
name: "_progress",
45+
name: "progress",
4646
labelKey: "imageScanner.registries.registrytable.header.progress",
47-
value: "scanjobs.0.status.imagesCount",
48-
getValue: (row: any) => row.scanjobs[0].status.imagesCount,
47+
getValue: (row: any) => {
48+
return {
49+
progress: row.progress,
50+
error: row.error,
51+
}
52+
},
4953
formatter: "ProgressCell",
5054
sort: "progress",
5155
},

pkg/sbombastic-image-vulnerability-scanner/formatters/PreviousScanCell.vue

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,27 @@ export default {
1212
}
1313
},
1414
methods: {
15-
getStatusStyle(row) {
16-
if (row && row.scanjobs[1] && row.scanjobs[1].status && row.scanjobs[1].status.statusResult && row.scanjobs[1].status.statusResult.type) {
17-
return { color: 'var(--text-secondary)' };
18-
} else {
19-
return { color: 'var(--text-muted)' };
20-
}
21-
},
2215
getStatusText(row) {
23-
if (row && row.scanjobs[1] && row.scanjobs[1].status && row.scanjobs[1].status.statusResult && row.scanjobs[1].status.statusResult.type) {
24-
return this.t(`imageScanner.enum.status.${row.scanjobs[1].status.statusResult.type.toLowerCase()}`);
25-
} else {
26-
return this.t('imageScanner.enum.status.none');
27-
}
16+
return this.t(`imageScanner.enum.status.${row.prevStatus.toLowerCase()}`);
17+
},
18+
getStatusLabelClass(row) {
19+
return row.prevStatus.toLowerCase();
20+
},
21+
getStatusDotClass(row) {
22+
return `dot ${row.prevStatus.toLowerCase()}`;
2823
}
2924
}
3025
};
3126
</script>
3227

3328
<template>
34-
<div v-if="row && row.scanjobs[1] && row.scanjobs[1].status && row.scanjobs[1].status.statusResult && row.scanjobs[1].status.statusResult.type" class="previous-scan-cell">
35-
<div class="dot" :class="row.scanjobs[1].status.statusResult.type.toLowerCase()"></div>
36-
<div class="status" :style="getStatusStyle(row)">{{ getStatusText(row) }}</div>
37-
<div v-if="row.scanjobs[1].status.statusResult.progress">
38-
<ProgressCell :status="row.scanjobs[1].status.statusResult" />
29+
<div class="previous-scan-cell">
30+
<div class="dot" :class="getStatusDotClass(row)"></div>
31+
<div class="status" :class="getStatusLabelClass(row)">{{ getStatusText(row) }}</div>
32+
<div v-if="row.prevProgress">
33+
<ProgressCell :status="{ progress: row.prevProgress, error: row.error }" />
3934
</div>
4035
</div>
41-
<div v-else class="previous-scan-cell">
42-
<div class="dot pending"></div>
43-
<div class="status" style="color: var(--text-secondary)">{{ t('imageScanner.enum.status.pending') }}</div>
44-
</div>
4536
</template>
4637

4738
<style lang="scss" scoped>
@@ -53,6 +44,9 @@ export default {
5344
font-size: 14px;
5445
.status {
5546
font-size: 14px;
47+
&.none {
48+
color: var(--muted);
49+
}
5650
}
5751
.dot {
5852
width: 8px;

pkg/sbombastic-image-vulnerability-scanner/formatters/ProgressCell.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default {
1010
</script>
1111
<template>
1212
<div class="progress-cell">
13-
<span v-if="value.progress" class="progress-text">{{ value.progress }}% | <span v-if="value.errors">{{ value.errors }}</span></span>
13+
<span v-if="value.progress" class="progress-text">{{ value.progress }}% | <span v-if="value.error">{{ value.error }}</span></span>
1414
<span v-else class="progress-text text-muted">n/a</span>
1515
</div>
1616
</template>

pkg/sbombastic-image-vulnerability-scanner/formatters/RegistryStatusCellBadge.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ export default {
1414
</script>
1515

1616
<template>
17-
<RegisterStatusBadge :status="value.toLowerCase() || 'pending'" />
17+
<RegisterStatusBadge :status="value.toLowerCase()" />
1818
</template>

pkg/sbombastic-image-vulnerability-scanner/l10n/en-us.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ imageScanner:
77
addNew: Add new
88
refresh: Refresh data
99
startScan: Start scan
10+
delete: Delete
1011
recentUpdatedRegistries:
1112
title: Latest status updates
1213
StatusDistribution:
@@ -62,8 +63,8 @@ imageScanner:
6263
imagesFound: Images found
6364
error: Error
6465
messages:
65-
registryScanFailed: Registry scan failed
66-
registryScanComplete: Registry scan complete
66+
registryScanFailed: Registry scan failed to start
67+
registryScanComplete: Registry scan is started successfully
6768
images:
6869
title: Images
6970
downloadReport: Download full report
@@ -119,6 +120,7 @@ imageScanner:
119120
inprogress: In progress
120121
complete: Complete
121122
failed: Failed
123+
none: n/a
122124
enabled: Enabled
123125
disabled: Disabled
124126
prevScan:
@@ -130,6 +132,7 @@ imageScanner:
130132
general:
131133
refresh: Refresh data
132134
ago: ago
135+
justNow: Just now
133136
none: none
134137

135138
typeLabel:

0 commit comments

Comments
 (0)