From 0cf0d81e1086dcac9c39b7172719cc3b33bc5109 Mon Sep 17 00:00:00 2001 From: Gabriel Bernal Date: Tue, 17 Mar 2026 15:55:22 +0100 Subject: [PATCH] OCPBUGS-77113: remove dev to admin links as dev monitoring views are enabled Signed-off-by: Gabriel Bernal --- .../utilization-card/TopConsumerPopover.tsx | 11 ++++---- .../dashboard/MonitoringDashboardGraph.tsx | 8 +++++- .../overview/MonitoringOverview.tsx | 26 ++++++++++++------- .../overview/MonitoringOverviewAlerts.tsx | 6 ++--- .../cluster-dashboard/status-card.tsx | 15 +++++++++-- .../__tests__/prometheus-graph.spec.tsx | 8 +----- .../components/graphs/prometheus-graph.tsx | 2 +- 7 files changed, 47 insertions(+), 29 deletions(-) diff --git a/frontend/packages/console-shared/src/components/dashboard/utilization-card/TopConsumerPopover.tsx b/frontend/packages/console-shared/src/components/dashboard/utilization-card/TopConsumerPopover.tsx index 888e47eae21..66ec82caecb 100644 --- a/frontend/packages/console-shared/src/components/dashboard/utilization-card/TopConsumerPopover.tsx +++ b/frontend/packages/console-shared/src/components/dashboard/utilization-card/TopConsumerPopover.tsx @@ -3,20 +3,19 @@ import * as React from 'react'; import { Button, Popover, PopoverPosition } from '@patternfly/react-core'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom-v5-compat'; -import { useActivePerspective, LIMIT_STATE, Humanize } from '@console/dynamic-plugin-sdk'; +import { Humanize, LIMIT_STATE, useActivePerspective } from '@console/dynamic-plugin-sdk'; import { getPrometheusQueryResponse } from '@console/internal/actions/dashboards'; import { - withDashboardResources, DashboardItemProps, + withDashboardResources, } from '@console/internal/components/dashboard/with-dashboard-resources'; import { DataPoint } from '@console/internal/components/graphs'; import { getInstantVectorStats } from '@console/internal/components/graphs/utils'; import { resourcePathFromModel } from '@console/internal/components/utils'; import { ConsoleSelect } from '@console/internal/components/utils/console-select'; import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook'; -import { K8sKind, referenceForModel, K8sResourceCommon } from '@console/internal/module/k8s'; -import { getName, getNamespace, useFlag } from '../../..'; -import { FLAGS } from '../../../constants'; +import { K8sKind, K8sResourceCommon, referenceForModel } from '@console/internal/module/k8s'; +import { FLAGS, getName, getNamespace, useFlag } from '../../..'; import { RedExclamationCircleIcon, YellowExclamationTriangleIcon } from '../../status'; import Status from '../status-card/StatusPopup'; @@ -198,7 +197,7 @@ export const PopoverBody = withDashboardResources { const { t } = useTranslation(); + const [perspective] = useActivePerspective(); const queries = _.compact(_.castArray(query)); if (!queries.length) { return null; @@ -26,7 +28,11 @@ const PrometheusGraphLink = ({ query, namespace, ariaChartLinkLabel }) => { return ( {t('devconsole~Inspect')} diff --git a/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverview.tsx b/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverview.tsx index 44c941ce5d4..6b416e5a0e5 100644 --- a/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverview.tsx +++ b/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverview.tsx @@ -13,7 +13,7 @@ import { import { InfoCircleIcon } from '@patternfly/react-icons/dist/esm/icons/info-circle-icon'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom-v5-compat'; -import { Alert } from '@console/dynamic-plugin-sdk'; +import { Alert, useActivePerspective } from '@console/dynamic-plugin-sdk'; import { sortEvents } from '@console/internal/components/events'; import { FirehoseResult, LoadingBox } from '@console/internal/components/utils'; import { DeploymentConfigModel } from '@console/internal/models'; @@ -34,12 +34,27 @@ type MonitoringOverviewProps = { const MonitoringOverview: React.FC = (props) => { const { t } = useTranslation(); const { resource, pods, resourceEvents, monitoringAlerts } = props; + const [perspective] = useActivePerspective(); const firingAlerts = getFiringAlerts(monitoringAlerts); const [expanded, setExpanded] = React.useState([ 'metrics', ...(firingAlerts.length > 0 ? ['monitoring-alerts'] : []), ]); + const resourceLink = React.useMemo(() => { + const params = new URLSearchParams({ + namespace: resource?.metadata?.namespace, + type: resource?.kind?.toLowerCase(), + }); + + if (perspective === 'dev') { + params.set('dashboard', 'dashboard-k8s-resources-workloads-namespace'); + return `/dev-monitoring/ns/${resource?.metadata?.namespace}?${params.toString()}`; + } + + return `/monitoring/dashboards/dashboard-k8s-resources-workloads-namespace?${params.toString()}`; + }, [resource, perspective]); + if ( !resourceEvents || !resourceEvents.loaded || @@ -128,14 +143,7 @@ const MonitoringOverview: React.FC = (props) => { ) : ( <>
- + {t('devconsole~View dashboards')}
diff --git a/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverviewAlerts.tsx b/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverviewAlerts.tsx index a628f2bed5e..1f40a0764f7 100644 --- a/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverviewAlerts.tsx +++ b/frontend/packages/dev-console/src/components/monitoring/overview/MonitoringOverviewAlerts.tsx @@ -27,9 +27,9 @@ const MonitoringOverviewAlerts: React.FC = ({ ale rule: { name, id }, } = alert; const alertDetailsPageLink = - activePerspective === 'admin' - ? `/monitoring/alerts/${id}?${labelsToParams(alert.labels)}` - : `/dev-monitoring/ns/${namespace}/alerts/${id}?${labelsToParams(alert.labels)}`; + activePerspective === 'dev' + ? `/dev-monitoring/ns/${namespace}/alerts/${id}?${labelsToParams(alert.labels)}` + : `/monitoring/alerts/${id}?${labelsToParams(alert.labels)}`; return ( (mapStateToProps)(({ k8sModels const [dynamicSubsystemExtensions] = useResolvedExtensions< DynamicDashboardsOverviewHealthSubsystem >(isDynamicDashboardsOverviewHealthSubsystem); + const [, setActiveNamespace] = useActiveNamespace(); const subsystems = React.useMemo(() => { const filteredSubsystems = filterSubsystems( @@ -251,7 +255,14 @@ export const StatusCard = connect(mapStateToProps)(({ k8sModels actions={{ actions: ( <> - + { + // Set all namespaces selection so alert list is unfiltered + setActiveNamespace(ALL_NAMESPACES_KEY); + }} + > {t('public~View alerts')} diff --git a/frontend/public/components/graphs/__tests__/prometheus-graph.spec.tsx b/frontend/public/components/graphs/__tests__/prometheus-graph.spec.tsx index 28aff36bbc2..dd2885ced0d 100644 --- a/frontend/public/components/graphs/__tests__/prometheus-graph.spec.tsx +++ b/frontend/public/components/graphs/__tests__/prometheus-graph.spec.tsx @@ -92,17 +92,11 @@ describe('PrometheusGraphLink', () => { expectedUrl: '/monitoring/query-browser?query0=test', description: 'admin perspective with CAN_GET_NS=true', }, - { - perspective: 'dev', - canGetNS: false, - expectedUrl: '/dev-monitoring/ns/default/metrics?query0=test', - description: 'dev perspective with CAN_GET_NS=false', - }, { perspective: 'dev', canGetNS: true, expectedUrl: '/dev-monitoring/ns/default/metrics?query0=test', - description: 'dev perspective with CAN_GET_NS=true', + description: 'dev perspective graph link', }, ]; diff --git a/frontend/public/components/graphs/prometheus-graph.tsx b/frontend/public/components/graphs/prometheus-graph.tsx index 882bc9e2c26..dad41339e2c 100644 --- a/frontend/public/components/graphs/prometheus-graph.tsx +++ b/frontend/public/components/graphs/prometheus-graph.tsx @@ -34,7 +34,7 @@ const PrometheusGraphLink_: React.FC = ({ queries.forEach((q, index) => params.set(`query${index}`, q)); const url = - canAccessMonitoring && activePerspective === 'admin' + canAccessMonitoring && activePerspective !== 'dev' ? `/monitoring/query-browser?${params.toString()}` : `/dev-monitoring/ns/${namespace}/metrics?${params.toString()}`;