Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion alertaclient/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def send_alert(self, resource, event, **kwargs):

def send_alerts(self, data: list):
r = self.http.post('/alerts', data)
alerts = [Alert.parse(alert) for alert in r['alerts']] if 'alerts' in r else None
alerts = [Alert.parse(alert) for alert in r['alerts']] if 'alerts' in r else []
return [alert.id for alert in alerts], alerts, r.get('message', None)

def get_alert(self, id):
Expand Down
11 changes: 4 additions & 7 deletions alertaclient/commands/cmd_heartbeats.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ def cli(obj, alert, severity, timeout, purge):
with click.progressbar(heartbeats, label=f'Checking {len(heartbeats)} heartbeats') as bar:
alerts = client.get_alerts(query=[('event', '~Heartbeat')], page_size='ALL')
new_alerts = []
event = 'HeartbeatAlert'

for b in bar:
want_environment = 'Heartbeats'
Expand All @@ -64,19 +65,16 @@ def cli(obj, alert, severity, timeout, purge):
want_group = b.attributes.pop('group', 'System')
state_map = {
'expired': {
'event': 'HeartbeatFail',
'value': f'{b.since}',
'text': f'Heartbeat not received in {b.timeout} seconds',
'severity': want_severity
},
'slow': {
'event': 'HeartbeatSlow',
'value': f'{b.latency}ms',
'text': f'Heartbeat took more than {b.max_latency}ms to be processed',
'severity': want_severity
},
'ok': {
'event': 'HeartbeatOK',
'value': '',
'text': 'Heartbeat OK',
'severity': default_normal_severity
Expand All @@ -86,18 +84,17 @@ def cli(obj, alert, severity, timeout, purge):
state = state_map[b.status]
found_alert = None
for a in alerts:
if a.environment == want_environment and a.resource == b.origin:
if a.environment == want_environment and a.resource == b.origin and a.event == event:
found_alert = alerts.pop(alerts.index(a))
break

if found_alert is None or state['event'] != found_alert.event:
if found_alert is None or event != found_alert.event or state['severity'] != found_alert.severity:
new_alerts.append(
{
'resource': b.origin,
'event': state['event'],
'event': event,
'environment': want_environment,
'severity': state['severity'],
'correlate': ['HeartbeatFail', 'HeartbeatSlow', 'HeartbeatOK'],
'service': want_service,
'group': want_group,
'value': state['value'],
Expand Down