Fix HA resource restart when no replicas are running

When the helper script pacemaker_restart_bundle.sh is called
during a stack update, it restarts the pacemaker resource via
a "pcs resource restart <name>".

When all the replicas are stopped due to a previous error,
pcs won't restart them because there is nothing to stop. In
that case, one must use "pcs resource cleanup <name>".

(cherry picked from commit ba471ee461)

Closes-Bug: #1889395
Change-Id: I1790444d289d057e9a3f612c53efe485080978b5
This commit is contained in:
Damien Ciabrini 2020-08-03 18:59:44 +02:00 committed by Michele Baldessari
parent da6b7b424c
commit fffbdc0df1
1 changed files with 9 additions and 2 deletions

View File

@ -39,8 +39,15 @@ if [ x"${TRIPLEO_MINOR_UPDATE,,}" != x"true" ]; then
HOSTNAME=$(/bin/hostname -s)
SERVICE_NODEID=$(/bin/hiera -c /etc/puppet/hiera.yaml "${TRIPLEO_SERVICE}_short_bootstrap_node_name")
if [[ "${HOSTNAME,,}" == "${SERVICE_NODEID,,}" ]]; then
echo "$(date -u): Restarting ${BUNDLE_NAME} globally"
/sbin/pcs resource restart --wait=__PCMKTIMEOUT__ $BUNDLE_NAME
replicas_running=$(crm_resource -Q -r $BUNDLE_NAME --locate 2>&1 | wc -l)
if [ "$replicas_running" != "0" ]; then
echo "$(date -u): Restarting ${BUNDLE_NAME} globally"
/sbin/pcs resource restart --wait=__PCMKTIMEOUT__ $BUNDLE_NAME
else
echo "$(date -u): ${BUNDLE_NAME} is not running anywhere," \
"cleaning up to restart it globally if necessary"
/sbin/pcs resource cleanup $BUNDLE_NAME
fi
else
echo "$(date -u): Skipping global restart of ${BUNDLE_NAME} on ${HOSTNAME} it will be restarted by node ${SERVICE_NODEID}"
fi