Merge "Adding alarm list filtering by state and meter"
This commit is contained in:
@@ -231,7 +231,7 @@ class Connection(object):
|
||||
raise NotImplementedError('Statistics not implemented')
|
||||
|
||||
@staticmethod
|
||||
def get_alarms(name=None, user=None,
|
||||
def get_alarms(name=None, user=None, state=None, meter=None,
|
||||
project=None, enabled=None, alarm_id=None, pagination=None):
|
||||
"""Yields a lists of alarms that match filters."""
|
||||
raise NotImplementedError('Alarms not implemented')
|
||||
|
||||
@@ -248,14 +248,16 @@ class Connection(base.Connection):
|
||||
alarm_table = conn.table(self.ALARM_TABLE)
|
||||
alarm_table.delete(alarm_id)
|
||||
|
||||
def get_alarms(self, name=None, user=None,
|
||||
def get_alarms(self, name=None, user=None, state=None, meter=None,
|
||||
project=None, enabled=None, alarm_id=None, pagination=None):
|
||||
|
||||
if pagination:
|
||||
raise NotImplementedError('Pagination not implemented')
|
||||
if meter:
|
||||
raise NotImplementedError('Filter by meter not implemented')
|
||||
|
||||
q = make_query(alarm_id=alarm_id, name=name, enabled=enabled,
|
||||
user_id=user, project_id=project)
|
||||
user_id=user, project_id=project, state=state)
|
||||
|
||||
with self.conn_pool.connection() as conn:
|
||||
alarm_table = conn.table(self.ALARM_TABLE)
|
||||
|
||||
@@ -132,7 +132,7 @@ class Connection(base.Connection):
|
||||
"""
|
||||
return []
|
||||
|
||||
def get_alarms(self, name=None, user=None,
|
||||
def get_alarms(self, name=None, user=None, state=None, meter=None,
|
||||
project=None, enabled=None, alarm_id=None, pagination=None):
|
||||
"""Yields a lists of alarms that match filters
|
||||
"""
|
||||
|
||||
@@ -685,10 +685,12 @@ class Connection(base.Connection):
|
||||
def _retrieve_alarms(self, query):
|
||||
return (self._row_to_alarm_model(x) for x in query.all())
|
||||
|
||||
def get_alarms(self, name=None, user=None,
|
||||
def get_alarms(self, name=None, user=None, state=None, meter=None,
|
||||
project=None, enabled=None, alarm_id=None, pagination=None):
|
||||
"""Yields a lists of alarms that match filters
|
||||
:param user: Optional ID for user that owns the resource.
|
||||
:param state: Optional string for alarm state.
|
||||
:param meter: Optional string for alarms associated with meter.
|
||||
:param project: Optional ID for project that owns the resource.
|
||||
:param enabled: Optional boolean to list disable alarm.
|
||||
:param alarm_id: Optional alarm_id to return one alarm.
|
||||
@@ -710,8 +712,18 @@ class Connection(base.Connection):
|
||||
query = query.filter(models.Alarm.project_id == project)
|
||||
if alarm_id is not None:
|
||||
query = query.filter(models.Alarm.alarm_id == alarm_id)
|
||||
if state is not None:
|
||||
query = query.filter(models.Alarm.state == state)
|
||||
|
||||
return self._retrieve_alarms(query)
|
||||
alarms = self._retrieve_alarms(query)
|
||||
|
||||
# TODO(cmart): improve this by using sqlalchemy.func factory
|
||||
if meter is not None:
|
||||
alarms = filter(lambda row:
|
||||
row.rule.get('meter_name', None) == meter,
|
||||
alarms)
|
||||
|
||||
return alarms
|
||||
|
||||
def create_alarm(self, alarm):
|
||||
"""Create an alarm.
|
||||
|
||||
@@ -269,11 +269,13 @@ class Connection(base.Connection):
|
||||
[("timestamp", pymongo.DESCENDING)],
|
||||
limit)
|
||||
|
||||
def get_alarms(self, name=None, user=None,
|
||||
def get_alarms(self, name=None, user=None, state=None, meter=None,
|
||||
project=None, enabled=None, alarm_id=None, pagination=None):
|
||||
"""Yields a lists of alarms that match filters
|
||||
:param name: The Alarm name.
|
||||
:param user: Optional ID for user that owns the resource.
|
||||
:param state: Optional string for alarm state.
|
||||
:param meter: Optional string for alarms associated with meter.
|
||||
:param project: Optional ID for project that owns the resource.
|
||||
:param enabled: Optional boolean to list disable alarm.
|
||||
:param alarm_id: Optional alarm_id to return one alarm.
|
||||
@@ -293,6 +295,10 @@ class Connection(base.Connection):
|
||||
q['enabled'] = enabled
|
||||
if alarm_id is not None:
|
||||
q['alarm_id'] = alarm_id
|
||||
if state is not None:
|
||||
q['state'] = state
|
||||
if meter is not None:
|
||||
q['rule.meter_name'] = meter
|
||||
|
||||
return self._retrieve_alarms(q, [], None)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user