feat(agents): concurrent all-agent-driver upgrade
This commit is contained in:
1 parent
2a99f91099
commit
95db01e359
15 files changed
+1083
-282
No files matched your search
@@ -54,7 +54,7 @@ import { loadConnectionPickerView, saveConnectionPickerView, type DbPickerView }
|
||||
import { normalizeRocketmqNamesrvAddr } from "@/lib/connection/rocketmqNamesrv";
|
||||
import { normalizeRabbitmqAddresses } from "@/lib/connection/rabbitmqAddresses";
|
||||
import { detectMqUiAuthKind, isMqAuthKindAllowedForSystem, type MqUiAuthKind } from "@/lib/connection/mqAuth";
|
||||
import { driverInstallProgressChannel, driverInstallProgressPercent, type DriverInstallProgress } from "@/lib/connection/driverInstallProgressUi";
|
||||
import { driverInstallProgressChannel, driverInstallProgressPercent, isDriverInstallProgressForOperation, type DriverInstallProgress } from "@/lib/connection/driverInstallProgressUi";
|
||||
import { requiresSqlServerLegacyCompatibilityComponent, setSqlServerLegacyCompatibilityConfig, sqlServerUsesLegacyCompatibility, SQLSERVER_LEGACY_COMPATIBILITY_DRIVER_KEY } from "@/lib/connection/sqlServerLegacyCompatibility";
|
||||
import { normalizeNacosEndpoint } from "@/lib/nacos/nacosAdmin";
|
||||
import {
|
||||
@@ -175,6 +175,7 @@ const savedDatabaseInfoFingerprint = ref("");
|
||||
const savedConnectionConfigFingerprint = ref("");
|
||||
const showAgentInstallDialog = ref(false);
|
||||
const agentInstallRunning = ref(false);
|
||||
const agentInstallOperationId = ref<string | null>(null);
|
||||
const agentInstallDriverKey = ref("");
|
||||
const agentInstallLabel = ref("");
|
||||
const agentInstallProgress = ref<DriverInstallProgress | null>(null);
|
||||
@@ -1385,6 +1386,7 @@ async function refreshLocalAgentDrivers(): Promise<AgentDriverInstallState[]> {
|
||||
}
|
||||
|
||||
function beginAgentDriverInstall(driverKey: string, label: string) {
|
||||
agentInstallOperationId.value = crypto.randomUUID();
|
||||
agentInstallDriverKey.value = driverKey;
|
||||
agentInstallLabel.value = label;
|
||||
agentInstallProgress.value = null;
|
||||
@@ -1394,6 +1396,7 @@ function beginAgentDriverInstall(driverKey: string, label: string) {
|
||||
}
|
||||
|
||||
function finishAgentDriverInstall() {
|
||||
agentInstallOperationId.value = null;
|
||||
agentInstallRunning.value = false;
|
||||
agentInstallProgress.value = null;
|
||||
agentInstallError.value = "";
|
||||
@@ -1401,6 +1404,7 @@ function finishAgentDriverInstall() {
|
||||
}
|
||||
|
||||
function failAgentDriverInstall(error: unknown) {
|
||||
agentInstallOperationId.value = null;
|
||||
agentInstallRunning.value = false;
|
||||
agentInstallError.value = errorMessage(error);
|
||||
showAgentInstallDialog.value = true;
|
||||
@@ -1420,6 +1424,7 @@ function setAgentInstallDialogOpen(value: boolean) {
|
||||
function handleAgentInstallProgress(payload: DriverInstallProgress) {
|
||||
if (!agentInstallRunning.value || !agentInstallDriverKey.value) return;
|
||||
if (driverInstallProgressChannel(payload) !== "agent") return;
|
||||
if (!isDriverInstallProgressForOperation(payload, agentInstallOperationId.value)) return;
|
||||
if (payload.db_type && payload.db_type !== agentInstallDriverKey.value) return;
|
||||
if (payload.step === "done" || payload.step === "all-done") {
|
||||
agentInstallProgress.value = null;
|
||||
@@ -1454,7 +1459,7 @@ async function ensureRequiredAgentDriverInstalled(config: ConnectionConfig): Pro
|
||||
testResult.value = { ok: true, message: `Installing ${label} driver...` };
|
||||
beginAgentDriverInstall(driverKey, label);
|
||||
try {
|
||||
await api.installAgent(driverKey);
|
||||
await api.installAgent(driverKey, agentInstallOperationId.value ?? undefined);
|
||||
await refreshLocalAgentDrivers();
|
||||
finishAgentDriverInstall();
|
||||
} catch (error) {
|
||||
@@ -1485,7 +1490,7 @@ async function installSqlServerLegacyCompatibilityComponentIfNeeded(): Promise<b
|
||||
const label = t("connection.sqlServerLegacyCompatibilityComponent");
|
||||
beginAgentDriverInstall(SQLSERVER_LEGACY_COMPATIBILITY_DRIVER_KEY, label);
|
||||
try {
|
||||
await api.installAgent(SQLSERVER_LEGACY_COMPATIBILITY_DRIVER_KEY);
|
||||
await api.installAgent(SQLSERVER_LEGACY_COMPATIBILITY_DRIVER_KEY, agentInstallOperationId.value ?? undefined);
|
||||
await refreshLocalAgentDrivers();
|
||||
finishAgentDriverInstall();
|
||||
} catch (error) {
|
||||
|
||||
Reference in new issue
Block a user