From 0ca35b5db1d614a0d0d00c98d060fdd4fc220ae5 Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Thu, 11 Jun 2015 15:08:43 -0700 Subject: [PATCH] If vbox net service is down then ask users in setup to restart it --- src/stores/SetupStore.js | 4 +++- src/utils/SetupUtil.js | 2 +- src/utils/VirtualBoxUtil.js | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/stores/SetupStore.js b/src/stores/SetupStore.js index ddedcb3545..588d2c07e8 100644 --- a/src/stores/SetupStore.js +++ b/src/stores/SetupStore.js @@ -49,6 +49,8 @@ var _steps = [{ } catch (err) { throw null; } + } else if (!virtualBox.active()) { + yield util.exec(setupUtil.macSudoCmd(util.escapePath('/Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh') + ' restart')); } }) }, { @@ -157,7 +159,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { var vboxNeedsInstall = !virtualBox.installed(); required.download = vboxNeedsInstall && (!fs.existsSync(vboxfile) || setupUtil.checksum(vboxfile) !== virtualBox.checksum()); - required.install = vboxNeedsInstall; + required.install = vboxNeedsInstall || !virtualBox.active(); required.init = required.install || !(yield machine.exists()) || (yield machine.state()) !== 'Running' || !isoversion || util.compareVersions(isoversion, packagejson['docker-version']) < 0; var exists = yield machine.exists(); diff --git a/src/utils/SetupUtil.js b/src/utils/SetupUtil.js index a7697daec1..25925741f4 100644 --- a/src/utils/SetupUtil.js +++ b/src/utils/SetupUtil.js @@ -59,7 +59,7 @@ var SetupUtil = { } }, macSudoCmd: function (cmd) { - return `${util.escapePath(resources.macsudo())} -p "Kitematic requires administrative privileges to install." sh -c \"${cmd}\"`; + return `${util.escapePath(resources.macsudo())} -p "Kitematic requires administrative privileges to install and/or start VirtualBox." sh -c \"${cmd}\"`; }, simulateProgress(estimateSeconds, progress) { var times = _.range(0, estimateSeconds * 1000, 200); diff --git a/src/utils/VirtualBoxUtil.js b/src/utils/VirtualBoxUtil.js index 80705cbe78..b6729cef60 100644 --- a/src/utils/VirtualBoxUtil.js +++ b/src/utils/VirtualBoxUtil.js @@ -23,9 +23,12 @@ var VirtualBox = { if(util.isWindows()) { return fs.existsSync('C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe') && fs.existsSync('C:\\Program Files\\Oracle\\VirtualBox\\VirtualBox.exe'); } else { - return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app'); + return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app') && fs.existsSync('/Applications/VirtualBox.app/Contents/MacOS/VBoxManage'); } }, + active: function () { + return fs.existsSync('/dev/vboxnetctl'); + }, version: function () { return new Promise((resolve, reject) => { util.exec([this.command(), '-v']).then(stdout => {