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
253 changes: 106 additions & 147 deletions alerta/database/backends/postgres/base.py

Large diffs are not rendered by default.

19 changes: 0 additions & 19 deletions alerta/database/backends/postgres/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,23 +150,19 @@ class History(QueryBuilder):
'severity': ('h"."severity', 's.code', 1),
'status': ('h"."status', 'st.state', 1),
'service': ('service', 'service', 1),
'group': ('group', '"group"', 1),
'value': ('h"."value', 'value', 1),
'text': ('h"."text', 'text', 1),
'tag': ('tags', None, 0), # filter
'tags': ('tags', 'tags', 1), # sort-by
'customTags': ('custom_tags', 'custom_tags', 1), # sort-by
'attributes': ('attributes', 'attributes', 1),
'origin': ('origin', 'origin', 1),
'type': ('event_type', 'event_type', 1),
'createTime': ('create_time', 'create_time', -1),
'timeout': ('timeout', 'timeout', 1),
'rawData': ('raw_data', 'raw_data', 1),
'customer': ('customer', 'customer', 1),
'duplicateCount': ('duplicate_count', 'duplicate_count', 1),
'repeat': ('repeat', 'repeat', 1),
'previousSeverity': ('previous_severity', 'previous_severity', 1),
'trendIndication': ('trend_indication', 'trend_indication', 1),
'receiveTime': ('receive_time', 'receive_time', -1),
'lastReceiveId': ('last_receive_id', 'last_receive_id', 1),
'lastReceiveTime': ('last_receive_time', 'last_receive_time', -1),
Expand Down Expand Up @@ -206,10 +202,6 @@ def from_params(params: MultiDict, customers=None, query_time=None):
query.append('AND h.update_time <= %(to_date)s')
qvars['to_date'] = to_date.replace(tzinfo=pytz.utc)

if params.get('repeat', None):
query.append('AND repeat=%(repeat)s')
qvars['repeat'] = params.get('repeat', default=True, type=lambda x: x.lower()
in ['true', 't', '1', 'yes', 'y', 'on'])
# id
ids = params.getlist('id')
if len(ids) == 1:
Expand Down Expand Up @@ -238,23 +230,19 @@ class Alerts(QueryBuilder):
'severity': ('severity', 's.code', 1),
'status': ('status', 'st.state', 1),
'service': ('service', 'service', 1),
'group': ('group', '"group"', 1),
'value': ('value', 'value', 1),
'text': ('text', 'text', 1),
'tag': ('tags', None, 0), # filter
'tags': ('tags', 'tags', 1), # sort-by
'customTags': ('custom_tags', 'custom_tags', 1), # sort-by
'attributes': ('attributes', 'attributes', 1),
'origin': ('origin', 'origin', 1),
'type': ('event_type', 'event_type', 1),
'createTime': ('create_time', 'create_time', -1),
'timeout': ('timeout', 'timeout', 1),
'rawData': ('raw_data', 'raw_data', 1),
'customer': ('customer', 'customer', 1),
'duplicateCount': ('duplicate_count', 'duplicate_count', 1),
'repeat': ('repeat', 'repeat', 1),
'previousSeverity': ('previous_severity', 'previous_severity', 1),
'trendIndication': ('trend_indication', 'trend_indication', 1),
'receiveTime': ('receive_time', 'receive_time', -1),
'lastReceiveId': ('last_receive_id', 'last_receive_id', 1),
'lastReceiveTime': ('last_receive_time', 'last_receive_time', -1),
Expand Down Expand Up @@ -301,10 +289,6 @@ def from_params(params: MultiDict, customers=None, query_time=None):
query.append('AND last_receive_time <= %(to_date)s')
qvars['to_date'] = to_date.replace(tzinfo=pytz.utc)

