add mass restart support to kojivmd

This commit is contained in:
Mike McLean 2010-12-03 11:18:14 -05:00
parent 508b739120
commit 482531dcd3
3 changed files with 24 additions and 3 deletions

View file

@ -218,7 +218,6 @@ fi
%post vm
/sbin/chkconfig --add kojivmd
/sbin/service kojivmd condrestart &> /dev/null || :
%preun vm
if [ $1 = 0 ]; then

View file

@ -23,7 +23,8 @@
import koji
import koji.util
from koji.daemon import SCM, TaskManager
from koji.tasks import ServerExit, BaseTaskHandler, MultiPlatformTask
from koji.tasks import ServerExit, ServerRestart, BaseTaskHandler, MultiPlatformTask
from koji.tasks import RestartTask, RestartVerifyTask
import sys
import logging
import os
@ -181,7 +182,11 @@ def main(options, session):
tm.scanPlugin(pt.load(name))
def shutdown(*args):
raise SystemExit
def restart(*args):
logger.warn("Initiating graceful restart")
tm.restart_pending = True
signal.signal(signal.SIGTERM,shutdown)
signal.signal(signal.SIGUSR1,restart)
taken = False
tm.cleanupAllVMs()
while True:
@ -192,6 +197,9 @@ def main(options, session):
except (SystemExit,ServerExit,KeyboardInterrupt):
logger.warn("Exiting")
break
except ServerRestart:
logger.warn("Restarting")
os.execv(sys.argv[0], sys.argv)
except koji.AuthExpired:
logger.error('Session expired')
break

View file

@ -54,6 +54,17 @@ restart() {
start
}
graceful() {
#SIGUSR1 initiates a graceful restart
pid=$(pidofproc kojivmd)
if test -z "$pid"
then
echo $"$prog not running"
else
kill -10 $pid
fi
}
# See how we were called.
case "$1" in
start)
@ -71,8 +82,11 @@ case "$1" in
condrestart|try-restart)
[ -f /var/lock/subsys/kojivmd ] && restart || :
;;
graceful)
graceful
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|graceful}"
exit 1
esac