2016-01-05 01:11:28 +00:00
|
|
|
var childProcess = require("child_process");
|
|
|
|
|
2016-02-04 03:49:42 +00:00
|
|
|
var GSSH = __dirname + "/../../scripts/gssh";
|
2016-01-05 01:11:28 +00:00
|
|
|
|
|
|
|
function findServers(pattern, options, callback) {
|
|
|
|
if (!callback && typeof options == "function") {
|
|
|
|
return findServers(pattern, {}, options);
|
|
|
|
}
|
|
|
|
|
2016-02-04 03:49:42 +00:00
|
|
|
childProcess.exec(GSSH + " --print-names " + pattern, function (err, stdout) {
|
2016-01-05 01:11:28 +00:00
|
|
|
if (err) return callback(err);
|
|
|
|
|
|
|
|
var serverNames = stdout.split("\n")
|
|
|
|
.filter(function(name) { return !!name; })
|
|
|
|
.map(function (name) { return name.replace(/ubuntu@/, ""); });
|
|
|
|
|
|
|
|
return callback(null, serverNames);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function runCommand(pattern, command, options, callback) {
|
|
|
|
if (!callback && typeof options == "function") {
|
|
|
|
return runCommand(pattern, command, {}, options);
|
|
|
|
}
|
|
|
|
|
|
|
|
var parallel = ""
|
|
|
|
if (options.parallel) {
|
|
|
|
parallel = " -P"
|
|
|
|
}
|
|
|
|
|
2016-02-04 03:49:42 +00:00
|
|
|
var gsshCommand = GSSH + " " + parallel + " " + pattern + " '" + command + "'";
|
2016-01-05 01:11:28 +00:00
|
|
|
childProcess.exec(gsshCommand, function (err, stdout) {
|
|
|
|
return callback(err, stdout);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
find: findServers,
|
|
|
|
run: runCommand
|
|
|
|
}
|