updated checkBalance
This commit is contained in:
parent
654628b44d
commit
41874764bd
@ -59,7 +59,7 @@ var Worker = (function(){
|
|||||||
var worker = Object.create(proto);
|
var worker = Object.create(proto);
|
||||||
Object.assign(worker, config);
|
Object.assign(worker, config);
|
||||||
worker.networks.v4.forEach(function(value){
|
worker.networks.v4.forEach(function(value){
|
||||||
worker[value.type+'IP'] = value.ip_address;
|
worker[ value.type + 'IP' ] = value.ip_address;
|
||||||
});
|
});
|
||||||
|
|
||||||
worker.availrunners = [];
|
worker.availrunners = [];
|
||||||
@ -67,6 +67,7 @@ var Worker = (function(){
|
|||||||
worker.usedrunners = 0;
|
worker.usedrunners = 0;
|
||||||
worker.age = +(new Date());
|
worker.age = +(new Date());
|
||||||
worker.isBuildingRunners = false;
|
worker.isBuildingRunners = false;
|
||||||
|
worker.canSchedule = true;
|
||||||
|
|
||||||
return worker;
|
return worker;
|
||||||
};
|
};
|
||||||
@ -93,6 +94,7 @@ var Worker = (function(){
|
|||||||
|
|
||||||
proto.destroy = function(){
|
proto.destroy = function(){
|
||||||
var worker = this;
|
var worker = this;
|
||||||
|
worker.canSchedule = false;
|
||||||
return doapi.dropletDestroy(this.id, function(body) {
|
return doapi.dropletDestroy(this.id, function(body) {
|
||||||
console.log('Deleted worker', worker.name);
|
console.log('Deleted worker', worker.name);
|
||||||
});
|
});
|
||||||
@ -103,7 +105,7 @@ var Worker = (function(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
proto.startRunners = function(args){
|
proto.startRunners = function(args){
|
||||||
// console.log('starting runners on', args.worker.name, args.worker.ip)
|
console.log('Starting runners on', args.worker.name, args.worker.ip);
|
||||||
|
|
||||||
var worker = this;
|
var worker = this;
|
||||||
// dont make runners on out dated workers
|
// dont make runners on out dated workers
|
||||||
@ -189,7 +191,7 @@ var WorkerCollection = (function(){
|
|||||||
|
|
||||||
//**************************************************
|
//**************************************************
|
||||||
//**************************************************
|
//**************************************************
|
||||||
// temporary until a better location is found
|
// TODO: Move to Runners
|
||||||
workers.runnerMap = {};
|
workers.runnerMap = {};
|
||||||
|
|
||||||
workers.__runnerCleanUp = function(label){
|
workers.__runnerCleanUp = function(label){
|
||||||
@ -237,7 +239,7 @@ var WorkerCollection = (function(){
|
|||||||
// move this to Create Droplet function?
|
// move this to Create Droplet function?
|
||||||
|
|
||||||
doapi.dropletToActive({
|
doapi.dropletToActive({
|
||||||
name: 'clw' + config.version + '-' + (Math.random()*100).toString().slice(-4),
|
name: config.tagPrefix + config.version + '-' + (Math.random()*100).toString().slice(-4),
|
||||||
image: config.image,
|
image: config.image,
|
||||||
size: config.size,
|
size: config.size,
|
||||||
onCreate: function(data){
|
onCreate: function(data){
|
||||||
@ -351,56 +353,65 @@ var WorkerCollection = (function(){
|
|||||||
workers.checkForZombies();
|
workers.checkForZombies();
|
||||||
|
|
||||||
// if there are workers being created, stop scale up and down check
|
// if there are workers being created, stop scale up and down check
|
||||||
if(workers.currentCreating + workers.length < workers.settings.min) {
|
if(workers.currentCreating + workers.length > workers.settings.min) {
|
||||||
null;
|
null;
|
||||||
} else if(workers.currentCreating){
|
} else if(workers.currentCreating){
|
||||||
return console.log(`Killing balance, workers are being created.`);
|
return console.log(`Killing balance, workers are being created.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// hold amount of workers with no used runners
|
// count workers and locate oldest worker
|
||||||
var lastMinAval = 0;
|
var oldestWorker, isNotOlder, workerCount = 0;
|
||||||
|
|
||||||
// check to make sure the `workers.settings.minAvail` have free runners
|
for(let worker of workers){
|
||||||
for(let worker of workers.slice(-workers.settings.minAvail)){
|
console.log(`
|
||||||
// INVERT this conditional
|
CHECK_BALANCE
|
||||||
if(worker.usedrunners !== 0){
|
worker.name: ${worker.name}
|
||||||
lastMinAval++;
|
worker.usedrunners: ${worker.usedrunners}
|
||||||
}else{
|
worker.availrunners: ${worker.availrunners.length}
|
||||||
// no need to keep counting, workers need to be created
|
workerCount: ${workerCount}
|
||||||
break;
|
compare: ${worker.usedrunners !== 0}
|
||||||
|
`);
|
||||||
|
|
||||||
|
if(worker.usedrunners === 0){
|
||||||
|
workerCount++;
|
||||||
|
isNotOlder = oldestWorker && oldestWorker.age < worker.age
|
||||||
|
oldestWorker = (isNotOlder ? oldestWorker:worker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(
|
if(workerCount > workers.settings.minAvail){
|
||||||
`LMA: ${lastMinAval}`,
|
// Remove oldest worker if there are more than the settings file state
|
||||||
`Settings MA: ${workers.settings.minAvail}`,
|
console.log(`
|
||||||
`Workers: ${workers.length}`
|
Destroying Worker
|
||||||
);
|
Last ${workers.settings.minAvail} workers not used, killing last worker
|
||||||
if(lastMinAval > workers.settings.minAvail){
|
workerCount: ${workerCount}
|
||||||
// Remove workers if there are more than the settings states
|
minAvail: ${workers.settings.minAvail}
|
||||||
console.log(
|
workers: ${workers.length}
|
||||||
`Last ${workers.settings.minAvail} workers not used, killing last worker`,
|
`);
|
||||||
'lastMinAval:', lastMinAval,
|
return workers.destroy(oldestWorker);
|
||||||
'minAvail:', workers.settings.minAvail,
|
|
||||||
'workers:', workers.length
|
|
||||||
);
|
|
||||||
|
|
||||||
return workers.destroy();
|
} else if( workerCount < workers.settings.minAvail){
|
||||||
|
// Creates worker if there are less than the settings state
|
||||||
} else if(lastMinAval < workers.settings.minAvail){
|
console.log(`
|
||||||
// creates workers if the settings file demands it
|
Creating Worker
|
||||||
console.log(
|
last 3 workers have no free runners, starting worker,
|
||||||
'last 3 workers have no free runners, starting worker',
|
workerCount: ${workerCount}
|
||||||
'lastMinAval:', lastMinAval,
|
minAvail: ${workers.settings.minAvail}
|
||||||
'minAvail:', workers.settings.minAvail,
|
workers: ${workers.length}
|
||||||
'workers:', workers.length
|
`);
|
||||||
);
|
|
||||||
|
|
||||||
return workers.create();
|
return workers.create();
|
||||||
|
} else {
|
||||||
|
console.log(`
|
||||||
|
Blanced
|
||||||
|
LMA: ${workerCount}
|
||||||
|
Settings MA: ${workers.settings.minAvail}
|
||||||
|
Workers: ${workers.length}
|
||||||
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
workers.settingsSave = function(){
|
workers.settingsSave = function(){
|
||||||
// save the live settings file to disk
|
// save the live settings file to disk
|
||||||
|
|
||||||
|
@ -37,6 +37,11 @@ sleep(${sleepTime})
|
|||||||
noRunner++;
|
noRunner++;
|
||||||
}else if(error || response.statusCode !== 200){
|
}else if(error || response.statusCode !== 200){
|
||||||
errors++;
|
errors++;
|
||||||
|
console.log(`
|
||||||
|
ID: ${id}
|
||||||
|
Error: ${error}
|
||||||
|
`);
|
||||||
|
} else {
|
||||||
body = JSON.parse(body);
|
body = JSON.parse(body);
|
||||||
res = (Buffer.from(body.res, 'base64').toString('ascii'));
|
res = (Buffer.from(body.res, 'base64').toString('ascii'));
|
||||||
}
|
}
|
||||||
@ -58,4 +63,4 @@ let __do = function(till){
|
|||||||
setTimeout(__do, 1500, --till);
|
setTimeout(__do, 1500, --till);
|
||||||
};
|
};
|
||||||
|
|
||||||
__do(30)
|
__do(500);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user