HA: fix rabbitmq readiness check for rabbitmq-server 3.8

In HA profiles, we wait for rabbitmq application readiness by
parsing the output of "rabbitmqctl status". This breaks with
rabbitmq-server 3.8 which changed the output of that command.

Fix our check by using a "rabbitmqctl eval" and by relying on
a stable function call rather than parsing output. This
approach works for rabbitmq-server 3.6 to 3.8.

Change-Id: Id88d0aee74e4b26fd64bbc2da5d0c0fc4bbd6644
Co-Authored-By: Yatin Karel <ykarel@redhat.com>
Closes-Bug: #1864962
(cherry picked from commit e60351ee09)
This commit is contained in:
Damien Ciabrini 2020-02-27 12:35:32 +01:00 committed by Michele Baldessari
parent bd737a1131
commit 207e6d621e
2 changed files with 2 additions and 2 deletions

View File

@ -151,7 +151,7 @@ class tripleo::profile::pacemaker::rabbitmq (
# replicated around the cluster
exec { 'rabbitmq-ready':
path => '/usr/sbin:/usr/bin:/sbin:/bin',
command => 'rabbitmqctl status | grep -F "{rabbit,"',
command => 'rabbitmqctl eval "lists:keymember(rabbit, 1, application:which_applications())." | grep -q true',
timeout => 30,
tries => 180,
try_sleep => 10,

View File

@ -341,7 +341,7 @@ class tripleo::profile::pacemaker::rabbitmq_bundle (
}
if size($rabbit_nodes) == 1 {
$check_command = 'rabbitmqctl status | grep -F "{rabbit,"'
$check_command = 'rabbitmqctl eval "lists:keymember(rabbit, 1, application:which_applications())." | grep -q true'
} else {
# This grep makes sure the rabbit app in erlang is up and running
# which is enough to guarantee that the user will eventually get