kopia lustrzana https://github.com/c9/core
Merge pull request +11424 from c9/monitor-workspaces
Workspace monitor & autofixerpull/248/head
commit
6da1d01339
|
@ -0,0 +1,31 @@
|
|||
|
||||
var dockerHelpers = {
|
||||
getUsernameFromContainerName: function (containerName) {
|
||||
if (containerName.split("-").length < 3) return "";
|
||||
return containerName.replace(/^container-/, "")
|
||||
.replace(/-[a-zA-Z]+$/, "")
|
||||
.replace(/-[0-9]+$/, "")
|
||||
.split("-")[0];
|
||||
},
|
||||
|
||||
getProjectNameFromContainerName: function (containerName) {
|
||||
if (containerName.split("-").length < 3) return "";
|
||||
return containerName.replace(/^container-/, "")
|
||||
.replace(/-[a-zA-Z]+$/, "")
|
||||
.replace(/-[0-9]+$/, "")
|
||||
.split("-")
|
||||
.splice(1)
|
||||
.join("-");
|
||||
},
|
||||
|
||||
getProjectIdFromContainerName: function (containerName) {
|
||||
if (containerName.split("-").length < 3) return "";
|
||||
return containerName.replace(/^container-/, "")
|
||||
.replace(/-[a-zA-Z]+$/, "")
|
||||
.split("-")
|
||||
.splice(-1)
|
||||
.join("-");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = dockerHelpers;
|
|
@ -0,0 +1,60 @@
|
|||
"use strict";
|
||||
"use mocha";
|
||||
|
||||
require("c9/inline-mocha")(module);
|
||||
var assert = require("assert");
|
||||
var faker = require("faker");
|
||||
var dockerHelpers = require("c9/docker-helpers");
|
||||
|
||||
describe("docker-helpers", function() {
|
||||
|
||||
describe("getUsernameFromContainerName", function () {
|
||||
it("should work", function() {
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("container-stefko-demo-project-884917"), "stefko");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "scollins");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("jakrawczt-test-3-jkr-1633955"), "jakrawczt");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("thn85-p18-1016460"), "thn85");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("thn85-proj-18239823-1016490"), "thn85");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("artawil-etutor_11plus-wp-1422098"), "artawil");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "johns66139");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "johns66139");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("yuro_yaya-nice-access-bot-1753521"), "yuro_yaya");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("d9canary"), "");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("selenium-9213"), "");
|
||||
assert.equal(dockerHelpers.getUsernameFromContainerName("/selenium-9213"), "");
|
||||
});
|
||||
});
|
||||
|
||||
describe("getProjectNameFromContainerName", function() {
|
||||
it("should work", function() {
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("container-stefko-demo-project-884917"), "demo-project");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "booking_admin");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("jakrawczt-test-3-jkr-1633955"), "test-3-jkr");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("thn85-p18-1016460"), "p18");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("thn85-proj-18239823-1016490"), "proj-18239823");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("artawil-etutor_11plus-wp-1422098"), "etutor_11plus-wp");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "nice-access-bot");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "nice-access-bot");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("d9canary"), "");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("selenium-9213"), "");
|
||||
assert.equal(dockerHelpers.getProjectNameFromContainerName("/selenium-9213"), "");
|
||||
});
|
||||
});
|
||||
|
||||
describe("getProjectIdFromContainerName", function() {
|
||||
it("should work", function() {
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("container-stefko-demo-project-884917"), "884917");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "1667108");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("jakrawczt-test-3-jkr-1633955"), "1633955");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("thn85-p18-1016460"), "1016460");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("thn85-proj-18239823-1016490"), "1016490");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("artawil-etutor_11plus-wp-1422098"), "1422098");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "1753521");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "1753521");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("d9canary"), "");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("selenium-9213"), "");
|
||||
assert.equal(dockerHelpers.getProjectIdFromContainerName("/selenium-9213"), "");
|
||||
});
|
||||
});
|
||||
|
||||
});
|
|
@ -0,0 +1,40 @@
|
|||
var childProcess = require("child_process");
|
||||
|
||||
|
||||
function findServers(pattern, options, callback) {
|
||||
if (!callback && typeof options == "function") {
|
||||
return findServers(pattern, {}, options);
|
||||
}
|
||||
|
||||
childProcess.exec("gssh --print-names " + pattern, function (err, stdout) {
|
||||
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"
|
||||
}
|
||||
|
||||
var gsshCommand = "gssh " + parallel + " " + pattern + " '" + command + "'";
|
||||
childProcess.exec(gsshCommand, function (err, stdout) {
|
||||
return callback(err, stdout);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
find: findServers,
|
||||
run: runCommand
|
||||
}
|
Ładowanie…
Reference in New Issue