diff --git a/js/apps/system/aardvark/cluster.js b/js/apps/system/aardvark/cluster.js index 811aaaa97b..fc19fdeefd 100644 --- a/js/apps/system/aardvark/cluster.js +++ b/js/apps/system/aardvark/cluster.js @@ -61,6 +61,56 @@ k.runInfo = config.runInfo; return k; }, + startUp = function(req, res) { + cleanUp(); + var config = {}, + input = req.body(), + result = {}, + starter, + i, + tmp, + planner; + + if (input.type === "testSetup") { + config.dispatchers = { + "d1": { + "endpoint": "tcp://" + input.dispatcher + } + }; + config.numberOfDBservers = input.numberDBServers; + config.numberOfCoordinators = input.numberCoordinators; + } else { + i = 0; + config.dispatchers = {}; + config.numberOfDBservers = 0; + config.numberOfCoordinators = 0; + _.each(input.dispatcher, function(d) { + i++; + var inf = {}; + inf.endpoint = "tcp://" + d.host; + if (d.isCoordinator) { + config.numberOfCoordinators++; + } else { + inf.allowCoordinators = false; + } + if (d.isDBServer) { + config.numberOfDBservers++; + } else { + inf.allowDBservers = false; + } + config.dispatchers["d" + i] = inf; + }); + } + require("console").log(JSON.stringify(config)); + result.config = config; + planner = new cluster.Planner(config); + result.plan = planner.getPlan(); + starter = new cluster.Kickstarter(planner.getPlan()); + tmp = starter.launch(); + result.runInfo = tmp.runInfo; + plans.storeConfig(result); + res.json(result); + }, cleanUp = function() { var k = getStarter(); if (k) { @@ -68,55 +118,8 @@ } }; // only make these functions available in dispatcher mode! - controller.post("/plan", function(req, res) { - cleanUp(); - var config = {}, - input = req.body(), - result = {}, - starter, - i, - tmp, - planner; - - if (input.type === "testSetup") { - config.dispatchers = { - "d1": { - "endpoint": "tcp://" + input.dispatcher - } - }; - config.numberOfDBservers = input.numberDBServers; - config.numberOfCoordinators = input.numberCoordinators; - } else { - i = 0; - config.dispatchers = {}; - config.numberOfDBservers = 0; - config.numberOfCoordinators = 0; - _.each(input.dispatcher, function(d) { - i++; - var inf = {}; - inf.endpoint = "tcp://" + d.host; - if (d.isCoordinator) { - config.numberOfCoordinators++; - } else { - inf.allowCoordinators = false; - } - if (d.isDBServer) { - config.numberOfDBservers++; - } else { - inf.allowDBservers = false; - } - config.dispatchers["d" + i] = inf; - }); - } - result.config = config; - planner = new cluster.Planner(config); - result.plan = planner.getPlan(); - starter = new cluster.Kickstarter(planner.getPlan()); - tmp = starter.launch(); - result.runInfo = tmp.runInfo; - plans.storeConfig(result); - res.json(result); - }); + controller.post("/plan", startUp); + controller.put("/plan", startUp); controller.get("/plan", function(req, res) { res.json(plans.loadConfig()); @@ -128,7 +131,13 @@ }); controller.get("/healthcheck", function(req, res) { - res.json(!getStarter().isHealthy().error); + var out = getStarter().isHealthy(); + var stf = JSON.stringify(out); + if (out.error || stf.indexOf("NOT-FOUND") !== -1) { + res.json(false); + return; + } + res.json(true); }); controller.get("/shutdown", function(req, res) { diff --git a/js/apps/system/aardvark/clusterFrontend/js/models/clusterPlan.js b/js/apps/system/aardvark/clusterFrontend/js/models/clusterPlan.js index 6d716d2b86..64d19218fe 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/models/clusterPlan.js +++ b/js/apps/system/aardvark/clusterFrontend/js/models/clusterPlan.js @@ -10,10 +10,7 @@ url: "cluster/plan", - isNew : function() { - return true; - }, - + idAttribute: "config", getCoordinator: function() { if (this._coord) { @@ -53,7 +50,6 @@ } }); return result; - } }); diff --git a/js/apps/system/aardvark/clusterFrontend/js/routers/clusterRouter.js b/js/apps/system/aardvark/clusterFrontend/js/routers/clusterRouter.js index 3050d0dd03..ed4551d5e8 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/routers/clusterRouter.js +++ b/js/apps/system/aardvark/clusterFrontend/js/routers/clusterRouter.js @@ -106,7 +106,7 @@ if (!this.clusterDownView) { this.clusterDownView = new window.ClusterDownView(); } - this.clusterDownView.render(content); + this.clusterDownView.render(); } }); diff --git a/js/apps/system/aardvark/clusterFrontend/js/routers/startApp.js b/js/apps/system/aardvark/clusterFrontend/js/routers/startApp.js index affdab66e2..6dfd53633d 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/routers/startApp.js +++ b/js/apps/system/aardvark/clusterFrontend/js/routers/startApp.js @@ -7,16 +7,12 @@ window.App = new window.ClusterRouter(); Backbone.history.start(); - //für zum testen -// this.clusterPlan.set({"plan": "blub"}); - if(window.App.clusterPlan.get("plan")) { if(window.App.clusterPlan.isAlive()) { window.App.showCluster(); } else { window.App.handleClusterDown(); } - } else { window.App.planScenario(); } diff --git a/js/apps/system/aardvark/clusterFrontend/js/templates/testPlan.ejs b/js/apps/system/aardvark/clusterFrontend/js/templates/testPlan.ejs index 19cd5ba3db..2dd61315a1 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/templates/testPlan.ejs +++ b/js/apps/system/aardvark/clusterFrontend/js/templates/testPlan.ejs @@ -4,60 +4,26 @@ Plan a single server test configuration -<% -if (config) { -dispatcher = config.dispatcher; -hostname = dispatcher.split(':')[0]; -port = dispatcher.split(':')[1]; -numberDBServers = config.numberDBServers; -numberCoordinators = config.numberCoordinators; -} -%>
- - value="<%=hostname%>" - <%} else {%> - value="<%=window.location.hostname%>" - <%}%> - > - : - - console.log("blub); - value="<%=port%>" - <%} else {%> - value="<%=window.location.port%>" - <%}%> - > + + : +
- - value="<%=numberCoordinators%>" - <%} else {%> - value="1" - <%}%> - > +
- - value="<%=numberDBServers%>" - <%} else {%> - value="2" - <%}%> - > +
diff --git a/js/apps/system/aardvark/clusterFrontend/js/views/clusterDownView.js b/js/apps/system/aardvark/clusterFrontend/js/views/clusterDownView.js index a4648a178a..17e7493851 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/views/clusterDownView.js +++ b/js/apps/system/aardvark/clusterFrontend/js/views/clusterDownView.js @@ -16,72 +16,37 @@ "click #deletePlan" : "deletePlan" }, - initialize : function() { - this.dbservers = new window.ClusterServers([], { - interval: this.interval - }); - this.dbservers.fetch({ - async: false - }); - this.dbservers.startUpdating(); - }, - render: function() { $(this.el).html(this.template.render({})); }, relaunchCluster: function() { - console.log("relaunchCluster"); var result = false; $.ajax({ cache: false, type: "GET", - async: false, // sequential calls! - url: "/cluster/relaunch", + url: "cluster/relaunch", success: function(data) { - result = data; - }, - error: function(data) { + window.App.navigate("showCluster", {trigger: true}); } }); - - return result; }, editPlan: function() { - console.log("editPlan"); - //welches Scenario und entsprechende View rendern - //siehe showClusterView.js - - - var byAddress = this.listByAddress(); - if (Object.keys(byAddress).length === 1) { - this.type = "testPlan"; - } else { - this.type = "other"; - } - - if (this.type === "testPlan") { + var config = window.App.clusterPlan.get("config"); + if (_.size(config.dispatchers) === 1) { window.App.navigate("planTest", {trigger : true}); - } else { -// window.App.navigate("planSymmetrical", {trigger : true}); - window.App.navigate("planAsymmetrical", {trigger : true}); + return; } + //TODO +// window.App.navigate("planSymmetrical", {trigger : true}); + window.App.navigate("planAsymmetrical", {trigger : true}); }, deletePlan: function() { - console.log("deletePlan"); - //irgendwie löschen - //view planScenario - }, - - listByAddress: function() { - var byAddress = this.dbservers.byAddress(); - byAddress = this.coordinators.byAddress(byAddress); - return byAddress; + window.App.clusterPlan.destroy(); + window.App.planScenario(); } - - }); }()); diff --git a/js/apps/system/aardvark/clusterFrontend/js/views/planSymmetricView.js b/js/apps/system/aardvark/clusterFrontend/js/views/planSymmetricView.js index 9d8555a6ed..1b0ac61dfc 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/views/planSymmetricView.js +++ b/js/apps/system/aardvark/clusterFrontend/js/views/planSymmetricView.js @@ -19,7 +19,7 @@ var isDBServer; var isCoordinator; var self = this; - var data = {dispatcher : []}; + var data = {dispatchers: []}; var foundCoordinator = false; var foundDBServer = false; $(".dispatcher").each(function(i, dispatcher) { @@ -36,7 +36,7 @@ foundCoordinator = foundCoordinator || hostObject.isCoordinator; foundDBServer = foundDBServer || hostObject.isDBServer; - data.dispatcher.push(hostObject); + data.dispatchers.push(hostObject); }) if (!self.isSymmetric) { if (!foundDBServer) { @@ -48,7 +48,7 @@ return; } } else { - if ( data.dispatcher.length === 0) { + if ( data.dispatchers.length === 0) { alert("Please provide at least one Host"); return; } @@ -56,12 +56,14 @@ } data.type = this.isSymmetric ? "symmetricalSetup" : "asymmetricalSetup"; - $.ajax("cluster/plan", { - type: "POST", - data: JSON.stringify(data) - }).done(function(info) { - window.App.showDownload(info); - }); + this.model.save( + data, + { + success : function(info) { + window.App.navigate("showCluster", {trigger: true}); + } + } + ); }, addEntry: function() { diff --git a/js/apps/system/aardvark/clusterFrontend/js/views/planTestView.js b/js/apps/system/aardvark/clusterFrontend/js/views/planTestView.js index 96ff8a1537..0cf49eef67 100644 --- a/js/apps/system/aardvark/clusterFrontend/js/views/planTestView.js +++ b/js/apps/system/aardvark/clusterFrontend/js/views/planTestView.js @@ -42,17 +42,32 @@ numberDBServers: parseInt(d, 10), numberCoordinators: parseInt(c, 10) }, - {success : function(info) { - console.log("planTestView.js"); - window.App.navigate("showCluster", {trigger: true}); - }} + { + success : function(info) { + window.App.navigate("showCluster", {trigger: true}); + } + } ); }, render: function() { - $(this.el).html(this.template.render({ - config : this.model.get("config") - })); + var param = {}; + var config = this.model.get("config"); + if (config) { + param.dbs = config.numberOfDBservers; + param.coords = config.numberOfCoordinators; + var host = config.dispatchers.d1.endpoint; + host = host.split("://")[1]; + host = host.split(":"); + param.hostname = host[0]; + param.port = host[1]; + } else { + param.dbs = 2; + param.coords = 1; + param.hostname = window.location.hostname; + param.port = window.location.port; + } + $(this.el).html(this.template.render(param)); } });