From 172c11f7fdd7844e1543beacded6ef7fad99e5e5 Mon Sep 17 00:00:00 2001 From: Edward Hope-Morley Date: Mon, 2 Feb 2015 13:49:05 +0000 Subject: [PATCH] [hopem,r=] Fixes is_db_ready() logic Closes-Bug: 1417108 --- hooks/keystone_utils.py | 7 +++---- unit_tests/test_keystone_utils.py | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/hooks/keystone_utils.py b/hooks/keystone_utils.py index 0b8b6fb2..e804a849 100644 --- a/hooks/keystone_utils.py +++ b/hooks/keystone_utils.py @@ -1408,9 +1408,8 @@ def is_db_ready(use_current_context=False, db_rel=None): if allowed_units and local_unit() in allowed_units.split(): return True - # If relation has units - return False + rel_has_units = True - # If neither relation has units then we are probably in sqllite mode return - # True. + # If neither relation has units then we are probably in sqlite mode so + # return True. return not rel_has_units diff --git a/unit_tests/test_keystone_utils.py b/unit_tests/test_keystone_utils.py index cc7f250b..7e60dfa4 100644 --- a/unit_tests/test_keystone_utils.py +++ b/unit_tests/test_keystone_utils.py @@ -352,20 +352,28 @@ class TestKeystoneUtils(CharmTestCase): self.assertEqual(utils.get_admin_passwd(), 'supersecretgen') def test_is_db_ready(self): + allowed_units = None + + def fake_rel_get(attribute=None, *args, **kwargs): + if attribute == 'allowed_units': + return allowed_units + + self.relation_get.side_effect = fake_rel_get + self.relation_id.return_value = 'shared-db:0' - self.relation_ids.return_value = [self.relation_id.return_value] + self.relation_ids.return_value = ['shared-db:0'] self.local_unit.return_value = 'unit/0' - self.relation_get.return_value = 'unit/0' + allowed_units = 'unit/0' self.assertTrue(utils.is_db_ready(use_current_context=True)) self.relation_ids.return_value = ['acme:0'] self.assertRaises(utils.is_db_ready, use_current_context=True) self.related_units.return_value = ['unit/0'] - self.relation_ids.return_value = [self.relation_id.return_value] + self.relation_ids.return_value = ['shared-db:0', 'shared-db:1'] self.assertTrue(utils.is_db_ready()) - self.relation_get.return_value = 'unit/1' + allowed_units = 'unit/1' self.assertFalse(utils.is_db_ready()) self.related_units.return_value = []