github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/testcharms/charms/pebble-notices/src/charm.py (about) 1 #!/usr/bin/env python3 2 """Charm to test Pebble Notices.""" 3 4 import logging 5 6 import ops 7 8 logger = logging.getLogger(__name__) 9 10 11 class PebbleNoticesCharm(ops.CharmBase): 12 """Charm to test Pebble Notices.""" 13 14 def __init__(self, *args): 15 super().__init__(*args) 16 self.framework.observe(self.on["redis"].pebble_ready, self._on_pebble_ready) 17 self.framework.observe(self.on["redis"].pebble_custom_notice, self._on_custom_notice) 18 19 def _on_pebble_ready(self, event): 20 self.unit.status = ops.ActiveStatus() 21 22 def _on_custom_notice(self, event): 23 notice_id = event.notice.id 24 notice_type = event.notice.type.value # .value: "custom", not "NoticeType.CUSTOM" 25 notice_key = event.notice.key 26 logger.info(f"_on_custom_notice: id={notice_id} type={notice_type} key={notice_key}") 27 28 # Don't include the (arbitrary) ID in the status message 29 self.unit.status = ops.MaintenanceStatus(f"notice type={notice_type} key={notice_key}") 30 31 32 if __name__ == "__main__": 33 ops.main(PebbleNoticesCharm)