diff --git a/src/addons.js b/src/addons.js index 29a019eb2..444b43276 100644 --- a/src/addons.js +++ b/src/addons.js @@ -423,7 +423,7 @@ function setupMySql(app, options, callback) { var cmd = [ '/addons/mysql/service.sh', options.multipleDatabases ? 'add-prefix' : 'add', app.id ]; - docker.execContainer('mysql', cmd, null /* input */, function (error, stdout) { + docker.execContainer('mysql', cmd, function (error, stdout) { if (error) return callback(error); var env = stdout.toString('utf8').split('\n').slice(0, -1); // remove trailing newline @@ -441,7 +441,7 @@ function teardownMySql(app, options, callback) { debugApp(app, 'Tearing down mysql'); - docker.execContainer('mysql', cmd, null /* input */, function (error) { + docker.execContainer('mysql', cmd, function (error) { if (error) return callback(error); appdb.unsetAddonConfig(app.id, 'mysql', callback); @@ -501,7 +501,7 @@ function setupPostgreSql(app, options, callback) { var cmd = [ '/addons/postgresql/service.sh', 'add', app.id ]; - docker.execContainer('postgresql', cmd, null /* input */, function (error, stdout) { + docker.execContainer('postgresql', cmd, function (error, stdout) { if (error) return callback(error); var env = stdout.toString('utf8').split('\n').slice(0, -1); // remove trailing newline @@ -519,7 +519,7 @@ function teardownPostgreSql(app, options, callback) { debugApp(app, 'Tearing down postgresql'); - docker.execContainer('postgresql', cmd, null /* input */, function (error) { + docker.execContainer('postgresql', cmd, function (error) { if (error) return callback(error); appdb.unsetAddonConfig(app.id, 'postgresql', callback); @@ -579,7 +579,7 @@ function setupMongoDb(app, options, callback) { var cmd = [ '/addons/mongodb/service.sh', 'add', app.id ]; - docker.execContainer('mongodb', cmd, null /* input */, function (error) { + docker.execContainer('mongodb', cmd, function (error) { if (error) return callback(error); appdb.unsetAddonConfig(app.id, 'mongodb', callback); @@ -595,7 +595,7 @@ function teardownMongoDb(app, options, callback) { debugApp(app, 'Tearing down mongodb'); - docker.execContainer('mongodb', cmd, null /* input */, function (error) { + docker.execContainer('mongodb', cmd, function (error) { if (error) return callback(error); appdb.unsetAddonConfig(app.id, 'mongodb', callback); diff --git a/src/docker.js b/src/docker.js index a279841bb..b73d5e317 100644 --- a/src/docker.js +++ b/src/docker.js @@ -394,11 +394,17 @@ function getContainerIdByIp(ip, callback) { }); } -function execContainer(containerId, cmd, input, callback) { +function execContainer(containerId, cmd, options, callback) { assert.strictEqual(typeof containerId, 'string'); assert(util.isArray(cmd)); - assert.strictEqual(typeof input, 'object'); // null or stream - assert.strictEqual(typeof callback, 'function'); + + if (typeof options === 'function') { + callback = options; + options = { }; + } else { + assert.strictEqual(typeof options, 'object'); + assert.strictEqual(typeof callback, 'function'); + } callback = once(callback); // ChildProcess exit may or may not be called after error @@ -406,13 +412,13 @@ function execContainer(containerId, cmd, input, callback) { var chunks = [ ]; cp.stdout.on('data', function (chunk) { chunks.push(chunk); }); - cp.on('error', function (error) { console.log(error); callback(error); }); + cp.on('error', callback); cp.on('exit', function (code, signal) { debug('execContainer code: %s signal: %s', code, signal); if (!callback.called) callback(code ? 'Failed with status ' + code : null, Buffer.concat(chunks)); }); - cp.stderr.pipe(process.stderr); + cp.stderr.pipe(options.stderr || process.stderr); - if (input) input.pipe(cp.stdin).on('error', callback); + if (options.stdin) options.stdin.pipe(cp.stdin).on('error', callback); }