When VIP is set wait on hacluster is_clustered

Delay serving client relations until hacluster signals its readiness
when VIP is set.

Change-Id: I7dce1dd3d6891ff7fc4c6cc32d3d7ebc6c268c82
Closes-Bug: #1718247
This commit is contained in:
David Ames 2017-09-21 16:09:35 +00:00
parent feaad01996
commit ce78dd4dcf
2 changed files with 23 additions and 0 deletions

View File

@ -52,6 +52,9 @@ from charmhelpers.contrib.network.ip import (
from charmhelpers.contrib.database.mysql import (
MySQLHelper,
)
from charmhelpers.contrib.hahelpers.cluster import (
is_clustered,
)
from charmhelpers.contrib.openstack.utils import (
make_assess_status_func,
pause_unit,
@ -711,6 +714,11 @@ def cluster_ready():
@returns boolean
"""
if config("vip") and not is_clustered():
log("Waiting on hacluster to complete clustering, not clustered yet.",
DEBUG)
return False
min_size = config('min-cluster-size')
units = 1
for relation_id in relation_ids('cluster'):

View File

@ -253,6 +253,7 @@ TO_PATCH = [
'relation_get',
'leader_get',
'is_unit_paused_set',
'is_clustered',
]
@ -414,6 +415,20 @@ class UtilsTestsCTC(CharmTestCase):
self.config.side_effect = lambda key: _config.get(key)
self.assertTrue(percona_utils.cluster_ready())
# When VIP configured check is_clustered
mock_is_sufficient_peers.return_value = True
self.relation_ids.return_value = ['cluster:0']
self.related_units.return_value = ['test/0', 'test/1']
self.relation_get.return_value = 'UUID'
_config = {'vip': '10.10.10.10', 'min-cluster-size': 3}
self.config.side_effect = lambda key: _config.get(key)
# HACluster not ready
self.is_clustered.return_value = False
self.assertFalse(percona_utils.cluster_ready())
# HACluster ready
self.is_clustered.return_value = True
self.assertTrue(percona_utils.cluster_ready())
@mock.patch.object(percona_utils, 'cluster_ready')
def test_client_node_is_ready(self, mock_cluster_ready):
# Paused