diff --git a/src/utils/SetupUtil.js b/src/utils/SetupUtil.js index 02faddafb8..08fb41c750 100644 --- a/src/utils/SetupUtil.js +++ b/src/utils/SetupUtil.js @@ -11,6 +11,11 @@ import machine from './DockerMachineUtil'; import docker from './DockerUtil'; import router from '../router'; +// Docker Machine exits with 3 to differentiate pre-create check failures (e.g. +// virtualization isn't enabled) from normal errors during create (exit code +// 1). +const precreateCheckExitCode = 3; + let _retryPromise = null; let _timers = []; @@ -154,11 +159,17 @@ export default { } catch (error) { router.get().transitionTo('setup'); - let novtx = error.message.indexOf('This computer doesn\'t have VT-X/AMD-v enabled') !== -1; - metrics.track(novtx ? 'Setup Halted' : 'Setup Failed', { - virtualBoxVersion, - machineVersion - }); + if (error.code === precreateCheckExitCode) { + metrics.track('Setup Halted', { + virtualBoxVersion, + machineVersion + }); + } else { + metrics.track('Setup Failed', { + virtualBoxVersion, + machineVersion + }); + } let message = error.message.split('\n'); let lastLine = message.length > 1 ? message[message.length - 2] : 'Docker Machine encountered an error.'; diff --git a/src/utils/Util.js b/src/utils/Util.js index c8e376021d..874b429ea6 100644 --- a/src/utils/Util.js +++ b/src/utils/Util.js @@ -13,7 +13,7 @@ module.exports = { return new Promise((resolve, reject) => { child_process.execFile(args[0], args.slice(1), options, (error, stdout) => { if (error) { - reject(new Error('Encountered an error: ' + error)); + reject(error); } else { resolve(stdout); }