diff --git a/restic_compose_backup/alerts/__init__.py b/restic_compose_backup/alerts/__init__.py index 785d892..4c3c046 100644 --- a/restic_compose_backup/alerts/__init__.py +++ b/restic_compose_backup/alerts/__init__.py @@ -12,7 +12,24 @@ ALERT_TYPES = [ALERT_INFO, ALERT_ERROR] BACKENDS = [SMTPAlert, DiscordWebhookAlert] -def configured_alert_classes(): +def send(subject: str = None, body: str = None, alert_type: str = 'INFO'): + """Send alert to all configured backends""" + alert_classes = configured_alert_types() + for instance in alert_classes: + logger.info('Configured: %s', instance.name) + try: + instance.send( + subject=f'[{alert_type}] {subject}', + body=body, + ) + except Exception as ex: + logger.error("Exception raised when sending alert [%s]: %s", instance.name, ex) + + if len(alert_classes) == 0: + logger.info("No alerts configured") + + +def configured_alert_types(): """Returns a list of configured alert class instances""" logger.debug('Getting alert backends') entires = []