- self.state.db_host = event.relation.data[event.unit].get("host")
- self.state.db_port = event.relation.data[event.unit].get("port", 3306)
- self.state.db_user = "root" # event.relation.data[event.unit].get("user")
- self.state.db_password = event.relation.data[event.unit].get("root_password")
- if self.state.db_host:
- self.configure_pod(event)
+ if not event.unit in event.relation.data:
+ return
+ relation_data = event.relation.data[event.unit]
+ db_host = relation_data.get("host")
+ db_port = int(relation_data.get("port", 3306))
+ db_user = "root"
+ db_password = relation_data.get("root_password")
+
+ if (
+ db_host
+ and db_port
+ and db_user
+ and db_password
+ and (
+ self.state.db_host != db_host
+ or self.state.db_port != db_port
+ or self.state.db_user != db_user
+ or self.state.db_password != db_password
+ )
+ ):
+ self.state.db_host = db_host
+ self.state.db_port = db_port
+ self.state.db_user = db_user
+ self.state.db_password = db_password
+ self.on.configure_pod.emit()
+
+
+ def _on_db_relation_departed(self, event: EventBase) -> NoReturn:
+ """Clears data from db relation.
+
+ Args:
+ event (EventBase): DB relation event.
+
+ """
+ self.state.db_host = None
+ self.state.db_port = None
+ self.state.db_user = None
+ self.state.db_password = None
+ self.on.configure_pod.emit()