This commit is contained in:
William Mantly 2016-05-30 19:45:51 -04:00
parent 7c97bed5b0
commit 9072167e65
2 changed files with 21 additions and 28 deletions

View File

@ -15,31 +15,25 @@ var label2runner = {};
var workers = [];
var isCheckingWorkers = false;
var dopletNewID = 0;
var workers = (function(){
var workers = [];
workers.push = function(item){
console.log('pushing item ', item, ' to workers')
return Array.prototype.push.call(this, item);
};
workers.checkDroplet = function(id, time){
time = time || 10000;
doapi.dropletInfo(id, function(data){
return doapi.dropletInfo(id, function(data){
var worker = JSON.parse(data)['droplet'];
if(worker.status == 'active'){
console.log('Droplet is now active, starting runners in 20 seconds')
setTimeout(function(worker){
console.log('Ready to start runners!')
workers.startRunners(workers.makeWorkerObj(worker), true)
isCheckingWorkers = false;
console.log('Droplet is now active, starting runners in 20 seconds');
return setTimeout(function(worker){
console.log('Ready to start runners!');
workers.startRunners(workers.makeWorkerObj(worker), true);
}, 20000, worker);
return true;
}else{
console.log('Worker not ready, check again in ', time, 'MS');
setTimeout(function(){
return setTimeout(function(){
workers.checkDroplet(id);
}, time);
}
@ -47,24 +41,23 @@ var workers = (function(){
};
workers.create = function(){
doapi.dropletCreate({
return doapi.dropletCreate({
name: 'clw'+workerSnapID+'-'+(Math.random()*100).toString().replace('.',''),
image: '17575764'
}, function(data){
data = JSON.parse(data);
setTimeout(function(dopletNewID){
workers.checkDroplet(dopletNewID);
return workers.checkDroplet(dopletNewID);
}, 70000, data.droplet.id);
doapi.dropletSetTag('clworker', data.droplet.id, function(){});
return doapi.dropletSetTag('clworker', data.droplet.id, function(){});
});
};
workers.destroy = function(worker){
var worker = worker || workers.pop();
doapi.dropletDestroy(worker.id, function(){
isCheckingWorkers = false;
});
return doapi.dropletDestroy(worker.id, function(){});
};
workers.makeWorkerObj = function(worker){
@ -84,6 +77,7 @@ var workers = (function(){
return runner;
}
return worker;
};
@ -123,9 +117,7 @@ var workers = (function(){
};
workers.checkBalance = function(){
if(isCheckingWorkers) return false;
isCheckingWorkers = true;
var changed = false;
var minWorkers = 3;
console.log('checking balance');
@ -134,11 +126,11 @@ var workers = (function(){
for(var i=minWorkers-workers.length; i--;) workers.create();
return ;
}
if(workers[workers.length-2].usedrunner !== 0){
if(workers[workers.length-3].usedrunner !== 0){
console.log('last droplet has no free runners, starting droplet');
return workers.create();
}
if(workers.length > minWorkers && workers[workers.length-2].usedrunner === 0 && workers[workers.length-1].usedrunner === 0 && workers[workers.length-2].usedrunner === 0){
if(workers.length > minWorkers && workers[workers.length-3].usedrunner === 0 && workers[workers.length-2].usedrunner === 0 && workers[workers.length-1].usedrunner === 0){
console.log('Last 2 runners not used, killing last runner', workers.length);
return workers.destroy();
}
@ -152,7 +144,6 @@ var workers = (function(){
}
console.log('stopping workers balancing check');
isCheckingWorkers = false;
};
return workers;
@ -226,10 +217,12 @@ var getAvailrunner = function(runner){
if(runner) return runner;
return false;
};
setTimeout(function(){
console.log('Starting balance checking in 30 seconds')
setInterval(workers.checkBalance, 15000);
}, 180000);
workers.destroyOld();
workers.checkBalance();

View File

@ -16,4 +16,4 @@ def testAPI(times=100, sleep=2):
print('caught error')
errors += 1
time.sleep(sleep)
print('errors ', errors)
print('errors ', errors, (errors/times)*100)