import datetime import json FIVE_MINUTES = datetime.timedelta(seconds = 300) def parse_datetime(s): assert s.endswith('Z') if '.' in s: s = s.split('.', 1)[0] + '+00:00' else: s = s[:-1] + '+00:00' return datetime.datetime.fromisoformat(s) async def process(request): now = datetime.datetime.now(datetime.timezone.utc) obj = json.loads(await request.text()) assert obj['version'] == '1' alerts = [] for a in obj['alerts']: startTime = parse_datetime(a['startsAt']) endTime = parse_datetime(a['endsAt']) if now - startTime < FIVE_MINUTES or now - endTime < FIVE_MINUTES: alerts.append(f'{a["labels"]["alertname"]} {a["status"]}') if alerts: return f'[{obj["status"]}] {", ".join(alerts)}' else: return f'[{obj["status"]}]'