|
123456789101112131415161718192021222324252627282930 |
- 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"]}]'
|