From ec4dd1f12eff5aab513845cafa87fbec8166adff Mon Sep 17 00:00:00 2001 From: Amy Fong Date: Fri, 21 Mar 2014 17:07:29 -0400 Subject: OpenStack: nova-novncproxy:can't stop this service nova-novncproxy and nova-spicehtml5proxy both do not check to see if the process specified in PIDFILE exists before firing off a new one. Both initrd files can actually use nova.init (used for the many other nova-* daemons) nova-consoleauth also has this issue, we add a check in start to see if the process in PIDFILE exists and exits if it does. Signed-off-by: Amy Fong Signed-off-by: Bruce Ashfield --- .../python/python-nova/nova-console.init | 119 +++++++++++++++++++++ .../python/python-nova/nova-consoleauth | 21 +++- .../python/python-nova/nova-novncproxy | 94 ---------------- .../python/python-nova/nova-spicehtml5proxy | 91 ---------------- 4 files changed, 139 insertions(+), 186 deletions(-) create mode 100644 meta-openstack/recipes-devtools/python/python-nova/nova-console.init delete mode 100644 meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy delete mode 100644 meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy (limited to 'meta-openstack/recipes-devtools/python/python-nova') diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-console.init b/meta-openstack/recipes-devtools/python/python-nova/nova-console.init new file mode 100644 index 0000000..bb5e94c --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-console.init @@ -0,0 +1,119 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: nova-compute +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: OpenStack Compute (Nova) - @suffix@ +# Description: OpenStack Compute (Nova) - @suffix@ +### END INIT INFO + +SUFFIX="@suffix@" +DESC="nova-@suffix@" +DAEMON="/usr/bin/nova-$SUFFIX" +PIDFILE="/var/run/nova/nova-$SUFFIX.pid" + +if test -f /etc/default/nova-consoleproxy; then + . /etc/default/nova-consoleproxy +fi + + +# default to spicehtml5 +if [ -z "${NOVA_CONSOLE_PROXY_TYPE}" ] ; then + NOVA_CONSOLE_PROXY_TYPE="spicehtml5" +fi + +if ! [ "${NOVA_CONSOLE_PROXY_TYPE}" = "@proxy_type@" ] ; then + exit 0 +fi + +mkdir -p /var/run/nova +chown nova:root /var/run/nova/ + +mkdir -p /var/lock/nova +chown nova:root /var/lock/nova/ + +export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" +export TMPDIR=/var/lib/nova/tmp + +if ! [ -x ${DAEMON} ] ; then + exit 0 +fi + +start () +{ + if [ -e $PIDFILE ]; then + PIDDIR=/proc/$(cat $PIDFILE) + if [ -d ${PIDDIR} ]; then + echo "$DESC already running." + exit 1 + else + echo "Removing stale PID file $PIDFILE" + rm -f $PIDFILE + fi + fi + PIDDIR=`dirname $PIDFILE` + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown nova $PIDDIR + fi + echo -n "Starting $DESC..." + + sudo -u nova \ + start-stop-daemon --start --quiet --background \ + --pidfile ${PIDFILE} --make-pidfile --exec ${DAEMON} + + if [ $? -eq 0 ]; then + echo "done." + else + echo "failed." + fi +} + +stop () +{ + echo -n "Stopping $DESC..." + start-stop-daemon --stop --quiet --pidfile $PIDFILE + if [ $? -eq 0 ]; then + echo "done." + else + echo "failed." + fi + rm -f $PIDFILE +} + +status() +{ + pid=`cat $PIDFILE 2>/dev/null` + if [ -n "$pid" ]; then + if ps -p $pid >&- ; then + echo "$DESC is running" + return + fi + fi + echo "$DESC is not running" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|force-reload|reload) + stop + start + ;; + status) + status + ;; + *) + echo "Usage: $0 {start|stop|force-reload|restart|reload|status}" + exit 1 + ;; +esac + +exit 0 diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth index 56561db..d2c1f29 100644 --- a/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth @@ -59,8 +59,27 @@ status() case "$1" in start) test "$ENABLED" = "true" || exit 0 + + if [ -e $PIDFILE ]; then + PIDDIR=/proc/$(cat $PIDFILE) + if [ -d ${PIDDIR} ]; then + echo "$DESC already running." + exit 1 + else + echo "Removing stale PID file $PIDFILE" + rm -f $PIDFILE + fi + fi + PIDDIR=`dirname $PIDFILE` + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown nova $PIDDIR + fi + echo "Starting nova console" "nova-consoleauth" - start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} + sudo -u nova \ + start-stop-daemon --start -b -m --pidfile $PIDFILE \ + --exec ${DAEMON} -- ${DAEMON_ARGS} log_end_msg $? ;; stop) diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy b/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy deleted file mode 100644 index f2b2f22..0000000 --- a/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy +++ /dev/null @@ -1,94 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: nova-novncproxy -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Should-Start: libvirt-bin -# Should-Stop: libvirt-bin -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: nova-novncproxy service -# Description: Provides vnc proxy services for the openstack -# cloud computing system -### END INIT INFO - - -set -e - -DAEMON=/usr/bin/nova-novncproxy -DAEMON_ARGS="" -PIDFILE=/var/run/nova/nova-novncproxy.pid - -ENABLED=true - -if test -f /etc/default/nova-consoleproxy; then - . /etc/default/nova-consoleproxy -fi - -# default to novnc -if [ -z "${NOVA_CONSOLE_PROXY_TYPE}" ] ; then - NOVA_CONSOLE_PROXY_TYPE="novnc" -fi - -if ! [ "${NOVA_CONSOLE_PROXY_TYPE}" = "novnc" ] ; then - exit 0 -fi - -mkdir -p /var/run/nova -chown nova:root /var/run/nova/ - -mkdir -p /var/lock/nova -chown nova:root /var/lock/nova/ - -. /lib/lsb/init-functions - -export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" -export TMPDIR=/var/lib/nova/tmp - -if ! [ -x ${DAEMON} ] ; then - exit 0 -fi - -DESC="nova vnc proxy" -status() -{ - pid=`cat $PIDFILE 2>/dev/null` - if [ -n "$pid" ]; then - if ps -p $pid >&- ; then - echo "$DESC is running" - return - fi - fi - echo "$DESC is not running" -} - -case "$1" in - start) - test "$ENABLED" = "true" || exit 0 - echo "Starting nova vnc proxy" "nova-novncproxy" - start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} - log_end_msg $? - ;; - stop) - test "$ENABLED" = "true" || exit 0 - echo "Stopping nova vnc proxy" "nova-novncproxy" - start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} - log_end_msg $? - ;; - restart|force-reload|reload) - test "$ENABLED" = "true" || exit 1 - $0 stop - sleep 1 - $0 start - ;; - status) - test "$ENABLED" = "true" || exit 0 - status - ;; - *) - echo "Usage: /etc/init.d/nova-novncproxy {start|stop|restart|force-reload|status|reload|status}" - exit 1 - ;; -esac - -exit 0 diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy b/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy deleted file mode 100644 index d58f71e..0000000 --- a/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy +++ /dev/null @@ -1,91 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: nova-spicehtml5proxy -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Should-Start: libvirt-bin -# Should-Stop: libvirt-bin -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: nova-spicehtml5proxy service -# Description: Provides spice html5 proxy services for the openstack -# cloud computing system -### END INIT INFO - - -set -e - -NAME=nova-spicehtml5proxy -DESC="OpenStack Compute Spice HTML5 Proxy" -SCRIPTNAME=/etc/init.d/$NAME -DAEMON=/usr/bin/nova-spicehtml5proxy -DAEMON_ARGS="" -PIDFILE=/var/run/nova/$NAME.pid - -ENABLED=true - -if test -f /etc/default/nova-consoleproxy; then - . /etc/default/nova-consoleproxy -fi - -if ! [ "${NOVA_CONSOLE_PROXY_TYPE}" = "spicehtml5" ] ; then - exit 0 -fi - -mkdir -p /var/run/nova -chown nova:root /var/run/nova/ - -mkdir -p /var/lock/nova -chown nova:root /var/lock/nova/ - -. /lib/lsb/init-functions - -export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" -export TMPDIR=/var/lib/nova/tmp - -if ! [ -x ${DAEMON} ] ; then - exit 0 -fi - -status() -{ - pid=`cat $PIDFILE 2>/dev/null` - if [ -n "$pid" ]; then - if ps -p $pid >&- ; then - echo "$DESC is running" - return - fi - fi - echo "$DESC is not running" -} - -case "$1" in - start) - test "$ENABLED" = "true" || exit 0 - echo "Starting $DESC" "$NAME" - start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} - log_end_msg $? - ;; - stop) - test "$ENABLED" = "true" || exit 0 - echo "Stopping $DESC" "$NAME" - start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} - log_end_msg $? - ;; - restart|force-reload|reload) - test "$ENABLED" = "true" || exit 1 - $0 stop - sleep 1 - $0 start - ;; - status) - test "$ENABLED" = "true" || exit 0 - status - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status|reload|status}" - exit 1 - ;; -esac - -exit 0 -- cgit v1.2.3-54-g00ecf