From 16821fe05d5276f22b353fde09fa8bc30c0166d0 Mon Sep 17 00:00:00 2001
From: "James E. Blair" <jeblair@hp.com>
Date: Fri, 6 Jul 2012 10:39:06 -0700
Subject: [PATCH] Make zuul restart graceful.

Add /var/lib/zuul so it can save the queue there.

Change-Id: I4ebb18f0502735ad18191a0dc5ddc26f6ef32e05
---
 modules/zuul/files/zuul.init   | 38 ++++++++++++++++++++--------------
 modules/zuul/manifests/init.pp |  5 +++++
 2 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/modules/zuul/files/zuul.init b/modules/zuul/files/zuul.init
index d4fb8d42a3..1572d05b9c 100755
--- a/modules/zuul/files/zuul.init
+++ b/modules/zuul/files/zuul.init
@@ -72,6 +72,27 @@ do_stop()
 	return "$RETVAL"
 }
 
+#
+# Function that stops the daemon/service
+#
+do_graceful_stop()
+{
+	PID=`cat $PIDFILE`
+	kill -10 $PID
+
+        # wait until really stopped
+        if [ -n "${PID:-}" ]; then
+                while kill -0 "${PID:-}" 2> /dev/null;  do
+                        if [ $i = '0' ]; then
+                            echo -n " ... waiting "
+                        else
+                            echo -n "."
+                        fi
+                        sleep 1
+                 done
+        fi
+}
+
 #
 # Function that sends a SIGHUP to the daemon/service
 #
@@ -120,21 +141,8 @@ case "$1" in
 	# 'force-reload' alias
 	#
 	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-	  	# Failed to stop
-		log_end_msg 1
-		;;
-	esac
+	do_graceful_stop
+	do_start
 	;;
   *)
 	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
diff --git a/modules/zuul/manifests/init.pp b/modules/zuul/manifests/init.pp
index 29358c90e5..d071d9b81c 100644
--- a/modules/zuul/manifests/init.pp
+++ b/modules/zuul/manifests/init.pp
@@ -47,6 +47,11 @@ class zuul ()
     owner => 'jenkins'
   }
 
+  file { "/var/lib/zuul":
+    ensure => "directory",
+    owner => 'jenkins'
+  }
+
   file { "/etc/init.d/zuul/":
     owner => 'root',
     group => 'root',