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

Proposed by Jay Kuri
Status: Rejected
Rejected by: Tom Haddon
Proposed branch: ~jk0ne/charm-k8s-discourse/+git/charm-k8s-discourse:cmr-db-revision
Merge into: charm-k8s-discourse:master
Diff against target: 80 lines (+36/-3)
2 files modified
image/markdown-saml/Dockerfile (+21/-0)
src/charm.py (+15/-3)
Reviewer Review Type Date Requested Status
Tom Haddon Needs Fixing
Canonical IS Reviewers Pending
Review via email: mp+393469@code.launchpad.net

Commit message

Adjust db related event handlers to more closely follow what works in the MatterMost charm

To post a comment you must log in.
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
Tom Haddon (mthaddon) wrote :

Let's hold off on this until we've got a fix that's actually been tested to be working.

Also, I'm not clear how the new Dockerfile would be used. Ideally this would be something that we could set up a Launchpad OCI Recipe build for but I think this relies on having built the base image as "discourse:v2.5.2". Do we know how Launchpad would reference that? Or is there some way to restructure this so that we inherit the steps from image/Dockerfile when running docker build against this file?

review: Needs Fixing
Revision history for this message
Tom Haddon (mthaddon) wrote :

In terms of the image build, I think something like https://paste.ubuntu.com/p/J5j5Fct4DF/ should work. I'll test locally, and ask for your feedback later as well.

Revision history for this message
Tom Haddon (mthaddon) wrote :
Revision history for this message
Tom Haddon (mthaddon) wrote :

Unmerged commits

2e1c620... by Jay Kuri

Adjust db related event handlers to more closely follow what works in
the MatterMost charm

f6dc0ee... by Jay Kuri

Add markdown-saml subordinate image dockerfile

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/image/markdown-saml/Dockerfile b/image/markdown-saml/Dockerfile
0new file mode 1006440new file mode 100644
index 0000000..fe68a4b
--- /dev/null
+++ b/image/markdown-saml/Dockerfile
@@ -0,0 +1,21 @@
1FROM discourse:v2.5.2
2
3# CONTAINER_APP_ROOT is where files related to this application go. This
4# environment variable is available in the build scripts. This should usually be
5# a subdirectory of /srv.
6ENV CONTAINER_APP_ROOT=/srv/discourse
7
8# Application specific environment variables go here.
9ENV GEM_HOME ${CONTAINER_APP_ROOT}/.gem
10
11# We don't want packages prompting us during install.
12ENV DEBIAN_FRONTEND=noninteractive
13
14RUN cd ${CONTAINER_APP_ROOT}/app/plugins && git clone https://github.com/discourse/discourse-saml.git
15RUN cd ${CONTAINER_APP_ROOT}/app/plugins && git clone https://github.com/canonical-web-and-design/discourse-markdown-note.git
16RUN chown -R ${CONTAINER_APP_USERNAME}:${CONTAINER_APP_GROUP} ${CONTAINER_APP_ROOT}/app/plugins
17RUN cd ${CONTAINER_APP_ROOT}/app && su -s /bin/bash -c 'bin/bundle install' ${CONTAINER_APP_USERNAME}
18
19RUN echo "saml_target_url = https://login.ubuntu.com/+saml" >> /srv/scripts/assets/discourse.conf.tmpl
20RUN echo "saml_cert_fingerprint = 32:15:20:9F:A4:3C:8E:3E:8E:47:72:62:9A:86:8D:0E:E6:CF:45:D5" >> /srv/scripts/assets/discourse.conf.tmpl
21RUN echo "saml_full_screen_login = true" >> /srv/scripts/assets/discourse.conf.tmpl
diff --git a/src/charm.py b/src/charm.py
index 5bb75ad..55b4cc9 100755
--- a/src/charm.py
+++ b/src/charm.py
@@ -3,9 +3,9 @@
3# See LICENSE file for licensing details.3# See LICENSE file for licensing details.
44
5import ops.lib5import ops.lib
6from ops.charm import CharmBase6from ops.charm import CharmBase, CharmEvents
7from ops.main import main7from ops.main import main
8from ops.framework import StoredState8from ops.framework import StoredState, EventBase, EventSource
99
10from ops.model import ActiveStatus, BlockedStatus, MaintenanceStatus10from ops.model import ActiveStatus, BlockedStatus, MaintenanceStatus
1111
@@ -144,8 +144,19 @@ def check_for_missing_config_fields(config):
144 return sorted(missing_fields)144 return sorted(missing_fields)
145145
146146
147class DiscourseDBMasterAvailableEvent(EventBase):
148 pass
149
150
151class DiscourseCharmEvents(CharmEvents):
152 """Custom charm events."""
153
154 db_master_available = EventSource(DiscourseDBMasterAvailableEvent)
155
156
147class DiscourseCharm(CharmBase):157class DiscourseCharm(CharmBase):
148 stored = StoredState()158 stored = StoredState()
159 on = DiscourseCharmEvents()
149160
150 def __init__(self, *args):161 def __init__(self, *args):
151 """Initialization.162 """Initialization.
@@ -164,6 +175,7 @@ class DiscourseCharm(CharmBase):
164 self.db = pgsql.PostgreSQLClient(self, 'db')175 self.db = pgsql.PostgreSQLClient(self, 'db')
165 self.framework.observe(self.db.on.database_relation_joined, self.on_database_relation_joined)176 self.framework.observe(self.db.on.database_relation_joined, self.on_database_relation_joined)
166 self.framework.observe(self.db.on.master_changed, self.on_database_changed)177 self.framework.observe(self.db.on.master_changed, self.on_database_changed)
178 self.framework.observe(self.on.db_master_available, self.configure_pod)
167179
168 def check_config_is_valid(self, config):180 def check_config_is_valid(self, config):
169 """Check that the provided config is valid.181 """Check that the provided config is valid.
@@ -252,7 +264,7 @@ class DiscourseCharm(CharmBase):
252 self.stored.db_password = event.master.password264 self.stored.db_password = event.master.password
253 self.stored.db_host = event.master.host265 self.stored.db_host = event.master.host
254266
255 self.configure_pod()267 self.on.db_master_available.emit()
256268
257269
258if __name__ == '__main__': # pragma: no cover270if __name__ == '__main__': # pragma: no cover

Subscribers

People subscribed via source and target branches