if params.get('repeat', None):
query.append('AND repeat=%(repeat)s')
qvars['repeat'] = params.get('repeat', default=True, type=lambda x: x.lower()
in ['true', 't', '1', 'yes', 'y', 'on'])
# id
ids = params.getlist('id')
if len(ids) == 1:
Expand Down Expand Up @@ -332,7 +316,6 @@ class Blackouts(QueryBuilder):
'service': ('service', 'service', 1),
'resource': ('resource', 'resource', 1),
'event': ('event', 'event', 1),
'group': ('group', '"group"', 1),
'tag': ('tags', None, 0), # filter
'tags': (None, 'tags', 1), # sort-by
'customer': ('customer', 'customer', 1),
Expand Down Expand Up @@ -470,7 +453,6 @@ class NotificationRules(QueryBuilder):
'service': ('service', 'service', 1),
'resource': ('resource', 'resource', 1),
'event': ('event', 'event', 1),
'group': ('group', '"group"', 1),
'tag': ('tags', None, 0), # filter
'tags': (None, 'tags', 1), # sort-by
'customer': ('customer', 'customer', 1),
Expand Down Expand Up @@ -582,7 +564,6 @@ class EscalationRules(QueryBuilder):
'service': ('service', 'service', 1),
'resource': ('resource', 'resource', 1),
'event': ('event', 'event', 1),
'group': ('group', '"group"', 1),
'tag': ('tags', None, 0), # filter
'taga': ('"t"."all"', None, 0), # filter
'tago': ('"t"."any"', None, 0), # filter
Expand Down
5 changes: 0 additions & 5 deletions alerta/database/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,11 +239,6 @@ def get_environments(self, query=None, topn=1000):
def get_services(self, query=None, topn=1000):
raise NotImplementedError

# ALERT GROUPS

def get_alert_groups(self, query=None, topn=1000):
raise NotImplementedError

# ALERT TAGS

def get_alert_tags(self, query=None, topn=1000):
Expand Down
29 changes: 1 addition & 28 deletions alerta/models/alert.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,13 @@ def __init__(self, resource: str, event: str, **kwargs) -> None:
self.severity = kwargs.get('severity', None) or alarm_model.DEFAULT_NORMAL_SEVERITY
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'
self.value = kwargs.get('value', None)
self.text = kwargs.get('text', None) or ''
self.tags = kwargs.get('tags', None) or list()
self.tags = list(set(self.tags))
self.custom_tags = kwargs.get('custom_tags', None) or list()
self.attributes = kwargs.get('attributes', None) or dict()
self.origin = kwargs.get('origin', None) or f'{os.path.basename(sys.argv[0])}/{platform.uname()[1]}'
self.event_type = kwargs.get('event_type', kwargs.get('type', None)) or 'exceptionAlert'
self.create_time = kwargs.get('create_time', None) or datetime.now(UTC)
self.day = self.create_time.strftime('%a')
self.time = self.create_time.time()
Expand All @@ -73,9 +71,8 @@ def __init__(self, resource: str, event: str, **kwargs) -> None:
self.customer = kwargs.get('customer', None)

