Restart only services that need it
authorJiri Stransky <jistr@redhat.com>
Mon, 22 Aug 2016 09:29:17 +0000 (11:29 +0200)
committerJiri Stransky <jistr@redhat.com>
Wed, 31 Aug 2016 13:53:08 +0000 (15:53 +0200)
With new pacemaker architecture, Puppet handles restarts of most of the
services. There are several still managed by pacemaker which need
special restart handling utilizing pacemaker and its resource
agents.

The counterpart in puppet-tripleo requests restarts for individual
pacemaker-managed services by writing out "restart flag" files, and the
pacemaker_resource_restart.sh script then performs the restarts.

Change-Id: Ia4e6a9f88181f1981993f046cf415dbbcdc9570e
Closes-Bug: #1614967
Closes-Bug: #1587015
Depends-On: I6369ab0c82dbf3c8f21043f8aa9ab810744ddc12

extraconfig/tasks/pacemaker_resource_restart.sh

index 1637cee..fd1fd0d 100755 (executable)
@@ -7,15 +7,23 @@ pacemaker_status=$(systemctl is-active pacemaker)
 # Run if pacemaker is running, we're the bootstrap node,
 # and we're updating the deployment (not creating).
 if [ "$pacemaker_status" = "active" -a \
-     "$(hiera bootstrap_nodeid)" = "$(facter hostname)" -a \
-     "$(hiera stack_action)" = "UPDATE" ]; then
+     "$(hiera bootstrap_nodeid)" = "$(facter hostname)" ]; then
 
-    PCMK_RESOURCES="haproxy-clone redis-master rabbitmq-clone galera-master openstack-cinder-volume openstack-cinder-backup"
-    # Ten minutes of timeout to restart each resource, given there are no constraints should be enough
     TIMEOUT=600
-    for resource in $PCMK_RESOURCES; do
-      if pcs status | grep $resource; then
-        pcs resource restart --wait=$TIMEOUT $resource
-      fi
+    SERVICES_TO_RESTART="$(ls /var/lib/tripleo/pacemaker-restarts)"
+    PCS_STATUS_OUTPUT="$(pcs status)"
+
+    for service in $SERVICES_TO_RESTART; do
+        if ! echo "$PCS_STATUS_OUTPUT" | grep $service; then
+            echo "Service $service not found as a pacemaker resource, cannot restart it."
+            exit 1
+        fi
+    done
+
+    for service in $SERVICES_TO_RESTART; do
+        echo "Restarting $service..."
+        pcs resource restart --wait=$TIMEOUT $service
+        rm -f /var/lib/tripleo/pacemaker-restarts/$service
     done
+
 fi