Switch to using machine IP over URL

This commit is contained in:
Jeffrey Morgan 2015-03-05 12:25:57 -05:00
parent ccf8776b43
commit 29bae21e6b
3 changed files with 15 additions and 14 deletions

View File

@ -5,18 +5,16 @@ var dockerode = require('dockerode');
var Docker = { var Docker = {
_host: null, _host: null,
_client: null, _client: null,
setup: function(url, name) { setup: function(ip, name) {
var certDir = path.join(process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'], '.docker/machine/machines', name); var certDir = path.join(process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'], '.docker/machine/machines', name);
if (!fs.existsSync(certDir)) { if (!fs.existsSync(certDir)) {
return; return;
} }
var ip = url.split(':')[1].replace('//', '');
var port = url.split(':')[2];
this._host = ip; this._host = ip;
this._client = new dockerode({ this._client = new dockerode({
protocol: 'https', protocol: 'https',
host: ip, host: ip,
port: port, port: 2376,
ca: fs.readFileSync(path.join(certDir, 'ca.pem')), ca: fs.readFileSync(path.join(certDir, 'ca.pem')),
cert: fs.readFileSync(path.join(certDir, 'cert.pem')), cert: fs.readFileSync(path.join(certDir, 'cert.pem')),
key: fs.readFileSync(path.join(certDir, 'key.pem')) key: fs.readFileSync(path.join(certDir, 'key.pem'))

View File

@ -13,6 +13,7 @@ var template = require('./MenuTemplate');
var util = require('./Util'); var util = require('./Util');
var Menu = remote.require('menu'); var Menu = remote.require('menu');
var bugsnag = require('bugsnag-js'); var bugsnag = require('bugsnag-js');
var machine = require('./DockerMachine');
window.addEventListener('resize', function () { window.addEventListener('resize', function () {
fs.writeFileSync(path.join(util.supportDir(), 'size'), JSON.stringify({ fs.writeFileSync(path.join(util.supportDir(), 'size'), JSON.stringify({
@ -25,7 +26,7 @@ Menu.setApplicationMenu(Menu.buildFromTemplate(template()));
var settingsjson; var settingsjson;
try { try {
settingsjson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'settings.json'), 'utf8')); settingsjson = require(path.join(__dirname, '..', 'settings.json'), 'utf8');
} catch (err) { } catch (err) {
settingsjson = {}; settingsjson = {};
} }
@ -82,8 +83,8 @@ setInterval(function () {
}, 14400000); }, 14400000);
router.run(Handler => React.render(<Handler/>, document.body)); router.run(Handler => React.render(<Handler/>, document.body));
SetupStore.setup().then(machine => { SetupStore.setup().then(ip => {
docker.setup(machine.url, machine.name); docker.setup(ip, machine.name());
Menu.setApplicationMenu(Menu.buildFromTemplate(template())); Menu.setApplicationMenu(Menu.buildFromTemplate(template()));
ContainerStore.on(ContainerStore.SERVER_ERROR_EVENT, (err) => { ContainerStore.on(ContainerStore.SERVER_ERROR_EVENT, (err) => {
bugsnag.notify(err); bugsnag.notify(err);

View File

@ -219,19 +219,21 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), {
} }
} }
_currentStep = null; _currentStep = null;
return yield machine.info(); return yield machine.ip();
}), }),
setup: Promise.coroutine(function * () { setup: Promise.coroutine(function * () {
while (true) { while (true) {
var info = yield this.run(); var ip = yield this.run();
if (!info.url) { ip = null;
if (!ip || !ip.length) {
metrics.track('Setup Failed', { metrics.track('Setup Failed', {
step: 'done', step: 'done',
message: 'Machine URL not set' message: 'Machine IP not set'
}); });
var virtualboxVersion = virtualBox.installed() ? yield virtualBox.version() : 'Not installed'; var virtualboxVersion = virtualBox.installed() ? yield virtualBox.version() : 'Not installed';
bugsnag.notify('SetupError', 'Machine url was not set', { bugsnag.notify('SetupError', 'Machine ip was not set', {
machine: info, machine: yield machine.info(),
ip: ip,
step: 'done', step: 'done',
virtualbox: virtualboxVersion virtualbox: virtualboxVersion
}); });
@ -239,7 +241,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), {
yield this.pause(); yield this.pause();
} else { } else {
metrics.track('Setup Finished'); metrics.track('Setup Finished');
return info; return ip;
} }
} }
}) })