🐛 fix: restore plugin auth and proxy connection info

This commit is contained in:
2026-08-13 02:32:39 +07:00
parent 3df22125dd
commit 5567ac6594
20 changed files with 141 additions and 65 deletions
+16 -1
View File
@@ -1,6 +1,6 @@
"use client";
import type { ConnectionInfo, K8sNodeSummary, PodInfo } from "@minikura/api";
import type { ConnectionInfo, CustomResourceSummary, K8sNodeSummary, PodInfo } from "@minikura/api";
import { useCallback, useEffect, useState } from "react";
import { api } from "@/lib/api-client";
import { getReverseProxyApi } from "@/lib/api-helpers";
@@ -119,6 +119,20 @@ export function useTopologyData() {
nodeMetrics = nodeMetricsRes.data || { items: [] };
} catch (_err) {}
const proxyBackends = new Map<string, string[]>();
try {
const crResponse = await api.api.k8s["reverse-proxy-servers"].get();
for (const cr of (crResponse.data as CustomResourceSummary[]) || []) {
const backends = cr.status?.backends;
if (cr.name && Array.isArray(backends)) {
proxyBackends.set(
cr.name,
backends.filter((id): id is string => typeof id === "string")
);
}
}
} catch (_err) {}
const topologyGraph = buildTopologyGraph({
servers: normalServers,
proxies: reverseProxies,
@@ -127,6 +141,7 @@ export function useTopologyData() {
k8sNodes,
serverConnections: serverConnectionMap,
proxyConnections: proxyConnectionMap,
proxyBackends,
podMetrics,
nodeMetrics,
});
+12 -4
View File
@@ -59,15 +59,22 @@ interface BuildEnhancedGraphInput {
k8sNodes: K8sNodeSummary[];
serverConnections?: Map<string, ConnectionInfo | null>;
proxyConnections?: Map<string, ConnectionInfo | null>;
proxyBackends?: Map<string, string[]>;
podMetrics?: any;
nodeMetrics?: any;
}
function parseProxyServerConnections(
_proxy: ReverseProxyServer,
allServers: NormalServer[]
proxy: ReverseProxyServer,
allServers: NormalServer[],
backendsByProxyId?: Map<string, string[]>
): string[] {
return allServers.map((s) => s.id);
const backends = backendsByProxyId?.get(proxy.id);
if (!backends) {
return allServers.map((s) => s.id);
}
const known = new Set(allServers.map((s) => s.id));
return backends.filter((id) => known.has(id));
}
export function buildTopologyGraph(input: BuildEnhancedGraphInput): TopologyGraph {
@@ -79,6 +86,7 @@ export function buildTopologyGraph(input: BuildEnhancedGraphInput): TopologyGrap
k8sNodes,
serverConnections,
proxyConnections,
proxyBackends,
podMetrics,
nodeMetrics,
} = input;
@@ -103,7 +111,7 @@ export function buildTopologyGraph(input: BuildEnhancedGraphInput): TopologyGrap
}
for (const proxy of proxies) {
const connectedServerIds = parseProxyServerConnections(proxy, servers);
const connectedServerIds = parseProxyServerConnections(proxy, servers, proxyBackends);
proxyToServers.set(proxy.id, connectedServerIds);
for (const serverId of connectedServerIds) {
+1
View File
@@ -23,6 +23,7 @@
"@hookform/resolvers": "^5.7.1",
"@minikura/api": "workspace:*",
"@minikura/backend": "workspace:*",
"@minikura/shared": "workspace:*",
"@radix-ui/react-accordion": "^1.2.20",
"@radix-ui/react-avatar": "^1.2.6",
"@radix-ui/react-checkbox": "^1.3.11",