#!/bin/bash

SHELL=/bin/bash
PATH=/usr/sbin:/usr/bin:/sbin:/bin

count_cpu()
{
  _CPU_INFO=$(grep -c processor /proc/cpuinfo)
  _CPU_INFO=${_CPU_INFO//[^0-9]/}
  _NPROC_TEST=$(which nproc)
  if [ -z "$_NPROC_TEST" ] ; then
    _CPU_NR="$_CPU_INFO"
  else
    _CPU_NR=`nproc`
  fi
  _CPU_NR=${_CPU_NR//[^0-9]/}
  if [ ! -z "$_CPU_NR" ] && [ ! -z "$_CPU_INFO" ] && [ "$_CPU_NR" -gt "$_CPU_INFO" ] && [ "$_CPU_INFO" -gt "0" ] ; then
    _CPU_NR="$_CPU_INFO"
  fi
  if [ -z "$_CPU_NR" ] || [ "$_CPU_NR" -lt "1" ] ; then
    _CPU_NR=1
  fi
}

load_control()
{
  if [ -e "/root/.barracuda.cnf" ] ; then
    source /root/.barracuda.cnf
    _CPU_SPIDER_RATIO=${_CPU_SPIDER_RATIO//[^0-9]/}
  fi
  if [ -z "$_CPU_SPIDER_RATIO" ] ; then
    _CPU_SPIDER_RATIO=3
  fi
  _O_LOAD=`awk '{print $1*100}' /proc/loadavg`
  let "_O_LOAD = (($_O_LOAD / $_CPU_NR))"
  let "_O_LOAD_SPR = ((100 * $_CPU_SPIDER_RATIO))"
}

action()
{
  if [ $_O_LOAD -lt $_O_LOAD_SPR ] ; then
    echo load is $_O_LOAD while maxload is $_O_LOAD_SPR
    echo ...now doing CTL...
    su -s /bin/bash - EDIT_USER -c "bash /data/disk/EDIT_USER/aegir.sh"
    touch /var/xdrago/log/last-run-EDIT_USER
    echo CTL done
  else
    echo load is $_O_LOAD while maxload is $_O_LOAD_SPR
    echo ...we have to wait...
  fi
}

if [ -e "/var/run/boa_wait.pid" ] ; then
  touch /var/xdrago/log/wait-EDIT_USER
  exit 0
else
  count_cpu
  load_control
  action
  exit 0
fi
