feat(v3s): add D518 code queue standby pod
This commit is contained in:
+54
-2
@@ -61,6 +61,8 @@ const SERVICE_CHECK_NAMES = [
|
||||
"microservice:catalog-todo-note",
|
||||
"microservice:catalog-oa-event-flow",
|
||||
"microservice:catalog-code-queue",
|
||||
"microservice:v3sctl-adapter-status",
|
||||
"microservice:v3sctl-control-plane",
|
||||
"microservice:catalog-filebrowser",
|
||||
"microservice:filebrowser-health",
|
||||
"microservice:filebrowser-webui",
|
||||
@@ -1026,6 +1028,8 @@ async function serviceChecks(config: UniDeskConfig, urls: PublicUrls, checks: E2
|
||||
const oaEventFlowEvents = dockerCoreJson("/api/microservices/oa-event-flow/proxy/api/events?limit=10");
|
||||
const oaEventFlowPipelineEvents = dockerCoreJson("/api/microservices/oa-event-flow/proxy/api/events?tags=service:pipeline&limit=10");
|
||||
const oaEventFlowStats = dockerCoreJson("/api/microservices/oa-event-flow/proxy/api/stats/trace?limit=10");
|
||||
const v3sctlStatus = dockerCoreJson("/api/microservices/v3sctl-adapter/status");
|
||||
const v3sctlControlPlane = dockerCoreJson("/api/microservices/v3sctl-adapter/proxy/api/control-plane");
|
||||
const codeQueueStatus = dockerCoreJson("/api/microservices/code-queue/status");
|
||||
const codeQueueHealth = dockerCoreJson("/api/microservices/code-queue/health");
|
||||
const codeQueueTasks = dockerCoreJson("/api/microservices/code-queue/proxy/api/tasks/overview?limit=5&transcriptLimit=1&compact=1&afterSeq=0&preferId=");
|
||||
@@ -1100,8 +1104,27 @@ async function serviceChecks(config: UniDeskConfig, urls: PublicUrls, checks: E2
|
||||
const oaEventFlowEventsBody = (oaEventFlowEvents as { body?: { ok?: boolean; events?: unknown[]; returned?: number } }).body;
|
||||
const oaEventFlowPipelineEventsBody = (oaEventFlowPipelineEvents as { body?: { ok?: boolean; events?: Array<{ tags?: unknown[]; sourceId?: string; type?: string; payload?: { runId?: string; pipelineId?: string } }>; returned?: number } }).body;
|
||||
const oaEventFlowStatsBody = (oaEventFlowStats as { body?: { ok?: boolean; stats?: unknown[]; returned?: number } }).body;
|
||||
const codeQueueHealthBody = (codeQueueHealth as { body?: { ok?: boolean; queue?: { defaultModel?: string; judgeConfigured?: boolean; modelReasoningEfforts?: Record<string, string> } } }).body;
|
||||
const codeQueueHealthBody = (codeQueueHealth as { body?: { ok?: boolean; egressProxy?: { connected?: boolean }; queue?: { defaultModel?: string; judgeConfigured?: boolean; modelReasoningEfforts?: Record<string, string> } } }).body;
|
||||
const codeQueueTasksBody = (codeQueueTasks as { body?: { ok?: boolean; queue?: { defaultModel?: string; modelReasoningEfforts?: Record<string, string> }; tasks?: unknown[] } }).body;
|
||||
const v3sctlControlPlaneBody = (v3sctlControlPlane as { body?: {
|
||||
ok?: boolean;
|
||||
clusterId?: string;
|
||||
noFallback?: boolean;
|
||||
managedServicesHealthy?: boolean;
|
||||
kubeApiProxy?: { mode?: string };
|
||||
services?: Array<{
|
||||
id?: string;
|
||||
status?: string;
|
||||
presentNodeIds?: string[];
|
||||
missingNodeIds?: string[];
|
||||
topologyComplete?: boolean;
|
||||
servingHealthy?: boolean;
|
||||
active?: { id?: string; healthy?: boolean };
|
||||
instances?: Array<{ id?: string; healthy?: boolean; proxyMode?: string }>;
|
||||
}>;
|
||||
} }).body;
|
||||
const v3sctlCodeQueueService = v3sctlControlPlaneBody?.services?.find((service) => service.id === "code-queue");
|
||||
const v3sctlD518Instance = v3sctlCodeQueueService?.instances?.find((instance) => instance.id === "D518");
|
||||
const filebrowserHealthBody = (filebrowserHealth as { body?: { status?: string } }).body;
|
||||
const filebrowserD601HealthBody = (filebrowserD601Health as { body?: { status?: string } }).body;
|
||||
const filebrowserWebuiText = String((filebrowserWebui as { body?: { text?: string } }).body?.text || "");
|
||||
@@ -1141,6 +1164,35 @@ async function serviceChecks(config: UniDeskConfig, urls: PublicUrls, checks: E2
|
||||
&& codeQueue.runtime?.orchestrator === "v3sctl"
|
||||
&& codeQueue.runtime?.container === null,
|
||||
{ microservices });
|
||||
addSelectedCheck(checks, options, "microservice:v3sctl-adapter-status",
|
||||
(v3sctlStatus as { ok?: boolean; body?: { microservice?: { id?: string; providerId?: string } } }).ok === true
|
||||
&& (v3sctlStatus as { body?: { microservice?: { id?: string; providerId?: string } } }).body?.microservice?.id === "v3sctl-adapter"
|
||||
&& (v3sctlStatus as { body?: { microservice?: { id?: string; providerId?: string } } }).body?.microservice?.providerId === "D601",
|
||||
v3sctlStatus);
|
||||
addSelectedCheck(checks, options, "microservice:v3sctl-control-plane",
|
||||
(v3sctlControlPlane as { ok?: boolean }).ok === true
|
||||
&& v3sctlControlPlaneBody?.ok === true
|
||||
&& v3sctlControlPlaneBody.clusterId === "unidesk-v8s"
|
||||
&& v3sctlControlPlaneBody.noFallback === true
|
||||
&& v3sctlControlPlaneBody.managedServicesHealthy === true
|
||||
&& v3sctlControlPlaneBody.kubeApiProxy?.mode === "kubernetes-api-service-proxy"
|
||||
&& v3sctlCodeQueueService?.status === "healthy"
|
||||
&& v3sctlCodeQueueService?.topologyComplete === true
|
||||
&& v3sctlCodeQueueService?.servingHealthy === true
|
||||
&& v3sctlCodeQueueService?.active?.id === "D601"
|
||||
&& v3sctlCodeQueueService?.active?.healthy === true
|
||||
&& (v3sctlCodeQueueService?.presentNodeIds ?? []).includes("D601")
|
||||
&& (v3sctlCodeQueueService?.presentNodeIds ?? []).includes("D518")
|
||||
&& (v3sctlCodeQueueService?.missingNodeIds ?? []).length === 0
|
||||
&& v3sctlD518Instance?.healthy === true
|
||||
&& v3sctlD518Instance?.proxyMode === "kubernetes-api-pod-readiness",
|
||||
{
|
||||
ok: (v3sctlControlPlane as { ok?: boolean }).ok,
|
||||
clusterId: v3sctlControlPlaneBody?.clusterId,
|
||||
noFallback: v3sctlControlPlaneBody?.noFallback,
|
||||
kubeApiProxy: v3sctlControlPlaneBody?.kubeApiProxy,
|
||||
service: v3sctlCodeQueueService,
|
||||
});
|
||||
addSelectedCheck(checks, options, "microservice:catalog-filebrowser", (microservices as { ok?: boolean }).ok === true
|
||||
&& filebrowser?.providerId === "D518"
|
||||
&& filebrowser.backend?.public === false
|
||||
@@ -1209,7 +1261,7 @@ async function serviceChecks(config: UniDeskConfig, urls: PublicUrls, checks: E2
|
||||
});
|
||||
addSelectedCheck(checks, options, "microservice:oa-event-flow-stats", (oaEventFlowStats as { ok?: boolean }).ok === true && oaEventFlowStatsBody?.ok === true && Array.isArray(oaEventFlowStatsBody.stats), oaEventFlowStats);
|
||||
addSelectedCheck(checks, options, "microservice:code-queue-status", (codeQueueStatus as { ok?: boolean }).ok === true && (codeQueueStatus as { body?: { microservice?: { id?: string; providerId?: string } } }).body?.microservice?.providerId === "D601", codeQueueStatus);
|
||||
addSelectedCheck(checks, options, "microservice:code-queue-health", (codeQueueHealth as { ok?: boolean }).ok === true && codeQueueHealthBody?.ok === true && codeQueueHealthBody.queue?.defaultModel === "gpt-5.5" && codeQueueHealthBody.queue?.modelReasoningEfforts?.["gpt-5.5"] === "xhigh", codeQueueHealth);
|
||||
addSelectedCheck(checks, options, "microservice:code-queue-health", (codeQueueHealth as { ok?: boolean }).ok === true && codeQueueHealthBody?.ok === true && codeQueueHealthBody.egressProxy?.connected === true && codeQueueHealthBody.queue?.defaultModel === "gpt-5.5" && codeQueueHealthBody.queue?.modelReasoningEfforts?.["gpt-5.5"] === "xhigh", codeQueueHealth);
|
||||
addSelectedCheck(checks, options, "microservice:code-queue-tasks", (codeQueueTasks as { ok?: boolean }).ok === true && codeQueueTasksBody?.ok === true && Array.isArray(codeQueueTasksBody.tasks) && codeQueueTasksBody.queue?.defaultModel === "gpt-5.5" && codeQueueTasksBody.queue?.modelReasoningEfforts?.["gpt-5.5"] === "xhigh", codeQueueTasks);
|
||||
const upgradeDispatch = dockerCoreJson("/api/dispatch", {
|
||||
method: "POST",
|
||||
|
||||
Reference in New Issue
Block a user