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)