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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,13 +48,15 @@ var workers = (function(){
|
|||||||
if(workers.currentCreating > workers.currentCreatingMax ) return false;
|
if(workers.currentCreating > workers.currentCreatingMax ) return false;
|
||||||
return doapi.dropletCreate({
|
return doapi.dropletCreate({
|
||||||
name: 'clw'+workerSnapID+'-'+(Math.random()*100).toString().slice(-4),
|
name: 'clw'+workerSnapID+'-'+(Math.random()*100).toString().slice(-4),
|
||||||
image: '17641214'
|
image: '18473675',
|
||||||
|
size: '2gb'
|
||||||
}, function(data){
|
}, function(data){
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
workers.currentCreating++;
|
workers.currentCreating++;
|
||||||
setTimeout(function(dopletNewID){
|
setTimeout(function(dopletNewID){
|
||||||
return workers.checkDroplet(dopletNewID);
|
return workers.checkDroplet(dopletNewID);
|
||||||
}, 70000, data.droplet.id);
|
}, 70000, data.droplet.id);
|
||||||
|
|
||||||
return doapi.dropletSetTag('clworker', data.droplet.id, function(){});
|
return doapi.dropletSetTag('clworker', data.droplet.id, function(){});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -110,7 +112,10 @@ var workers = (function(){
|
|||||||
if(~currentIDs.indexOf(worker.id)) return false;
|
if(~currentIDs.indexOf(worker.id)) return false;
|
||||||
|
|
||||||
console.log('found old droplet, killing it');
|
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){
|
return lxc.startEphemeral(name, 'crunner0', worker.ip, function(data){
|
||||||
if(!data.ip) return setTimeout(workers.startRunners(worker, newWorker),0);
|
if(!data.ip) return setTimeout(workers.startRunners(worker, newWorker),0);
|
||||||
// console.log('started runner on', worker.name)
|
// 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({
|
worker.availrunners.push({
|
||||||
ip: data.ip,
|
ip: data.ip,
|
||||||
@ -142,7 +155,7 @@ var workers = (function(){
|
|||||||
|
|
||||||
workers.checkBalance = function(){
|
workers.checkBalance = function(){
|
||||||
|
|
||||||
var minWorkers = 3;
|
var minWorkers = 1;
|
||||||
console.log('checking balance');
|
console.log('checking balance');
|
||||||
|
|
||||||
if(workers.length < minWorkers){
|
if(workers.length < minWorkers){
|
||||||
@ -150,22 +163,22 @@ var workers = (function(){
|
|||||||
for(var i=minWorkers-workers.length; i--;) workers.create();
|
for(var i=minWorkers-workers.length; i--;) workers.create();
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if(workers[workers.length-3].usedrunner !== 0 && workers[workers.length-2].usedrunner !== 0 && workers[workers.length-1].usedrunner !== 0){
|
// 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');
|
// console.log('last 3 workers have no free runners, starting droplet');
|
||||||
return workers.create();
|
// 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){
|
// 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);
|
// console.log('Last 2 runners not used, killing last runner', workers.length);
|
||||||
return workers.destroy();
|
// return workers.destroy();
|
||||||
}
|
// }
|
||||||
|
|
||||||
for(let worker of workers){
|
// for(let worker of workers){
|
||||||
if(worker.length <= 3) break;
|
// if(worker.length <= 3) break;
|
||||||
if(worker.availrunners.length === 0 && worker.usedrunner === 0){
|
// if(worker.availrunners.length === 0 && worker.usedrunner === 0){
|
||||||
console.log('found zombie worker, destroying')
|
// console.log('found zombie worker, destroying')
|
||||||
workers.destroy(worker);
|
// workers.destroy(worker);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
console.log('stopping workers balancing check');
|
console.log('stopping workers balancing check');
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user