#!/bin/bash

vServerName="$1"

if [ -z "$vServerName" ]; then
  echo "USAGE: # $(basename $0) VSERVER-NAME" 1>&2
  exit 1
fi

pidfile="/var/run/fliwi-vhost/$vServerName.pid"
if [ ! -f "$pidfile" ]; then
  echo "E: No pidfile found for '$vServerName' at '$pidfile'" 1>&2
  exit 1
fi

pid=$(grep -E -e '^[0-9]+$' $pidfile | head -n 1)
if [ -z "$pid" ] || \
   [ $pid -le 0 ]; then
  echo "E: No valid pid found for '$vServerName' in '$pidfile'" 1>&2
  exit 1
elif [ $(ps -o %a --pid $pid | grep -c -F "pidfile $pidfile") -ne 1 ]; then
  echo "W: No running vServer-process found for '$vServerName' with PID '$pid'" 1>&2
  exit 2
fi

newNicevalue=$(grep -E -e '^fliwi-nice=' /etc/fliwi-vhost/machines/$vServerName.conf | cut -d '=' -f 2)
if [ -z "$newNicevalue" ] || \
   [ $newNicevalue -lt -20 ] || \
   [ $newNicevalue -gt 19 ]; then
  echo "E: No valid new niceness configured for '$vServerName'" 1>&2
  exit 1
fi

reniceFeedback=$(renice --priority $newNicevalue --pid $pid 2>/dev/null)
if [ $? -ne 0 ]; then
  echo "E: Failed to update niceness of '$vServerName': $reniceFeedback" 1>&2
  exit 1
else
  echo "I: Updated niceness of '$vServerName': $reniceFeedback" 1>&2
fi
