Skip to content

Commit 9b4800d

Browse files
Merge pull request #13578 from cyril-ui-developer/oh-something-went-wrong-imgmanifastvul-page
OCPBUGS-28967: 'Oh no somthing went wrong' shown on Image Manifest Vulnerability page after create IMV via CL
2 parents 164d5cf + f4a0e6e commit 9b4800d

2 files changed

Lines changed: 31 additions & 20 deletions

File tree

frontend/packages/container-security/src/components/image-manifest-vuln.tsx

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export const highestSeverityIndex = (obj: ImageManifestVuln) =>
5555

5656
export const ImageManifestVulnDetails: React.FC<ImageManifestVulnDetailsProps> = (props) => {
5757
const { t } = useTranslation();
58+
const queryURL = quayURLFor(props.obj);
5859
return (
5960
<>
6061
<div className="co-m-pane__body">
@@ -73,16 +74,16 @@ export const ImageManifestVulnDetails: React.FC<ImageManifestVulnDetailsProps> =
7374
obj={props.obj}
7475
path="spec.image"
7576
/>
76-
<DetailsItem
77-
label={t('container-security~Manifest')}
78-
obj={props.obj}
79-
path="obj.spec.manifest"
80-
>
81-
<ExternalLink
82-
text={shortenHash(props.obj.spec.manifest)}
83-
href={quayURLFor(props.obj)}
84-
/>
85-
</DetailsItem>
77+
78+
{queryURL && (
79+
<DetailsItem
80+
label={t('container-security~Manifest')}
81+
obj={props.obj}
82+
path="obj.spec.manifest"
83+
>
84+
<ExternalLink text={shortenHash(props.obj.spec.manifest)} href={queryURL} />
85+
</DetailsItem>
86+
)}
8687
</dl>
8788
</div>
8889
</div>
@@ -157,6 +158,7 @@ export const ImageManifestVulnTableRow: React.FC<RowFunctionArgs<ImageManifestVu
157158
obj,
158159
}) => {
159160
const { name, namespace } = obj.metadata;
161+
const queryURL = quayURLFor(obj);
160162
return (
161163
<>
162164
<TableData className={tableColumnClasses[0]}>
@@ -184,7 +186,11 @@ export const ImageManifestVulnTableRow: React.FC<RowFunctionArgs<ImageManifestVu
184186
<TableData className={tableColumnClasses[4]}>{obj.status?.fixableCount || 0}</TableData>
185187
<TableData className={tableColumnClasses[5]}>{totalCount(obj)}</TableData>
186188
<TableData className={tableColumnClasses[6]}>
187-
<ExternalLink text={shortenHash(obj.spec.manifest)} href={quayURLFor(obj)} />
189+
{queryURL ? (
190+
<ExternalLink text={shortenHash(obj.spec.manifest)} href={queryURL} />
191+
) : (
192+
<span className="small text-muted">-</span>
193+
)}
188194
</TableData>
189195
</>
190196
);

frontend/packages/container-security/src/components/summary.tsx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,15 @@ export const securityHealthHandler: ResourceHealthHandler<WatchImageVuln> = ({
3737
return { state: HealthState.OK, message: '0 vulnerable images' };
3838
};
3939

40-
export const quayURLFor = (vuln: ImageManifestVuln) => {
41-
const base = vuln.spec.image
42-
.replace('@sha256', '')
43-
.split('/')
44-
.reduce((url, part, i) => [...url, part, ...(i === 0 ? ['repository'] : [])], [])
45-
.join('/');
46-
return `//${base}/manifest/${vuln.spec.manifest}?tab=vulnerabilities`;
47-
};
40+
export const quayURLFor = (vuln: ImageManifestVuln) =>
41+
// The first part of the url is the base
42+
vuln?.spec?.image
43+
? `//${vuln.spec.image
44+
.replace('@sha256', '')
45+
.split('/')
46+
.reduce((url, part, i) => [...url, part, ...(i === 0 ? ['repository'] : [])], [])
47+
.join('/')}/manifest/${vuln.spec?.manifest}?tab=vulnerabilities`
48+
: '';
4849

4950
export const SecurityBreakdownPopup: React.FC<SecurityBreakdownPopupProps> = ({
5051
imageManifestVuln,
@@ -184,7 +185,11 @@ export const SecurityBreakdownPopup: React.FC<SecurityBreakdownPopupProps> = ({
184185
</Link>
185186
</span>
186187
<div className="text-secondary">
187-
<ExternalLink href={quayURLFor(v)} text={getVulnerabilityCountText(v)} />
188+
{quayURLFor(v) ? (
189+
<ExternalLink href={quayURLFor(v)} text={getVulnerabilityCountText(v)} />
190+
) : (
191+
<span className="small text-muted">-</span>
192+
)}
188193
</div>
189194
</div>
190195
))}

0 commit comments

Comments
 (0)