Skip to content

Commit b256c1f

Browse files
committed
fix: initialize action
Signed-off-by: lstocchi <lstocchi@redhat.com>
1 parent 11fe2fc commit b256c1f

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

src/extension.ts

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ import { registerOpenTerminalCommand } from './dev-terminal';
3737
import { commandManager } from './command';
3838
import { registerOpenConsoleCommand } from './crc-console';
3939
import { registerLogInCommands } from './login-commands';
40-
import { defaultLogger } from './logger';
4140
import { pushImageToCrcCluster } from './image-handler';
4241
import type { Preset } from './types';
42+
import { needSetup, setUpCrc } from './crc-setup';
4343

4444
const CRC_PUSH_IMAGE_TO_CLUSTER = 'crc.image.push.to.cluster';
4545
const CRC_PRESET_KEY = 'crc.crcPreset';
@@ -220,9 +220,7 @@ function registerProviderConnectionFactory(
220220
): void {
221221
connectionFactoryDisposable = provider.setKubernetesProviderConnectionFactory(
222222
{
223-
initialize: async () => {
224-
await createCrcVm(provider, extensionContext, telemetryLogger, defaultLogger);
225-
},
223+
initialize: () => initializeCrc(provider, extensionContext, telemetryLogger),
226224
create: async (params, logger) => {
227225
await presetChanged(provider, extensionContext, telemetryLogger);
228226
await saveConfig(params);
@@ -254,20 +252,42 @@ async function createCrcVm(
254252
const hasStarted = await startCrc(provider, getLoggerCallback(undefined, logger), telemetryLogger);
255253
if (!connectionDisposable && hasStarted) {
256254
addCommands(telemetryLogger);
257-
presetChanged(provider, extensionContext, telemetryLogger);
255+
await presetChanged(provider, extensionContext, telemetryLogger);
256+
}
257+
}
258+
259+
async function initializeCrc(
260+
provider: extensionApi.Provider,
261+
extensionContext: extensionApi.ExtensionContext,
262+
telemetryLogger: extensionApi.TelemetryLogger,
263+
): Promise<void> {
264+
const hasSetupFinished = await setUpCrc(true);
265+
if (!hasSetupFinished) {
266+
throw new Error(`Failed at initializing ${productName}`);
258267
}
268+
269+
await needSetup();
270+
await connectToCrc();
271+
await presetChanged(provider, extensionContext, telemetryLogger);
272+
addCommands(telemetryLogger);
273+
await syncPreferences(provider, extensionContext, telemetryLogger);
274+
return presetChanged(provider, extensionContext, telemetryLogger);
259275
}
260276

261277
function addCommands(telemetryLogger: extensionApi.TelemetryLogger): void {
262-
registerOpenTerminalCommand();
263-
registerOpenConsoleCommand();
264-
registerLogInCommands();
265-
registerDeleteCommand();
266-
267-
commandManager.addCommand(CRC_PUSH_IMAGE_TO_CLUSTER, image => {
268-
telemetryLogger.logUsage('pushImage');
269-
pushImageToCrcCluster(image);
270-
});
278+
try {
279+
registerOpenTerminalCommand();
280+
registerOpenConsoleCommand();
281+
registerLogInCommands();
282+
registerDeleteCommand();
283+
284+
commandManager.addCommand(CRC_PUSH_IMAGE_TO_CLUSTER, image => {
285+
telemetryLogger.logUsage('pushImage');
286+
pushImageToCrcCluster(image);
287+
});
288+
} catch (e) {
289+
// do nothing
290+
}
271291
}
272292

273293
function deleteCommands(): void {
@@ -406,6 +426,6 @@ async function presetChanged(
406426
// podman connection
407427
registerPodmanConnection(provider, extensionContext);
408428
} else if (preset === 'openshift' || preset === 'microshift') {
409-
registerOpenShiftLocalCluster(getPresetLabel(preset), provider, extensionContext, telemetryLogger);
429+
await registerOpenShiftLocalCluster(getPresetLabel(preset), provider, extensionContext, telemetryLogger);
410430
}
411431
}

0 commit comments

Comments
 (0)