tisk tisk
This commit is contained in:
parent
2aa0257502
commit
d4b45739f1
136
nano.save
Normal file
136
nano.save
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
Color_Off='\e[0m' # Text Reset
|
||||||
|
|
||||||
|
# Regular Colors
|
||||||
|
Black='\e[0;30m' # Black
|
||||||
|
Red='\e[0;31m' # Red
|
||||||
|
Green='\e[0;32m' # Green
|
||||||
|
Yellow='\e[0;33m' # Yellow
|
||||||
|
Blue='\e[0;34m' # Blue
|
||||||
|
Purple='\e[0;35m' # Purple
|
||||||
|
Cyan='\e[0;36m' # Cyan
|
||||||
|
White='\e[0;37m' # White
|
||||||
|
|
||||||
|
# Bold
|
||||||
|
BBlack='\e[1;30m' # Black
|
||||||
|
BRed='\e[1;31m' # Red
|
||||||
|
BGreen='\e[1;32m' # Green
|
||||||
|
BYellow='\e[1;33m' # Yellow
|
||||||
|
BBlue='\e[1;34m' # Blue
|
||||||
|
BPurple='\e[1;35m' # Purple
|
||||||
|
BCyan='\e[1;36m' # Cyan
|
||||||
|
BWhite='\e[1;37m' # White
|
||||||
|
|
||||||
|
# Underline
|
||||||
|
UBlack='\e[4;30m' # Black
|
||||||
|
URed='\e[4;31m' # Red
|
||||||
|
UGreen='\e[4;32m' # Green
|
||||||
|
UYellow='\e[4;33m' # Yellow
|
||||||
|
UBlue='\e[4;34m' # Blue
|
||||||
|
UPurple='\e[4;35m' # Purple
|
||||||
|
UCyan='\e[4;36m' # Cyan
|
||||||
|
UWhite='\e[4;37m' # White
|
||||||
|
|
||||||
|
# Background
|
||||||
|
On_Black='\e[40m' # Black
|
||||||
|
On_Red='\e[41m' # Red
|
||||||
|
On_Green='\e[42m' # Green
|
||||||
|
On_Yellow='\e[43m' # Yellow
|
||||||
|
On_Blue='\e[44m' # Blue
|
||||||
|
On_Purple='\e[45m' # Purple
|
||||||
|
On_Cyan='\e[46m' # Cyan
|
||||||
|
On_White='\e[47m' # White
|
||||||
|
|
||||||
|
# High Intensity
|
||||||
|
IBlack='\e[0;90m' # Black
|
||||||
|
IRed='\e[0;91m' # Red
|
||||||
|
IGreen='\e[0;92m' # Green
|
||||||
|
IYellow='\e[0;93m' # Yellow
|
||||||
|
IBlue='\e[0;94m' # Blue
|
||||||
|
IPurple='\e[0;95m' # Purple
|
||||||
|
ICyan='\e[0;96m' # Cyan
|
||||||
|
IWhite='\e[0;97m' # White
|
||||||
|
|
||||||
|
# Bold High Intensity
|
||||||
|
BIBlack='\e[1;90m' # Black
|
||||||
|
BIRed='\e[1;91m' # Red
|
||||||
|
BIGreen='\e[1;92m' # Green
|
||||||
|
BIYellow='\e[1;93m' # Yellow
|
||||||
|
BIBlue='\e[1;94m' # Blue
|
||||||
|
BIPurple='\e[1;95m' # Purple
|
||||||
|
BICyan='\e[1;96m' # Cyan
|
||||||
|
BIWhite='\e[1;97m' # White
|
||||||
|
|
||||||
|
# High Intensity backgrounds
|
||||||
|
On_IBlack='\e[0;100m' # Black
|
||||||
|
On_IRed='\e[0;101m' # Red
|
||||||
|
On_IGreen='\e[0;102m' # Green
|
||||||
|
On_IYellow='\e[0;103m' # Yellow
|
||||||
|
On_IBlue='\e[0;104m' # Blue
|
||||||
|
On_IPurple='\e[0;105m' # Purple
|
||||||
|
On_ICyan='\e[0;106m' # Cyan
|
||||||
|
On_IWhite='\e[0;107m' # White
|
||||||
|
|
||||||
|
|
||||||
|
prompt_git() {
|
||||||
|
local s='';
|
||||||
|
local branchName='';
|
||||||
|
|
||||||
|
# Check if the current directory is in a Git repository.
|
||||||
|
if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then
|
||||||
|
|
||||||
|
# check if the current directory is in .git before running git checks
|
||||||
|
if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == 'false' ]; then
|
||||||
|
|
||||||
|
# Ensure the index is up to date.
|
||||||
|
git update-index --really-refresh -q &>/dev/null;
|
||||||
|
|
||||||
|
# Check for uncommitted changes in the index.
|
||||||
|
if ! $(git diff --quiet --ignore-submodules --cached); then
|
||||||
|
s+='+';
|
||||||
|
fi;
|
||||||
|
|
||||||
|
# Check for unstaged changes.
|
||||||
|
if ! $(git diff-files --quiet --ignore-submodules --); then
|
||||||
|
s+="${On_Red}!${Color_Off}";
|
||||||
|
fi;
|
||||||
|
|
||||||
|
# Check for untracked files.
|
||||||
|
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
|
||||||
|
s+="${On_Yellow}?";
|
||||||
|
fi;
|
||||||
|
|
||||||
|
# Check for stashed files.
|
||||||
|
if $(git rev-parse --verify refs/stash &>/dev/null); then
|
||||||
|
s+="${On_Green}\$";
|
||||||
|
fi;
|
||||||
|
|
||||||
|
fi;
|
||||||
|
|
||||||
|
# Get the short symbolic ref.
|
||||||
|
# If HEAD isn’t a symbolic ref, get the short SHA for the latest commit
|
||||||
|
# Otherwise, just give up.
|
||||||
|
|
||||||
|
branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
|
||||||
|
git rev-parse --short HEAD 2> /dev/null || \
|
||||||
|
echo '(unknown)')";
|
||||||
|
|
||||||
|
# [ -n "${s}" ] && s="${BBlue}[${s}${Color_Off}${BBlue}]";
|
||||||
|
|
||||||
|
echo -e "${1}${branchName}${Color_Off}${s}${Color_Off}";
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
fi;
|
||||||
|
}
|
||||||
|
|
||||||
|
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
|
||||||
|
|
||||||
|
# PS1='\[\033[01;35m\]\H\[\033[00m\]:\[\033[01;34m\]\w $(prompt_git) \[\033[01;36m\]\d \n'
|
||||||
|
PS1="\[${BPurple}\]\H\[${BWhite}\]:\[${BBlue}\]\w\$(prompt_git \"\[${BWhite}\] on \[${BPurple}\]\") \[${BCyan}\]\d \n"
|
||||||
|
PS1+="\[${BYellow}\]\@ \[${BGreen}\]\u\[${Color_Off}\]$ "
|
||||||
|
|
||||||
|
export PS1;
|
||||||
|
|
||||||
|
[[ $EUID == 0 ]] && PS1='\[\033[01;35m\]\H \[\033[00m\]: \[\033[01;34m\]\w \[\033[01;33m\] \t \[\033[01;36m\]\d\n!\[\033[01;31m\]\u \[\033[00m\]# '
|
||||||
|
|
||||||
|
alias open='xdg-open &>/dev/null'
|
||||||
|
alias c9ide='/home/william/dev/c9sdk/server.js'
|
@ -12,7 +12,6 @@ var workerSnapID = 'V1'
|
|||||||
// console.log = function(){};
|
// console.log = function(){};
|
||||||
|
|
||||||
var label2runner = {};
|
var label2runner = {};
|
||||||
var workers = [];
|
|
||||||
var isCheckingWorkers = false;
|
var isCheckingWorkers = false;
|
||||||
|
|
||||||
var workers = (function(){
|
var workers = (function(){
|
||||||
@ -28,15 +27,15 @@ var workers = (function(){
|
|||||||
return doapi.dropletInfo(id, function(data){
|
return doapi.dropletInfo(id, function(data){
|
||||||
var worker = JSON.parse(data)['droplet'];
|
var worker = JSON.parse(data)['droplet'];
|
||||||
if(worker.status == 'active'){
|
if(worker.status == 'active'){
|
||||||
console.log('Droplet is now active, starting runners in 20 seconds');
|
// console.log('Droplet is now active, starting runners in 20 seconds');
|
||||||
|
|
||||||
return setTimeout(function(worker){
|
return setTimeout(function(worker){
|
||||||
console.log('Ready to start runners!');
|
// console.log('Ready to start runners!');
|
||||||
workers.startRunners(workers.makeWorkerObj(worker), true);
|
workers.startRunners(workers.makeWorkerObj(worker), true);
|
||||||
workers.currentCreating--;
|
workers.currentCreating--;
|
||||||
}, 20000, worker);
|
}, 20000, worker);
|
||||||
}else{
|
}else{
|
||||||
console.log('Worker not ready, check again in ', time, 'MS');
|
// console.log('Worker not ready, check again in ', time, 'MS');
|
||||||
|
|
||||||
return setTimeout(function(){
|
return setTimeout(function(){
|
||||||
workers.checkDroplet(id);
|
workers.checkDroplet(id);
|
||||||
@ -63,7 +62,7 @@ var workers = (function(){
|
|||||||
|
|
||||||
workers.destroy = function(worker){
|
workers.destroy = function(worker){
|
||||||
var worker = worker || workers.pop();
|
var worker = worker || workers.pop();
|
||||||
return doapi.dropletDestroy(worker.id, function(){});
|
return doapi.dropletDestroy(worker.id, console.log);
|
||||||
};
|
};
|
||||||
|
|
||||||
workers.makeWorkerObj = function(worker){
|
workers.makeWorkerObj = function(worker){
|
||||||
@ -76,7 +75,7 @@ var workers = (function(){
|
|||||||
worker.index = workers.length,
|
worker.index = workers.length,
|
||||||
worker.getRunner = function(){
|
worker.getRunner = function(){
|
||||||
if(this.availrunners.length === 0) return false;
|
if(this.availrunners.length === 0) return false;
|
||||||
console.log('getting runner from ', worker.name, ' avail length ', this.availrunners.length);
|
// console.log('getting runner from ', worker.name, ' avail length ', this.availrunners.length);
|
||||||
var runner = this.availrunners.pop();
|
var runner = this.availrunners.pop();
|
||||||
this.usedrunner++;
|
this.usedrunner++;
|
||||||
label2runner[runner.label] = runner;
|
label2runner[runner.label] = runner;
|
||||||
@ -87,10 +86,20 @@ var workers = (function(){
|
|||||||
return worker;
|
return worker;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
workers.__workersId = function(argument){
|
||||||
|
return workers.map(function(item){
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
workers.destroyOld = function(){
|
workers.destroyOld = function(){
|
||||||
|
var currentIDs = workers.__workersId()
|
||||||
doapi.dropletsByTag('clworker', function(data){
|
doapi.dropletsByTag('clworker', function(data){
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
data['droplets'].forEach(function(worker){
|
data['droplets'].forEach(function(worker){
|
||||||
|
if(worker.id in currentIDs) return false;
|
||||||
|
|
||||||
console.log('found old droplet, killing it');
|
console.log('found old droplet, killing it');
|
||||||
doapi.dropletDestroy(worker.id, function(){});
|
doapi.dropletDestroy(worker.id, function(){});
|
||||||
});
|
});
|
||||||
@ -105,7 +114,7 @@ var workers = (function(){
|
|||||||
var name = 'crunner-'+(Math.random()*100).toString().slice(-4);
|
var name = 'crunner-'+(Math.random()*100).toString().slice(-4);
|
||||||
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]
|
||||||
|
|
||||||
worker.availrunners.push({
|
worker.availrunners.push({
|
||||||
@ -201,7 +210,7 @@ var getAvailrunner = function(runner){
|
|||||||
|
|
||||||
var run = function(req, res, runner, count){
|
var run = function(req, res, runner, count){
|
||||||
count = count || 0;
|
count = count || 0;
|
||||||
console.log('run start', count, runner);
|
console.log('run start', count);
|
||||||
|
|
||||||
if(!runner){
|
if(!runner){
|
||||||
console.log('no runner');
|
console.log('no runner');
|
||||||
@ -209,6 +218,12 @@ var run = function(req, res, runner, count){
|
|||||||
return res.json({error: 'No runners, try again soon.'});
|
return res.json({error: 'No runners, try again soon.'});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(count > 3){
|
||||||
|
console.log('to many reties on runner');
|
||||||
|
res.status(400);
|
||||||
|
return res.json({error: 'Runner restarted to many times'});
|
||||||
|
}
|
||||||
|
|
||||||
var httpOptions = {
|
var httpOptions = {
|
||||||
url: 'http://' + runner.worker.ip,
|
url: 'http://' + runner.worker.ip,
|
||||||
headers: {
|
headers: {
|
||||||
@ -235,9 +250,13 @@ var run = function(req, res, runner, count){
|
|||||||
};
|
};
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
console.log('Starting balance checking in 30 seconds')
|
// console.log('Starting balance checking in 30 seconds')
|
||||||
setInterval(workers.checkBalance, 15000);
|
setInterval(workers.checkBalance, 15000);
|
||||||
}, 180000);
|
}, 180000);
|
||||||
|
|
||||||
|
setInterval(function(argument) {
|
||||||
|
workers.destroyOld();
|
||||||
|
}, 3600000); // 1 hour
|
||||||
|
|
||||||
workers.destroyOld();
|
workers.destroyOld();
|
||||||
workers.checkBalance();
|
workers.checkBalance();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user