commit
8e82a7f47a
14
doapi.js
14
doapi.js
@ -113,6 +113,20 @@ api = function(key){
|
||||
});
|
||||
};
|
||||
|
||||
this.domianAddRecord = function(args, callback){
|
||||
|
||||
var options = {
|
||||
url: this.BASEURL+'domains/'+ args.domain +'/records',
|
||||
headers: this.headers,
|
||||
body: JSON.stringify(args)
|
||||
};
|
||||
this.calls++;
|
||||
|
||||
return request.post(options, function(error, response, body){
|
||||
return callback(body, response, error);
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,15 @@ var workers = (function(){
|
||||
if(workers.currentCreating > workers.currentCreatingMax ) return false;
|
||||
return doapi.dropletCreate({
|
||||
name: 'clw'+workerSnapID+'-'+(Math.random()*100).toString().slice(-4),
|
||||
image: '17641214'
|
||||
image: '18473675',
|
||||
size: '2gb'
|
||||
}, function(data){
|
||||
data = JSON.parse(data);
|
||||
workers.currentCreating++;
|
||||
setTimeout(function(dopletNewID){
|
||||
return workers.checkDroplet(dopletNewID);
|
||||
}, 70000, data.droplet.id);
|
||||
|
||||
return doapi.dropletSetTag('clworker', data.droplet.id, function(){});
|
||||
});
|
||||
|
||||
@ -110,7 +112,10 @@ var workers = (function(){
|
||||
if(~currentIDs.indexOf(worker.id)) return false;
|
||||
|
||||
console.log('found old droplet, killing it');
|
||||
doapi.dropletDestroy(worker.id, function(body){console.log('delete body', body)});
|
||||
setTimeout(function(id) {
|
||||
// body...
|
||||
doapi.dropletDestroy(id, function(body){console.log('delete body', body)});
|
||||
}, Math.floor(Math.random() * 9) + 1, worker.id)
|
||||
});
|
||||
});
|
||||
};
|
||||
@ -124,7 +129,15 @@ var workers = (function(){
|
||||
return lxc.startEphemeral(name, 'crunner0', worker.ip, function(data){
|
||||
if(!data.ip) return setTimeout(workers.startRunners(worker, newWorker),0);
|
||||
// console.log('started runner on', worker.name)
|
||||
if(newWorker) worker = workers[workers.push(worker)-1]
|
||||
if(newWorker){
|
||||
worker = workers[workers.push(worker)-1];
|
||||
doapi.domianAddRecord({
|
||||
domain: "codeland.us",
|
||||
type: "A",
|
||||
name: "*."+worker.name+".workers",
|
||||
data: worker.publicIP
|
||||
}, function(){});
|
||||
}
|
||||
|
||||
worker.availrunners.push({
|
||||
ip: data.ip,
|
||||
@ -142,7 +155,7 @@ var workers = (function(){
|
||||
|
||||
workers.checkBalance = function(){
|
||||
|
||||
var minWorkers = 3;
|
||||
var minWorkers = 1;
|
||||
console.log('checking balance');
|
||||
|
||||
if(workers.length < minWorkers){
|
||||
@ -150,22 +163,22 @@ var workers = (function(){
|
||||
for(var i=minWorkers-workers.length; i--;) workers.create();
|
||||
return ;
|
||||
}
|
||||
if(workers[workers.length-3].usedrunner !== 0 && workers[workers.length-2].usedrunner !== 0 && workers[workers.length-1].usedrunner !== 0){
|
||||
console.log('last 3 workers have no free runners, starting droplet');
|
||||
return workers.create();
|
||||
}
|
||||
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();
|
||||
}
|
||||
// if(workers[workers.length-3].usedrunner !== 0 && workers[workers.length-2].usedrunner !== 0 && workers[workers.length-1].usedrunner !== 0){
|
||||
// console.log('last 3 workers have no free runners, starting droplet');
|
||||
// return workers.create();
|
||||
// }
|
||||
// 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();
|
||||
// }
|
||||
|
||||
for(let worker of workers){
|
||||
if(worker.length <= 3) break;
|
||||
if(worker.availrunners.length === 0 && worker.usedrunner === 0){
|
||||
console.log('found zombie worker, destroying')
|
||||
workers.destroy(worker);
|
||||
}
|
||||
}
|
||||
// for(let worker of workers){
|
||||
// if(worker.length <= 3) break;
|
||||
// if(worker.availrunners.length === 0 && worker.usedrunner === 0){
|
||||
// console.log('found zombie worker, destroying')
|
||||
// workers.destroy(worker);
|
||||
// }
|
||||
// }
|
||||
|
||||
console.log('stopping workers balancing check');
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user