From a490ca0ac41d5f8c418d55dc6a7506cc320c4d80 Mon Sep 17 00:00:00 2001 From: lstocchi Date: Tue, 13 Aug 2024 17:29:55 +0200 Subject: [PATCH] fix: initialize action Signed-off-by: lstocchi --- src/extension.ts | 50 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 28385de..e55bf32 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -37,9 +37,9 @@ import { registerOpenTerminalCommand } from './dev-terminal'; import { commandManager } from './command'; import { registerOpenConsoleCommand } from './crc-console'; import { registerLogInCommands } from './login-commands'; -import { defaultLogger } from './logger'; import { pushImageToCrcCluster } from './image-handler'; import type { Preset } from './types'; +import { needSetup, setUpCrc } from './crc-setup'; const CRC_PUSH_IMAGE_TO_CLUSTER = 'crc.image.push.to.cluster'; const CRC_PRESET_KEY = 'crc.crcPreset'; @@ -220,9 +220,7 @@ function registerProviderConnectionFactory( ): void { connectionFactoryDisposable = provider.setKubernetesProviderConnectionFactory( { - initialize: async () => { - await createCrcVm(provider, extensionContext, telemetryLogger, defaultLogger); - }, + initialize: () => initializeCrc(provider, extensionContext, telemetryLogger), create: async (params, logger) => { await presetChanged(provider, extensionContext, telemetryLogger); await saveConfig(params); @@ -254,20 +252,42 @@ async function createCrcVm( const hasStarted = await startCrc(provider, getLoggerCallback(undefined, logger), telemetryLogger); if (!connectionDisposable && hasStarted) { addCommands(telemetryLogger); - presetChanged(provider, extensionContext, telemetryLogger); + await presetChanged(provider, extensionContext, telemetryLogger); + } +} + +async function initializeCrc( + provider: extensionApi.Provider, + extensionContext: extensionApi.ExtensionContext, + telemetryLogger: extensionApi.TelemetryLogger, +): Promise { + const hasSetupFinished = await setUpCrc(true); + if (!hasSetupFinished) { + throw new Error(`Failed at initializing ${productName}`); } + + await needSetup(); + await connectToCrc(); + await presetChanged(provider, extensionContext, telemetryLogger); + addCommands(telemetryLogger); + await syncPreferences(provider, extensionContext, telemetryLogger); + return presetChanged(provider, extensionContext, telemetryLogger); } function addCommands(telemetryLogger: extensionApi.TelemetryLogger): void { - registerOpenTerminalCommand(); - registerOpenConsoleCommand(); - registerLogInCommands(); - registerDeleteCommand(); - - commandManager.addCommand(CRC_PUSH_IMAGE_TO_CLUSTER, image => { - telemetryLogger.logUsage('pushImage'); - pushImageToCrcCluster(image); - }); + try { + registerOpenTerminalCommand(); + registerOpenConsoleCommand(); + registerLogInCommands(); + registerDeleteCommand(); + + commandManager.addCommand(CRC_PUSH_IMAGE_TO_CLUSTER, image => { + telemetryLogger.logUsage('pushImage'); + pushImageToCrcCluster(image); + }); + } catch(e) { + // do nothing + } } function deleteCommands(): void { @@ -406,6 +426,6 @@ async function presetChanged( // podman connection registerPodmanConnection(provider, extensionContext); } else if (preset === 'openshift' || preset === 'microshift') { - registerOpenShiftLocalCluster(getPresetLabel(preset), provider, extensionContext, telemetryLogger); + await registerOpenShiftLocalCluster(getPresetLabel(preset), provider, extensionContext, telemetryLogger); } }