self.duplicate_count = kwargs.get('duplicate_count', None)
self.repeat = kwargs.get('repeat', None)
self.repeat = None
self.previous_severity = kwargs.get('previous_severity', None)
self.trend_indication = kwargs.get('trend_indication', None)
self.receive_time = kwargs.get('receive_time', None) or datetime.now(UTC)
self.last_receive_id = kwargs.get('last_receive_id', None)
self.last_receive_time = kwargs.get('last_receive_time', None)
Expand Down Expand Up @@ -103,13 +100,11 @@ def parse(cls, json: JSON) -> 'Alert':
severity=json.get('severity', None),
status=json.get('status', None),
service=json.get('service', list()),
group=json.get('group', None),
value=json.get('value', None),
text=json.get('text', None),
tags=json.get('tags', list()),
attributes=json.get('attributes', dict()),
origin=json.get('origin', None),
event_type=json.get('type', None),
create_time=DateTime.parse(json['createTime']) if 'createTime' in json else None,
timeout=json.get('timeout', None),
raw_data=json.get('rawData', None),
Expand All @@ -127,22 +122,18 @@ def serialize(self) -> Dict[str, Any]:
'severity': self.severity,
'status': self.status,
'service': self.service,
'group': self.group,
'value': self.value,
'text': self.text,
'tags': self.tags,
'customTags': self.custom_tags,
'attributes': self.attributes,
'origin': self.origin,
'type': self.event_type,
'createTime': self.create_time,
'timeout': self.timeout,
'rawData': self.raw_data,
'customer': self.customer,
'duplicateCount': self.duplicate_count,
'repeat': self.repeat,
'previousSeverity': self.previous_severity,
'trendIndication': self.trend_indication,
'receiveTime': self.receive_time,
'lastReceiveId': self.last_receive_id,
'lastReceiveTime': self.last_receive_time,
Expand Down Expand Up @@ -177,22 +168,18 @@ def from_document(cls, doc: Dict[str, Any]) -> 'Alert':
severity=doc.get('severity', None),
status=doc.get('status', None),
service=doc.get('service', list()),
group=doc.get('group', None),
value=doc.get('value', None),
text=doc.get('text', None),
tags=doc.get('tags', list()),
custom_tags=doc.get('custom_tags', list()),
attributes=doc.get('attributes', dict()),
origin=doc.get('origin', None),
event_type=doc.get('type', None),
create_time=doc.get('createTime', None),
timeout=doc.get('timeout', None),
raw_data=doc.get('rawData', None),
customer=doc.get('customer', None),
duplicate_count=doc.get('duplicateCount', None),
repeat=doc.get('repeat', None),
previous_severity=doc.get('previousSeverity', None),
trend_indication=doc.get('trendIndication', None),
receive_time=doc.get('receiveTime', None),
last_receive_id=doc.get('lastReceiveId', None),
last_receive_time=doc.get('lastReceiveTime', None),
Expand All @@ -210,22 +197,18 @@ def from_record(cls, rec) -> 'Alert':
severity=rec.severity,
status=rec.status,
service=rec.service,
group=rec.group,
value=rec.value,
text=rec.text,
tags=rec.tags,
custom_tags=rec.custom_tags,
attributes=dict(rec.attributes),
origin=rec.origin,
event_type=rec.type,
create_time=rec.create_time,
timeout=rec.timeout,
raw_data=rec.raw_data,
customer=rec.customer,
duplicate_count=rec.duplicate_count,
repeat=rec.repeat,
previous_severity=rec.previous_severity,
trend_indication=rec.trend_indication,
receive_time=rec.receive_time,
last_receive_id=rec.last_receive_id,
last_receive_time=rec.last_receive_time,
Expand Down Expand Up @@ -368,7 +351,6 @@ def update(self, correlate_with) -> 'Alert':
now = datetime.now(UTC)

self.previous_severity = db.get_severity(self)
self.trend_indication = alarm_model.trend(self.previous_severity, self.severity)

status, _, previous_status, _ = self._get_hist_info()

Expand All @@ -379,7 +361,6 @@ def update(self, correlate_with) -> 'Alert':
)

self.duplicate_count = 0
self.repeat = False
self.receive_time = now
self.last_receive_id = self.id
self.last_receive_time = now
Expand Down Expand Up @@ -411,16 +392,12 @@ def update(self, correlate_with) -> 'Alert':
def create(self) -> 'Alert':
now = datetime.now(UTC)

trend_indication = alarm_model.trend(alarm_model.DEFAULT_PREVIOUS_SEVERITY, self.severity)

_, self.status = alarm_model.transition(
alert=self
)

self.duplicate_count = 0
self.repeat = False
self.previous_severity = alarm_model.DEFAULT_PREVIOUS_SEVERITY
self.trend_indication = trend_indication
self.receive_time = now
self.last_receive_id = self.id
self.last_receive_time = now
Expand Down Expand Up @@ -619,16 +596,13 @@ def create_multiple_alerts(alerts: 'list[Alert]'):
now = datetime.now(UTC)
for alert in alerts:

