import { useState } from 'react'; import { useParams } from 'react-router'; import { UtilityCard, CopyableValue } from '../../components/UtilityCard'; import { Button } from '../../components/ui/button'; import { Key, Info, Network, Server, Copy, AlertCircle, } from 'lucide-react'; import { useDashboardToken, useClusterVersions, useNodeIPs, useControlPlaneIP, useCopySecret, } from '../../services/api/hooks/useUtilities'; export function UtilitiesPage() { const { instanceId } = useParams<{ instanceId: string }>(); const [secretToCopy, setSecretToCopy] = useState(''); const [sourceNamespace, setSourceNamespace] = useState(''); const [destinationNamespace, setDestinationNamespace] = useState(''); const dashboardToken = useDashboardToken(instanceId || ''); const versions = useClusterVersions(instanceId || ''); const nodeIPs = useNodeIPs(instanceId || ''); const controlPlaneIP = useControlPlaneIP(instanceId || ''); const copySecret = useCopySecret(); const handleCopySecret = () => { if (secretToCopy && sourceNamespace && destinationNamespace && instanceId) { copySecret.mutate({ instanceName: instanceId, secret: secretToCopy, sourceNamespace, destinationNamespace }); } }; return (

Utilities

Additional tools and utilities for cluster management

{/* Dashboard Token */} } isLoading={dashboardToken.isLoading} error={dashboardToken.error} > {dashboardToken.data && ( )} {/* Cluster Versions */} } isLoading={versions.isLoading} error={versions.error} > {versions.data && (
Kubernetes {versions.data.version}
{Object.entries(versions.data) .filter(([key]) => key !== 'version') .map(([key, value]) => (
{key.replace(/([A-Z])/g, ' $1').trim()} {String(value)}
))}
)}
{/* Node IPs */} } isLoading={nodeIPs.isLoading} error={nodeIPs.error} > {nodeIPs.data && (
{nodeIPs.data.ips.map((ip, index) => ( ))} {nodeIPs.data.ips.length === 0 && (
No nodes found
)}
)}
{/* Control Plane IP */} } isLoading={controlPlaneIP.isLoading} error={controlPlaneIP.error} > {controlPlaneIP.data && ( )} {/* Secret Copy Utility */} } >
setSecretToCopy(e.target.value)} className="w-full px-3 py-2 border rounded-lg bg-background" />
setSourceNamespace(e.target.value)} className="w-full px-3 py-2 border rounded-lg bg-background" />
setDestinationNamespace(e.target.value)} className="w-full px-3 py-2 border rounded-lg bg-background" />
{copySecret.isSuccess && (
Secret copied successfully!
)} {copySecret.error && (
{copySecret.error.message}
)}
); }