import React from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { api } from "@/utils/api"; import { DateTooltip } from "@/components/shared/date-tooltip"; import { Badge } from "@/components/ui/badge"; import { DeleteWorker } from "./workers/delete-worker"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { HelpCircle, LockIcon, MoreHorizontal } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { ShowNodeData } from "./show-node-data"; import { AddNode } from "./add-node"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; export const ShowNodes = () => { const { data, isLoading } = api.cluster.getNodes.useQuery(); const { data: registry } = api.registry.all.useQuery(); const haveAtLeastOneRegistry = !!(registry && registry?.length > 0); return (
Cluster Add nodes to your cluster
{haveAtLeastOneRegistry && (
)}
{haveAtLeastOneRegistry ? (
{isLoading &&
Loading...
} A list of your managers / workers. Hostname Status Role Availability Engine Version Created Actions {data?.map((node) => { const isManager = node.Spec.Role === "manager"; return ( {node.Description.Hostname} {node.Status.State} {node?.Spec?.Role} {node.Spec.Availability} {node?.Description.Engine.EngineVersion} Created{" "} Actions {!node?.ManagerStatus?.Leader && ( )} ); })}
) : (
To add nodes to your cluster, you need to configure at least one registry. Nodes need a registry to pull images from.
  • Docker Registry: Use custom registries like Docker Hub, DigitalOcean Registry, etc.
  • Self-Hosted Docker Registry: Automatically set up a local registry to store all images.
)}
); };