Skip to content

Commit 84c678d

Browse files
committed
fix: add correct bulk alerting
1 parent d25853f commit 84c678d

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

alertaclient/api.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ def update_attributes(self, id, attributes):
107107

108108
def delete_alert(self, id):
109109
return self.http.delete('/alert/%s' % id)
110+
111+
def delete_alerts(self, ids):
112+
return self.http.delete('/alerts?%s' % '&'.join([f'id={id}'for id in ids]))
110113

111114
def delete_alerts(self, ids):
112115
return self.http.delete('/alerts?%s' % '&'.join([f'id={id}'for id in ids]))

alertaclient/commands/cmd_heartbeats.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ def cli(obj, alert, severity, timeout, purge):
5454

5555
if alert:
5656
with click.progressbar(heartbeats, label=f'Checking {len(heartbeats)} heartbeats') as bar:
57-
alerts = client.get_alerts(query=[('environment', 'Heartbeats')], page_size=len(heartbeats))
57+
alerts = client.get_alerts(query=[('event', '~Heartbeat')], page_size='ALL')
5858
new_alerts = []
5959

6060
for b in bar:
61-
want_environment = b.attributes.pop('environment', 'Heartbeats')
61+
want_environment = 'Heartbeats'
6262
want_severity = b.attributes.pop('severity', severity)
6363
want_service = b.attributes.pop('service', ['Alerta'])
6464
want_group = b.attributes.pop('group', 'System')
@@ -111,7 +111,7 @@ def cli(obj, alert, severity, timeout, purge):
111111
}
112112
)
113113

114-
number_of_co = 100
114+
number_of_co = 50
115115
number_of_alerts = len(new_alerts)
116116
number_of_sends = number_of_alerts // number_of_co
117117
alert_groups = [new_alerts[i * number_of_co:(i + 1) * number_of_co] for i in range(number_of_sends)]
@@ -121,3 +121,14 @@ def cli(obj, alert, severity, timeout, purge):
121121
with click.progressbar(alert_groups, label=f'Alerting {len(new_alerts)} heartbeats') as bar:
122122
for b in bar:
123123
client.send_alerts(b)
124+
125+
126+
alerts = [alert.id for alert in alerts]
127+
number_of_deletes = len(alerts)
128+
number_of_delete_sends = number_of_deletes // number_of_co
129+
delete_groups = [alerts[i * number_of_co:(i + 1) * number_of_co] for i in range(number_of_delete_sends)]
130+
if number_of_deletes % number_of_co:
131+
delete_groups.append(alerts[number_of_co * number_of_delete_sends:number_of_co * number_of_delete_sends + number_of_deletes % number_of_co])
132+
with click.progressbar(delete_groups, label=f'Removing {len(alerts)} old alerts') as bar:
133+
for delete_group in bar:
134+
client.delete_alerts(delete_group)

0 commit comments

Comments
 (0)