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
26 changes: 12 additions & 14 deletions alerta/database/backends/postgres/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,7 @@ def get_severity(self, alert):
select = """
SELECT severity FROM alerts
WHERE environment=%(environment)s AND resource=%(resource)s
AND ((event=%(event)s AND severity!=%(severity)s)
OR (event!=%(event)s AND %(event)s=ANY(correlate)))
AND (event=%(event)s AND severity!=%(severity)s)
AND {customer}
""".format(customer='customer=%(customer)s' if alert.customer else 'customer IS NULL')
return self._fetchone(select, vars(alert)).severity
Expand All @@ -215,7 +214,7 @@ def get_status(self, alert):
select = """
SELECT status FROM alerts
WHERE environment=%(environment)s AND resource=%(resource)s
AND (event=%(event)s OR %(event)s=ANY(correlate))
AND event=%(event)s
AND {customer}
""".format(customer='customer=%(customer)s' if alert.customer else 'customer IS NULL')
return self._fetchone(select, vars(alert)).status
Expand All @@ -235,8 +234,7 @@ def is_correlated(self, alert):
select = """
SELECT * FROM alerts
WHERE environment=%(environment)s AND resource=%(resource)s
AND ((event=%(event)s AND severity!=%(severity)s)
OR (event!=%(event)s AND %(event)s=ANY(correlate)))
AND (event=%(event)s AND severity!=%(severity)s)
AND {customer}
""".format(customer='customer=%(customer)s' if alert.customer else 'customer IS NULL')
return self._fetchone(select, vars(alert))
Expand Down Expand Up @@ -295,7 +293,7 @@ def correlate_alert(self, alert, history):
attributes=attributes || %(attributes)s, {update_time}, history=(%(history)s || history)[1:{limit}]
WHERE environment=%(environment)s
AND resource=%(resource)s
AND ((event=%(event)s AND severity!=%(severity)s) OR (event!=%(event)s AND %(event)s=ANY(correlate)))
AND (event=%(event)s AND severity!=%(severity)s)
AND {customer}
RETURNING *
""".format(
Expand Down Expand Up @@ -345,7 +343,7 @@ def correlate_multiple_alerts(self, alerts):
)
WHERE alerts.environment=al.environment
AND alerts.resource=al.resource
AND ((alerts.event=al.event AND alerts.severity!=al.severity) OR (alerts.event!=al.event AND al.event=ANY(alerts.correlate)))
AND (alerts.event=al.event AND alerts.severity!=al.severity)
RETURNING alerts.*
"""
return self._updateall(update, objs, returning=True)
Expand Down Expand Up @@ -398,7 +396,7 @@ def create_multiple_alerts(self, alerts):
alerts_insert = ','.join([
f"""
(
%(id{i})s, %(resource{i})s, %(event{i})s, %(environment{i})s, %(severity{i})s, %(correlate{i})s, %(status{i})s,
%(id{i})s, %(resource{i})s, %(event{i})s, %(environment{i})s, %(severity{i})s, %(status{i})s,
%(service{i})s, %(group{i})s, %(value{i})s, %(text{i})s, %(tags{i})s, %(attributes{i})s, %(origin{i})s,
%(event_type{i})s, %(create_time{i})s, %(timeout{i})s, %(raw_data{i})s, %(customer{i})s, %(duplicate_count{i})s,
%(repeat{i})s, %(previous_severity{i})s, %(trend_indication{i})s, %(receive_time{i})s, %(last_receive_id{i})s,
Expand All @@ -410,7 +408,7 @@ def create_multiple_alerts(self, alerts):
objs.update({f'{key}{i}': value for key, value in vars(alert).items()})

insert = f"""
INSERT INTO alerts (id, resource, event, environment, severity, correlate, status, service, "group",
INSERT INTO alerts (id, resource, event, environment, severity, status, service, "group",
value, text, tags, attributes, origin, type, create_time, timeout, raw_data, customer,
duplicate_count, repeat, previous_severity, trend_indication, receive_time, last_receive_id,
last_receive_time, update_time, history)
Expand All @@ -421,11 +419,11 @@ def create_multiple_alerts(self, alerts):

def create_alert(self, alert):
insert = """
INSERT INTO alerts (id, resource, event, environment, severity, correlate, status, service, "group",
INSERT INTO alerts (id, resource, event, environment, severity, status, service, "group",
value, text, tags, attributes, origin, type, create_time, timeout, raw_data, customer,
duplicate_count, repeat, previous_severity, trend_indication, receive_time, last_receive_id,
last_receive_time, update_time, history)
VALUES (%(id)s, %(resource)s, %(event)s, %(environment)s, %(severity)s, %(correlate)s, %(status)s,
VALUES (%(id)s, %(resource)s, %(event)s, %(environment)s, %(severity)s, %(status)s,
%(service)s, %(group)s, %(value)s, %(text)s, %(tags)s, %(attributes)s, %(origin)s,
%(event_type)s, %(create_time)s, %(timeout)s, %(raw_data)s, %(customer)s, %(duplicate_count)s,
%(repeat)s, %(previous_severity)s, %(trend_indication)s, %(receive_time)s, %(last_receive_id)s,
Expand Down Expand Up @@ -601,7 +599,7 @@ def get_alerts(self, query=None, raw_data=False, history=False, page=None, page_
select = '*'
else:
select = (
'id, resource, event, environment, severity, correlate, status, service, "group", value, "text",'
'id, resource, event, environment, severity, status, service, "group", value, "text",'
+ 'tags, custom_tags, attributes, origin, type, create_time, timeout, {raw_data}, customer, duplicate_count, repeat,'
+ 'previous_severity, trend_indication, receive_time, last_receive_id, last_receive_time, update_time,'
+ '{history}'
Expand Down Expand Up @@ -629,7 +627,7 @@ def get_alerts(self, query=None, raw_data=False, history=False, page=None, page_

def get_escalate(self):
select = """
SELECT id, resource, event, environment, severity, correlate, status, service, "group",
SELECT id, resource, event, environment, severity, status, service, "group",
value, text, tags, attributes, origin, type, create_time, timeout, raw_data, customer,
duplicate_count, repeat, previous_severity, trend_indication, receive_time, last_receive_id,
last_receive_time, update_time, history
Expand All @@ -643,7 +641,7 @@ def get_alert_history(self, alert, page=None, page_size=None):
SELECT resource, environment, service, "group", tags, attributes, origin, customer, h.*
FROM alerts, unnest(history[1:{limit}]) h
WHERE environment=%(environment)s AND resource=%(resource)s
AND (h.event=%(event)s OR %(event)s=ANY(correlate))
AND h.event=%(event)s
AND {customer}
ORDER BY update_time DESC
""".format(
Expand Down
2 changes: 0 additions & 2 deletions alerta/database/backends/postgres/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ class History(QueryBuilder):
'event': ('h"."event', 'event', 1),
'environment': ('environment', 'environment', 1),
'severity': ('h"."severity', 's.code', 1),
'correlate': ('correlate', 'correlate', 1),
'status': ('h"."status', 'st.state', 1),
'service': ('service', 'service', 1),
'group': ('group', '"group"', 1),
Expand Down Expand Up @@ -237,7 +236,6 @@ class Alerts(QueryBuilder):
'event': ('event', 'event', 1),
'environment': ('environment', 'environment', 1),
'severity': ('severity', 's.code', 1),
'correlate': ('correlate', 'correlate', 1),
'status': ('status', 'st.state', 1),
'service': ('service', 'service', 1),
'group': ('group', '"group"', 1),
Expand Down
4 changes: 3 additions & 1 deletion alerta/models/alarms/isa_18_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@
class StateMachine(AlarmModel):

def register(self, app):
# import alerta.management.views

import alerta.auth # noqa

self.name = 'ANSI/ISA 18.2'

StateMachine.Severity = app.config['SEVERITY_MAP'] or SEVERITY_MAP
Expand Down
9 changes: 0 additions & 9 deletions alerta/models/alert.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ def __init__(self, resource: str, event: str, **kwargs) -> None:
self.event = event
self.environment = kwargs.get('environment', None) or ''
self.severity = kwargs.get('severity', None) or alarm_model.DEFAULT_NORMAL_SEVERITY
self.correlate = kwargs.get('correlate', None) or list()
if self.correlate and event not in self.correlate:
self.correlate.append(event)
self.status = kwargs.get('status', None) or alarm_model.DEFAULT_STATUS
self.service = kwargs.get('service', None) or list()
self.group = kwargs.get('group', None) or 'Misc'
Expand Down Expand Up @@ -87,8 +84,6 @@ def __init__(self, resource: str, event: str, **kwargs) -> None:

@classmethod
def parse(cls, json: JSON) -> 'Alert':
if not isinstance(json.get('correlate', []), list):
raise ValueError('correlate must be a list')
if not isinstance(json.get('service', []), list):
raise ValueError('service must be a list')
if not isinstance(json.get('tags', []), list):
Expand All @@ -106,7 +101,6 @@ def parse(cls, json: JSON) -> 'Alert':
event=json.get('event', None),
environment=json.get('environment', None),
severity=json.get('severity', None),
correlate=json.get('correlate', list()),
status=json.get('status', None),
service=json.get('service', list()),
group=json.get('group', None),
Expand All @@ -131,7 +125,6 @@ def serialize(self) -> Dict[str, Any]:
'event': self.event,
'environment': self.environment,
'severity': self.severity,
'correlate': self.correlate,
'status': self.status,
'service': self.service,
'group': self.group,
Expand Down Expand Up @@ -182,7 +175,6 @@ def from_document(cls, doc: Dict[str, Any]) -> 'Alert':
event=doc.get('event', None),
environment=doc.get('environment', None),
severity=doc.get('severity', None),
correlate=doc.get('correlate', list()),
status=doc.get('status', None),
service=doc.get('service', list()),
group=doc.get('group', None),
Expand Down Expand Up @@ -216,7 +208,6 @@ def from_record(cls, rec) -> 'Alert':
event=rec.event,
environment=rec.environment,
severity=rec.severity,
correlate=rec.correlate,
status=rec.status,
service=rec.service,
group=rec.group,
Expand Down
2 changes: 1 addition & 1 deletion alerta/sql/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ CREATE TABLE IF NOT EXISTS alerts (
event text NOT NULL,
environment text,
severity text,
correlate text[],
status text,
service text[],
"group" text,
Expand All @@ -61,6 +60,7 @@ CREATE TABLE IF NOT EXISTS alerts (

ALTER TABLE alerts ADD COLUMN IF NOT EXISTS update_time timestamp without time zone;
ALTER TABLE alerts ADD COLUMN IF NOT EXISTS custom_tags text[];
ALTER TABLE alerts DROP COLUMN IF EXISTS correlate;

-- remove alerts with status set to null
DO $$
Expand Down
1 change: 0 additions & 1 deletion alerta/utils/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ def send_alert(self, resource, event, **kwargs):
'event': event,
'environment': kwargs.get('environment'),
'severity': kwargs.get('severity'),
'correlate': kwargs.get('correlate', None) or list(),
'service': kwargs.get('service', None) or list(),
'group': kwargs.get('group'),
'value': kwargs.get('value'),
Expand Down
2 changes: 0 additions & 2 deletions alerta/webhooks/prometheus.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ def parse_prometheus(alert: JSON, external_url: str) -> Alert:
event = labels.pop('event', None) or labels.pop('alertname')
environment = labels.pop('environment', current_app.config['DEFAULT_ENVIRONMENT'])
customer = labels.pop('customer', None)
correlate = labels.pop('correlate').split(',') if 'correlate' in labels else None
service = labels.pop('service', '').split(',')
group = labels.pop('group', None) or labels.pop('job', 'Prometheus')
origin = 'prometheus/' + labels.pop('monitor', '-')
Expand Down Expand Up @@ -87,7 +86,6 @@ def parse_prometheus(alert: JSON, external_url: str) -> Alert:
environment=environment,
customer=customer,
severity=severity,
correlate=correlate,
service=service,
group=group,
value=value,
Expand Down
Loading