+
+
Clusters
+
+
+
setQ(e.target.value)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") void loadAll()
+ }}
+ />
+
+
+
+
+
+
+ {/* Table */}
+
+
+
+
+
+ Name
+ Provider / Region
+ Status
+ Node Pools
+ Bastion
+ Actions
+
+
+
+ {clusters.map((c) => (
+
+ {c.name}
+
+ {c.provider || "—"}
+ {c.region || "—"}
+
+
+
+ {c.status || "unknown"}
+
+
+
+
+ {(c.node_pools || []).slice(0, 4).map((p) => (
+ {p.name}
+ ))}
+ {(c.node_pools || []).length === 0 && (
+ No pools
+ )}
+ {(c.node_pools || []).length > 4 && (
+ +{(c.node_pools || []).length - 4} more
+ )}
+
+
+
+ {c.bastion_server ? (
+
+
{c.bastion_server.hostname || truncateMiddle(c.bastion_server.id, 6)}
+
{c.bastion_server.ip}
+
+ ) : (
+ None
+ )}
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+ {clusters.length === 0 && (
+
+
+ No clusters yet.
+
+
+ )}
+
+
+
+
+
+ {/* Edit cluster */}
+
+
+ {/* Manage node pools */}
+
+
+ {/* Manage bastion */}
+
+
{JSON.stringify(clusters, null, 2)}
+
+ )
}