diff --git a/hooks/horizon_hooks.py b/hooks/horizon_hooks.py index 66ee9a92..992292ba 100755 --- a/hooks/horizon_hooks.py +++ b/hooks/horizon_hooks.py @@ -479,8 +479,13 @@ def dashboard_relation_changed(): 'vip': config('vip'), } - for rel_id in relations: - relation_set(rel_id, relation_settings=relation_settings, app=True) + if is_leader(): + log("Setting dashboard access information on 'dashboard' relation", + level="INFO") + for rel_id in relations: + relation_set(rel_id, relation_settings=relation_settings, app=True) + else: + log("Skipping relation_set, because not leader.", level="DEBUG") def main(): diff --git a/unit_tests/test_horizon_hooks.py b/unit_tests/test_horizon_hooks.py index 29d55e42..36adcff2 100644 --- a/unit_tests/test_horizon_hooks.py +++ b/unit_tests/test_horizon_hooks.py @@ -459,13 +459,15 @@ class TestHorizonHooks(CharmTestCase): _service_reload.assert_called_with('apache2') self.enable_ssl.assert_called_with() - def test_dashboard_relation_changed(self): + @patch.object(hooks, 'is_leader') + def test_dashboard_relation_changed(self, is_leader): self.relation_ids.return_value = None hooks.dashboard_relation_changed() self.test_config.set('os-public-hostname', 'mydashboard.local') self.test_config.set('vip', '1.2.3.4') self.relation_ids.return_value = ['dashboard:0'] + is_leader.return_value = True hooks.dashboard_relation_changed() self.relation_set.assert_called_with( @@ -474,3 +476,8 @@ class TestHorizonHooks(CharmTestCase): 'vip': '1.2.3.4'}, app=True, ) + + self.relation_set.reset_mock() + is_leader.return_value = False + hooks.dashboard_relation_changed() + self.relation_set.assert_not_called()