diff --git a/src/Docker.js b/src/Docker.js
index 59c9de0d7a..b5dcdca44c 100644
--- a/src/Docker.js
+++ b/src/Docker.js
@@ -1,6 +1,7 @@
var fs = require('fs');
var path = require('path');
var dockerode = require('dockerode');
+var Promise = require('bluebird');
var Docker = {
_host: null,
@@ -25,7 +26,34 @@ var Docker = {
},
host: function () {
return this._host;
- }
+ },
+ waitForConnection: Promise.coroutine(function * (tries, delay) {
+ tries = tries || 5;
+ delay = delay || 1000;
+ var tryCount = 1;
+ while (true) {
+ console.log('Connecting: ' + tryCount + ' tries...');
+ try {
+ yield new Promise((resolve, reject) => {
+ this._client.listContainers((err) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve();
+ }
+ });
+ });
+ break;
+ } catch (err) {
+ tryCount += 1;
+ yield Promise.delay(delay);
+ if (tryCount > tries) {
+ throw new Error(err);
+ }
+ continue;
+ }
+ }
+ }),
};
module.exports = Docker;
diff --git a/src/Main.js b/src/Main.js
index 3378afe64a..42297188ba 100644
--- a/src/Main.js
+++ b/src/Main.js
@@ -83,20 +83,12 @@ setInterval(function () {
}, 14400000);
router.run(Handler => React.render(
There seems to have been an unexpected error with Kitematic:
{this.state.error.message || this.state.error}
- +diff --git a/src/SetupStore.js b/src/SetupStore.js index 556a65ff0b..90d23fba71 100644 --- a/src/SetupStore.js +++ b/src/SetupStore.js @@ -11,6 +11,7 @@ var assign = require('object-assign'); var metrics = require('./Metrics'); var bugsnag = require('bugsnag-js'); var rimraf = require('rimraf'); +var docker = require('./Docker'); var _currentStep = null; var _error = null; @@ -118,12 +119,26 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { cancelled: function () { return _cancelled; }, - retry: function () { + retry: function (remove) { _error = null; _cancelled = false; - if (_retryPromise) { - _retryPromise.resolve(); + if (!_retryPromise) { + return; } + this.emit(this.ERROR_EVENT); + if (remove) { + machine.rm().finally(() => { + _retryPromise.resolve(); + }); + } else { + machine.stop().finally(() => { + _retryPromise.resolve(); + }); + } + }, + setError: function (error) { + _error = error; + this.emit(this.ERROR_EVENT); }, pause: function () { _retryPromise = Promise.defer(); @@ -207,6 +222,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { setup: Promise.coroutine(function * () { while (true) { try { + console.log('Starting Steps'); var ip = yield this.run(); if (!ip || !ip.length) { throw { @@ -214,10 +230,13 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { machine: yield machine.info(), ip: ip, }; - } else { - metrics.track('Setup Finished'); - return ip; } + console.log('Finished Steps'); + console.log(ip); + docker.setup(ip, machine.name()); + yield docker.waitForConnection(); + metrics.track('Setup Finished'); + break; } catch (err) { metrics.track('Setup Failed', { step: _currentStep @@ -227,7 +246,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { error: err, step: _currentStep, virtualbox: virtualboxVersion - }); + }, 'info'); _error = err; this.emit(this.ERROR_EVENT); yield this.pause(); diff --git a/src/SetupUtil.js b/src/SetupUtil.js index 69a69224bc..e626958b0a 100644 --- a/src/SetupUtil.js +++ b/src/SetupUtil.js @@ -17,11 +17,11 @@ var SetupUtil = { return fs.statSync('/usr/local/bin').gid !== 80 || fs.statSync('/usr/local/bin').uid !== process.getuid(); } - if (fs.existsSync('/usr/local/bin/docker') && (fs.statSync('/usr/local/bin/docker').gid !== 80 || fs.statSync('/usr/local/bin/docker').uid !== process.getuid())) { + if (fs.statSync('/usr/local/bin/docker').gid !== 80 || fs.statSync('/usr/local/bin/docker').uid !== process.getuid()) { return true; } - if (fs.existsSync('/usr/local/bin/docker-machine') && (fs.statSync('/usr/local/bin/docker-machine').gid !== 80 || fs.statSync('/usr/local/bin/docker-machine').uid !== process.getuid())) { + if (fs.statSync('/usr/local/bin/docker-machine').gid !== 80 || fs.statSync('/usr/local/bin/docker-machine').uid !== process.getuid()) { return true; } return false; diff --git a/src/Util.js b/src/Util.js index 7430d0904f..b1ace38efd 100644 --- a/src/Util.js +++ b/src/Util.js @@ -11,7 +11,7 @@ module.exports = { if (code) { var cmd = Array.isArray(args) ? args.join(' ') : args; reject({ - message: cmd.replace(this.home(), '') + ' returned non zero exit code', + message: cmd + ' returned non zero exit code', stderr: stderr, stdout: stdout });