@@ -218,13 +218,19 @@ function registerProviderConnectionFactory(
218218 extensionContext : extensionApi . ExtensionContext ,
219219 telemetryLogger : extensionApi . TelemetryLogger ,
220220) : void {
221+ let justInitialized = false ;
221222 connectionFactoryDisposable = provider . setKubernetesProviderConnectionFactory (
222223 {
223- initialize : ( ) => initializeCrc ( provider , extensionContext , telemetryLogger ) ,
224+ initialize : async ( ) => {
225+ await initializeCrc ( provider , extensionContext , telemetryLogger ) ;
226+ justInitialized = true ;
227+ } ,
224228 create : async ( params , logger ) => {
229+ justInitialized = false ;
225230 await presetChanged ( provider , extensionContext , telemetryLogger ) ;
226231 await saveConfig ( params ) ;
227- if ( params [ 'crc.factory.start.now' ] ) {
232+ if ( params [ 'crc.factory.start.now' ] || justInitialized ) {
233+ await connectToCrc ( ) ;
228234 await createCrcVm ( provider , extensionContext , telemetryLogger , logger ) ;
229235 }
230236 } ,
@@ -261,17 +267,18 @@ async function initializeCrc(
261267 extensionContext : extensionApi . ExtensionContext ,
262268 telemetryLogger : extensionApi . TelemetryLogger ,
263269) : Promise < void > {
264- const hasSetupFinished = await setUpCrc ( true ) ;
265- if ( ! hasSetupFinished ) {
266- throw new Error ( `Failed at initializing ${ productName } ` ) ;
270+ const hasToBeSetup = await needSetup ( ) ;
271+ if ( hasToBeSetup ) {
272+ const hasSetupFinished = await setUpCrc ( true ) ;
273+ if ( ! hasSetupFinished ) {
274+ throw new Error ( `Failed at initializing ${ productName } ` ) ;
275+ }
267276 }
268277
269- await needSetup ( ) ;
270- await connectToCrc ( ) ;
271- await presetChanged ( provider , extensionContext , telemetryLogger ) ;
272278 addCommands ( telemetryLogger ) ;
273279 await syncPreferences ( provider , extensionContext , telemetryLogger ) ;
274- return presetChanged ( provider , extensionContext , telemetryLogger ) ;
280+ await presetChanged ( provider , extensionContext , telemetryLogger ) ;
281+ provider . updateStatus ( 'configured' ) ;
275282}
276283
277284function addCommands ( telemetryLogger : extensionApi . TelemetryLogger ) : void {
@@ -283,7 +290,7 @@ function addCommands(telemetryLogger: extensionApi.TelemetryLogger): void {
283290
284291 commandManager . addCommand ( CRC_PUSH_IMAGE_TO_CLUSTER , image => {
285292 telemetryLogger . logUsage ( 'pushImage' ) ;
286- pushImageToCrcCluster ( image ) ;
293+ pushImageToCrcCluster ( image ) . catch ( ( e : unknown ) => console . error ( String ( e ) ) ) ;
287294 } ) ;
288295 } catch ( e ) {
289296 // do nothing
@@ -333,14 +340,13 @@ function registerOpenShiftLocalCluster(
333340 extensionContext : extensionApi . ExtensionContext ,
334341 telemetryLogger : extensionApi . TelemetryLogger ,
335342) : void {
336- const status = ( ) => crcStatus . getConnectionStatus ( ) ;
337343 const apiURL = 'https://api.crc.testing:6443' ;
338344 const kubernetesProviderConnection : extensionApi . KubernetesProviderConnection = {
339345 name,
340346 endpoint : {
341347 apiURL,
342348 } ,
343- status,
349+ status : ( ) => 'stopped' ,
344350 } ;
345351
346352 connectionDisposable = provider . registerKubernetesProviderConnection ( kubernetesProviderConnection ) ;
0 commit comments