diff --git a/doapi.js b/doapi.js index 8847282..cf14911 100644 --- a/doapi.js +++ b/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; } diff --git a/routes/api.js b/routes/api.js index 54cc5a1..826a58d 100644 --- a/routes/api.js +++ b/routes/api.js @@ -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'); };