trend_indication = alarm_model.trend(alarm_model.DEFAULT_PREVIOUS_SEVERITY, alert.severity)

_, alert.status = alarm_model.transition(
alert=alert
)

alert.duplicate_count = 0
alert.repeat = False
alert.previous_severity = alarm_model.DEFAULT_PREVIOUS_SEVERITY
alert.trend_indication = trend_indication
alert.receive_time = now
alert.last_receive_id = alert.id
alert.last_receive_time = now
Expand Down Expand Up @@ -716,7 +690,6 @@ def update_multiple(correlates: 'list[dict[str, Alert]]') -> 'Alert':
for alert in correlates:
alert, correlate_with = (alert['alert'], alert['correlate'])
alert.previous_severity = db.get_severity(alert)
alert.trend_indication = alarm_model.trend(alert.previous_severity, alert.severity)

status, _, previous_status, _ = alert._get_hist_info()

Expand Down
11 changes: 0 additions & 11 deletions alerta/models/blackout.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ def __init__(self, environment: str, **kwargs) -> None:
raise ValueError('resource can not be an empty string')
if kwargs.get('event') == '':
raise ValueError('event can not be an empty string')
if kwargs.get('group') == '':
raise ValueError('group can not be an empty string')
if kwargs.get('origin') == '':
raise ValueError('origin can not be an empty string')

Expand All @@ -47,7 +45,6 @@ def __init__(self, environment: str, **kwargs) -> None:
self.service = kwargs.get('service', None) or list()
self.resource = kwargs.get('resource', None)
self.event = kwargs.get('event', None)
self.group = kwargs.get('group', None)
self.tags = kwargs.get('tags', None) or list()
self.origin = kwargs.get('origin', None)
self.customer = kwargs.get('customer', None)
Expand All @@ -70,8 +67,6 @@ def __init__(self, environment: str, **kwargs) -> None:
self.priority = 3
elif self.event and not self.resource:
self.priority = 4
elif self.group:
self.priority = 5
elif self.resource and self.event:
self.priority = 6
elif self.tags:
Expand Down Expand Up @@ -102,7 +97,6 @@ def parse(cls, json: JSON) -> 'Blackout':
service=json.get('service', list()),
resource=json.get('resource', None),
event=json.get('event', None),
group=json.get('group', None),
tags=json.get('tags', list()),
origin=json.get('origin', None),
customer=json.get('customer', None),
Expand All @@ -123,7 +117,6 @@ def serialize(self) -> Dict[str, Any]:
'service': self.service,
'resource': self.resource,
'event': self.event,
'group': self.group,
'tags': self.tags,
'origin': self.origin,
'customer': self.customer,
Expand All @@ -145,8 +138,6 @@ def __repr__(self) -> str:
more += f'resource={self.resource!r}, '
if self.event:
more += f'event={self.event!r}, '
if self.group:
more += f'group={self.group!r}, '
if self.tags:
more += f'tags={self.tags!r}, '
if self.origin:
Expand Down Expand Up @@ -174,7 +165,6 @@ def from_document(cls, doc: Dict[str, Any]) -> 'Blackout':
service=doc.get('service', list()),
resource=doc.get('resource', None),
event=doc.get('event', None),
group=doc.get('group', None),
tags=doc.get('tags', list()),
origin=doc.get('origin', None),
customer=doc.get('customer', None),
Expand All @@ -196,7 +186,6 @@ def from_record(cls, rec) -> 'Blackout':
service=rec.service,
resource=rec.resource if rec.resource != '' else None,
event=rec.event if rec.event != '' else None,
group=rec.group if rec.group != '' else None,
tags=rec.tags,
origin=rec.origin if rec.origin != '' else None,
customer=rec.customer,
Expand Down
Loading