/** * AppBarClusterBadge — registerAppBarAction cluster health badge. * * Displays "rook-ceph: HEALTH_OK" in the Headlamp top nav bar. * Color-coded: green=HEALTH_OK, orange=HEALTH_WARN, red=HEALTH_ERR. * Returns null if no CephCluster found (no clutter on unmanaged clusters). * * Wrapped in RookCephDataProvider at registration time (index.tsx). */ import React from 'react'; import { useHistory } from 'react-router-dom'; import { useRookCephContext } from '../api/RookCephDataContext'; function getHealthColor(health: string | undefined): string { switch (health) { case 'HEALTH_OK': return 'var(--mui-palette-success-main, #4caf50)'; case 'HEALTH_WARN': return 'var(--mui-palette-warning-main, #ff9800)'; case 'HEALTH_ERR': return 'var(--mui-palette-error-main, #f44336)'; default: return 'var(--mui-palette-action-disabled, #9e9e9e)'; } } export default function AppBarClusterBadge() { const { cephClusters, loading } = useRookCephContext(); const history = useHistory(); if (loading || cephClusters.length === 0) return null; const primary = cephClusters[0]; const health = primary?.status?.ceph?.health; const color = getHealthColor(health); const label = health ?? 'Unknown'; const ariaLabel = `Rook-Ceph cluster health: ${label}`; const handleClick = () => { history.push('/rook-ceph'); }; return ( ); }