From e311e2d8aaee8bf3dd556023cdb71557a191a851 Mon Sep 17 00:00:00 2001 From: Tim deBoer Date: Wed, 18 Oct 2023 17:44:03 -0400 Subject: [PATCH] fix: log kind cluster creation failure with usage Minimal change to send one event when we create a kind cluster instead of 1 event + different event on failure. Added the duration while I was at it, but nothing else. There is likely more work to do here to classify failures or add more information to tell what is different about failure cases, but this will solve one core problem that it isn't easy to correlate failure with the usage. Fixes part of #4214. Signed-off-by: Tim deBoer --- extensions/kind/src/create-cluster.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/extensions/kind/src/create-cluster.ts b/extensions/kind/src/create-cluster.ts index 701676a142b..69e25ed50e6 100644 --- a/extensions/kind/src/create-cluster.ts +++ b/extensions/kind/src/create-cluster.ts @@ -157,14 +157,22 @@ export async function createCluster( // update PATH to include kind env.PATH = getKindPath(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const telemetryOptions: Record = { + provider, + httpHostPort, + httpsHostPort, + ingressController, + }; + // now execute the command to create the cluster + const startTime = performance.now(); try { await extensionApi.process.exec(kindCli, ['create', 'cluster', '--config', tmpFilePath], { env, logger, token }); if (ingressController) { logger.log('Creating ingress controller resources'); await setupIngressController(clusterName); } - telemetryLogger.logUsage('createCluster', { provider, httpHostPort, httpsHostPort, ingressController }); } catch (error) { let errorMessage: string; @@ -174,16 +182,15 @@ export async function createCluster( errorMessage = error; } - telemetryLogger.logError('createCluster', { - provider, - httpHostPort, - httpsHostPort, - ingressController, - error: errorMessage, - stdErr: errorMessage, - }); + telemetryOptions.error = errorMessage; + telemetryOptions.stdErr = errorMessage; + throw new Error(`Failed to create kind cluster. ${errorMessage}`); } finally { + const endTime = performance.now(); + telemetryOptions.duration = endTime - startTime; + telemetryLogger.logUsage('createCluster', telemetryOptions); + // delete temporary directory/file await fs.promises.rm(tmpDirectory, { recursive: true }); }