Merge ~jk0ne/charm-k8s-discourse/+git/charm-k8s-discourse:master into charm-k8s-discourse:master

Proposed by Jay Kuri
Status: Merged
Approved by: Jay Kuri
Approved revision: a8a745a8f1efebe670a014a9f659b7d1878826d3
Merged at revision: 7e73fc91c771eb031ce47ff72e63d7bbe23a4a2b
Proposed branch: ~jk0ne/charm-k8s-discourse/+git/charm-k8s-discourse:master
Merge into: charm-k8s-discourse:master
Diff against target: 55 lines (+27/-2)
2 files modified
src/charm.py (+8/-2)
tests/unit/test_charm.py (+19/-0)
Reviewer Review Type Date Requested Status
Gareth Woolridge Approve
Canonical IS Reviewers Pending
Review via email: mp+393333@code.launchpad.net

Commit message

Bring in updates made as part of charmcraft review

To post a comment you must log in.
Revision history for this message
Jay Kuri (jk0ne) wrote :

Self approved per Tom as this has already passed charmcraft-review

Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change cannot be self approved, setting status to needs review.

Revision history for this message
Gareth Woolridge (moon127) wrote :

LGTM

review: Approve
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision 7e73fc91c771eb031ce47ff72e63d7bbe23a4a2b

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/charm.py b/src/charm.py
2index bb33602..5bb75ad 100755
3--- a/src/charm.py
4+++ b/src/charm.py
5@@ -138,7 +138,7 @@ def check_for_missing_config_fields(config):
6 'external_hostname',
7 ]
8 for key in needed_fields:
9- if (config.get(key) is None) or (len(config[key]) == 0):
10+ if not config.get(key):
11 missing_fields.append(key)
12
13 return sorted(missing_fields)
14@@ -228,7 +228,13 @@ class DiscourseCharm(CharmBase):
15 # Per https://github.com/canonical/ops-lib-pgsql/issues/2,
16 # changing the setting in the config will not take effect,
17 # unless the relation is dropped and recreated.
18- event.database = self.model.config["db_name"]
19+ if self.model.unit.is_leader():
20+ event.database = self.model.config["db_name"]
21+ elif event.database != self.model.config["db_name"]:
22+ # Leader has not yet set requirements. Defer, in case this unit
23+ # becomes leader and needs to perform that operation.
24+ event.defer()
25+ return
26
27 def on_database_changed(self, event):
28 """Event handler for database relation change.
29diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py
30index 214bfa1..8dc65d8 100644
31--- a/tests/unit/test_charm.py
32+++ b/tests/unit/test_charm.py
33@@ -114,3 +114,22 @@ class TestDiscourseK8sCharmHooksDisabled(unittest.TestCase):
34 self.harness.charm.on_database_changed(db_event)
35 configured_spec = self.harness.get_pod_spec()
36 self.assertEqual(configured_spec, None, 'Lost DB relation does not result in empty spec as expected')
37+
38+ def test_on_database_relation_joined(self):
39+ """Test joining the DB relation."""
40+ # First test with a non-leader, confirm the database property isn't set.
41+ non_leader_harness = testing.Harness(DiscourseCharm)
42+ non_leader_harness.disable_hooks()
43+ non_leader_harness.set_leader(False)
44+ non_leader_harness.begin()
45+
46+ action_event = mock.Mock()
47+ action_event.database = None
48+ non_leader_harness.update_config(self.configs['config_valid_complete']['config'])
49+ non_leader_harness.charm.on_database_relation_joined(action_event)
50+ self.assertEqual(action_event.database, None)
51+
52+ # Now test with a leader, the database property is set.
53+ self.harness.update_config(self.configs['config_valid_complete']['config'])
54+ self.harness.charm.on_database_relation_joined(action_event)
55+ self.assertEqual(action_event.database, "discourse")

Subscribers

People subscribed via source and target branches