From f401207a206c36762d257dfc01e07ba9eab8c1e3 Mon Sep 17 00:00:00 2001 From: CYRIL AJIEH Date: Mon, 5 Feb 2024 17:30:34 -0500 Subject: [PATCH] oh-something-went-wrong-imgmanifastvul-page --- .../src/components/image-manifest-vuln.tsx | 17 ++++++++++---- .../src/components/summary.tsx | 23 +++++++++++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/frontend/packages/container-security/src/components/image-manifest-vuln.tsx b/frontend/packages/container-security/src/components/image-manifest-vuln.tsx index 81dbc04baa8..bcae8912baf 100644 --- a/frontend/packages/container-security/src/components/image-manifest-vuln.tsx +++ b/frontend/packages/container-security/src/components/image-manifest-vuln.tsx @@ -55,6 +55,7 @@ export const highestSeverityIndex = (obj: ImageManifestVuln) => export const ImageManifestVulnDetails: React.FC = (props) => { const { t } = useTranslation(); + const queryURL = quayURLFor(props.obj); return ( <>
@@ -78,10 +79,11 @@ export const ImageManifestVulnDetails: React.FC = obj={props.obj} path="obj.spec.manifest" > - + {queryURL ? ( + + ) : ( + - + )}
@@ -157,6 +159,7 @@ export const ImageManifestVulnTableRow: React.FC { const { name, namespace } = obj.metadata; + const queryURL = quayURLFor(obj); return ( <> @@ -184,7 +187,11 @@ export const ImageManifestVulnTableRow: React.FC{obj.status?.fixableCount || 0} {totalCount(obj)} - + {queryURL ? ( + + ) : ( + - + )} ); diff --git a/frontend/packages/container-security/src/components/summary.tsx b/frontend/packages/container-security/src/components/summary.tsx index 5a995703c78..8c2920f92f5 100644 --- a/frontend/packages/container-security/src/components/summary.tsx +++ b/frontend/packages/container-security/src/components/summary.tsx @@ -37,14 +37,15 @@ export const securityHealthHandler: ResourceHealthHandler = ({ return { state: HealthState.OK, message: '0 vulnerable images' }; }; -export const quayURLFor = (vuln: ImageManifestVuln) => { - const base = vuln.spec.image - .replace('@sha256', '') - .split('/') - .reduce((url, part, i) => [...url, part, ...(i === 0 ? ['repository'] : [])], []) - .join('/'); - return `//${base}/manifest/${vuln.spec.manifest}?tab=vulnerabilities`; -}; +export const quayURLFor = (vuln: ImageManifestVuln) => + // The first part of the url is the base + vuln?.spec?.image + ? `//${vuln.spec.image + .replace('@sha256', '') + .split('/') + .reduce((url, part, i) => [...url, part, ...(i === 0 ? ['repository'] : [])], []) + .join('/')}/manifest/${vuln.spec?.manifest}?tab=vulnerabilities` + : ''; export const SecurityBreakdownPopup: React.FC = ({ imageManifestVuln, @@ -184,7 +185,11 @@ export const SecurityBreakdownPopup: React.FC = ({
- + {quayURLFor(v) ? ( + + ) : ( + - + )}
))}