Skip to content
This repository has been archived by the owner on Jun 11, 2021. It is now read-only.

Commit

Permalink
Merge pull request #208 from kitematic/bug-fixes
Browse files Browse the repository at this point in the history
Fix minor bugs
  • Loading branch information
JeffDM committed Mar 3, 2015
2 parents cedec0e + d7cd96f commit 643d705
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 45 deletions.
3 changes: 1 addition & 2 deletions src/ContainerDetailsSubheader.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,7 @@ var ContainerDetailsSubheader = React.createClass({
handleRestart: function () {
if (!this.disableRestart()) {
metrics.track('Restarted Container');
ContainerStore.restart(this.props.container.Name, function (err) {
console.log(err);
ContainerStore.restart(this.props.container.Name, function () {
});
}
},
Expand Down
101 changes: 59 additions & 42 deletions src/ContainerStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ var assign = require('object-assign');
var docker = require('./Docker');
var metrics = require('./Metrics');
var registry = require('./Registry');
var LogStore = require('./LogStore');
var logstore = require('./LogStore');
var bugsnag = require('bugsnag-js');
var util = require('./Util');

var _placeholders = {};
var _containers = {};
Expand Down Expand Up @@ -89,6 +90,42 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
});
});
},
_startContainer: function (name, containerData, callback) {
var self = this;
docker.client().getImage(containerData.Image).inspect(function (err, data) {
if (err) {
callback(err);
return;
}
var binds = containerData.Binds || [];
if (data.Config.Volumes) {
_.each(data.Config.Volumes, function (value, key) {
var existingBind = _.find(binds, b => {
return b.indexOf(':' + key) !== -1;
});
if (!existingBind) {
binds.push(path.join(util.home(), 'Kitematic', name, key)+ ':' + key);
}
});
}
var startopts = {
Binds: binds
};
if (containerData.NetworkSettings && containerData.NetworkSettings.Ports) {
startopts.PortBindings = containerData.NetworkSettings.Ports;
} else{
startopts.PublishAllPorts = true;
}
var container = docker.client().getContainer(name);
container.start(startopts, function (err) {
if (err) {
callback(err);
return;
}
self.fetchContainer(name, callback);
});
});
},
_createContainer: function (name, containerData, callback) {
var existing = docker.client().getContainer(name);
var self = this;
Expand All @@ -102,47 +139,16 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
}
existing.kill(function () {
existing.remove(function () {
docker.client().getImage(containerData.Image).inspect(function (err, data) {
docker.client().createContainer(containerData, function (err) {
if (err) {
callback(err);
callback(err, null);
return;
}
var binds = containerData.Binds || [];
if (data.Config.Volumes) {
_.each(data.Config.Volumes, function (value, key) {
var existingBind = _.find(binds, b => {
return b.indexOf(':' + key) !== -1;
});
if (!existingBind) {
binds.push(path.join(process.env.HOME, 'Kitematic', containerData.name, key)+ ':' + key);
}
});
if (containerData.State && !containerData.State.Running) {
self.fetchContainer(containerData.name, callback);
} else {
self._startContainer(name, containerData, callback);
}
docker.client().createContainer(containerData, function (err, container) {
if (err) {
callback(err, null);
return;
}
if (containerData.State && !containerData.State.Running) {
self.fetchContainer(containerData.name, callback);
} else {
var startopts = {
Binds: binds
};
if (containerData.NetworkSettings && containerData.NetworkSettings.Ports) {
startopts.PortBindings = containerData.NetworkSettings.Ports;
} else{
startopts.PublishAllPorts = true;
}
container.start(startopts, function (err) {
if (err) {
callback(err);
return;
}
self.fetchContainer(containerData.name, callback);
});
}
});
});
});
});
Expand Down Expand Up @@ -361,7 +367,7 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
data.name = data.Name;
}
if (name !== data.name) {
LogStore.rename(name, data.name);
logstore.rename(name, data.name);
}
var fullData = assign(_containers[name], data);
this._createContainer(name, fullData, function () {
Expand All @@ -371,7 +377,7 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
}.bind(this));
},
rename: function (name, newName, callback) {
LogStore.rename(name, newName);
logstore.rename(name, newName);
docker.client().getContainer(name).rename({name: newName}, err => {
if (err && err.statusCode !== 204) {
callback(err);
Expand All @@ -385,8 +391,19 @@ var ContainerStore = assign(Object.create(EventEmitter.prototype), {
},
restart: function (name, callback) {
var container = docker.client().getContainer(name);
container.restart(function (err) {
callback(err);
_muted[name] = true;
container.stop(err => {
if (err && err.statusCode !== 304) {
_muted[name] = false;
callback(err);
} else {
var data = _containers[name];
this._startContainer(name, data, err => {
_muted[name] = false;
this.emit(this.CLIENT_CONTAINER_EVENT, name, 'start');
callback(err);
});
}
});
},
remove: function (name, callback) {
Expand Down
2 changes: 1 addition & 1 deletion src/DockerMachine.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ var DockerMachine = {
return util.exec([DockerMachine.command(), 'rm', '-f', NAME]);
},
ip: function () {
return util.exec([DockerMachine.command(), 'ip']).then(stdout => {
return util.exec([DockerMachine.command(), 'ip', NAME]).then(stdout => {
return Promise.resolve(stdout.trim().replace('\n', ''));
});
},
Expand Down

0 comments on commit 643d705

Please sign in to comment.