The cert_handler.py charm lib assumes here that a peer relation named peers exists in the charm that uses it. This assumption is not correct in database charms (as it is named database-peers in the mysql charms). This leads to an error in Juju 2.9.X where the peers relation is not found in the upgrade_charm event handler
juju refresh mysql --path ./path-to-packed-charm.charm
Environment
ubuntu: 22.04.4
juju: 2.9.46
lxd: 5.21.1-2d13beb
Relevant log output
unit-mysql-1: 19:53:41 ERROR unit.mysql/1.juju-log Uncaught exception while in charm code:
Traceback (most recent call last):
File "/var/lib/juju/agents/unit-mysql-1/charm/./src/charm.py", line 898, in <module>
main(MySQLOperatorCharm)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/main.py", line 436, in main
_emit_charm_event(charm, dispatcher.event_name)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/main.py", line 144, in _emit_charm_event
event_to_emit.emit(*args, **kwargs)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/framework.py", line 351, in emit
framework._emit(event)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/framework.py", line 853, in _emit
self._reemit(event_path)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/framework.py", line 942, in _reemit
custom_handler(event)
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 352, in _on_upgrade_charm
has_privkey = self.vault.get_value("private-key")
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 255, in get_value
return self._backend.get_value(key)
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 179, in get_value
return self._read().get(key)
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 155, in _read
value = self._databag.get(self._NEST_UNDER)
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 150, in _databag
self._check_ready()
File "/var/lib/juju/agents/unit-mysql-1/charm/lib/charms/observability_libs/v1/cert_handler.py", line 136, in _check_ready
relation = self.charm.model.get_relation(self.relation_name)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/model.py", line 237, in get_relation
return self.relations._get_unique(relation_name, relation_id)
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/model.py", line 853, in _get_unique
relations = self[relation_name]
File "/var/lib/juju/agents/unit-mysql-1/charm/venv/ops/model.py", line 821, in __getitem__
relation_list: Optional[List[Relation]] = self._data[relation_name]
KeyError: 'peers'
Bug Description
The
cert_handler.py
charm lib assumes here that a peer relation namedpeers
exists in the charm that uses it. This assumption is not correct in database charms (as it is nameddatabase-peers
in the mysql charms). This leads to an error in Juju 2.9.X where thepeers
relation is not found in theupgrade_charm
event handlerTo Reproduce
Environment
ubuntu: 22.04.4 juju: 2.9.46 lxd: 5.21.1-2d13beb
Relevant log output
Additional context
No response