mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-09-13 10:49:21 +00:00
🐛 fix: restore plugin auth and proxy connection info
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user