diff --git a/routes/api.js b/routes/api.js index 3b785f1..7e809b9 100644 --- a/routes/api.js +++ b/routes/api.js @@ -107,7 +107,7 @@ router.get('/ping/:runner', function(req, res, next){ router.post('/run/:runner?', function (req, res, next){ console.log(`Request runner route!`); - var runner = workers.getAvailrunner(workers.getRunner(req.params.runner)); + var runner = workers.getAvailableRunner(workers.getRunner(req.params.runner)); return attemptRun(req, res, runner); }); diff --git a/routes/worker_collection.js b/routes/worker_collection.js index d082890..c57e9ea 100644 --- a/routes/worker_collection.js +++ b/routes/worker_collection.js @@ -44,6 +44,7 @@ var Runner = (function(){ }, time); }; + return proto; })(); @@ -56,7 +57,7 @@ var Worker = (function(){ proto.create = function(config){ var worker = Object.create(proto); - + Object.assign(worker, config); worker.networks.v4.forEach(function(value){ worker[value.type+'IP'] = value.ip_address; }); @@ -64,7 +65,8 @@ var Worker = (function(){ worker.availrunners = []; worker.ip = worker.publicIP; worker.usedrunners = 0; - worker.index = workers.length; + worker.age = +(new Date()); + console.log("AGE:",worker.age); return worker; }; @@ -131,7 +133,9 @@ var Worker = (function(){ // console.log('Free ram check passed!') lxc.startEphemeral(name, 'crunner0', worker.ip, function(data){ if(!data.ip){ - return setTimeout(worker.startRunners, 0, args); + return setTimeout(function(){ + worker.startRunners(args); + }, 0); } else { // console.log('started runner on', args.worker.name) @@ -147,11 +151,15 @@ var Worker = (function(){ worker.availrunners.push(runner); - setTimeout(worker.startRunners, 0, args); + setTimeout(function(){ + worker.startRunners(args); + }, 0); } }); }); }; + + return proto; })(); @@ -189,7 +197,7 @@ var WorkerCollection = (function(){ }; workers.setRunner = function(runner){ - runnerMap[runner.label] = runner; + workers.runnerMap[runner.label] = runner; var __empty = runner.cleanUp; runner.cleanUp = function(){ workers.__runnerCleanUp(runner.label); @@ -199,7 +207,7 @@ var WorkerCollection = (function(){ workers.getRunner = function(label){ - return runnerMap[runner.label]; + return workers.runnerMap[label]; }; //************************************************** @@ -208,7 +216,7 @@ var WorkerCollection = (function(){ workers.getAvailableRunner = function(runner){ for(let worker of workers){ if(worker.availrunners.length === 0) continue; - if(runner && runner.worker.index <= worker.index) break; + if(runner && runner.worker.age <= worker.age) break; if(runner) runner.free(); return worker.getRunner(); @@ -239,9 +247,12 @@ var WorkerCollection = (function(){ ); }, onActive: function(data, args){ + // TODO: NO GOOD + data.index = workers.length; var worker = Worker.create(data); worker.startRunners({ onStart: function(runner, args){ + // TODO: NO GOOD workers.push(worker); doapi.domianAddRecord({ domain: "codeland.us", diff --git a/routes/workers.json b/routes/workers.json index 0b060ae..ab85951 100644 --- a/routes/workers.json +++ b/routes/workers.json @@ -5,5 +5,6 @@ "size":"512mb", "max":100, "min":3, - "minAvail":3 + "minAvail":3, + "tagPrefix": "clams-man-clams" } \ No newline at end of file diff --git a/testAPI.js b/testAPI.js index 01b0ca2..a17e4c0 100644 --- a/testAPI.js +++ b/testAPI.js @@ -21,7 +21,7 @@ var callRunner = (function(){ let httpOptions = { - url: 'http://codeland.bytedev.co:2000/api/run?once=true', + url: 'http://localhost:2000/api/run?once=true', form: { code: code || `python3 -c " from time import sleep