Allow filtering alarm definitions by severity

Change-Id: I85b9ea6f9b7f194a7c14276901e96cd07353f8d0
This commit is contained in:
Ryan Brandt 2016-01-28 10:45:07 -07:00
parent b3d174493a
commit 5e55919512
4 changed files with 45 additions and 5 deletions

View File

@ -50,7 +50,7 @@ class AlarmDefinitionsRepository(object):
pass
@abc.abstractmethod
def get_alarm_definitions(self, tenant_id, name, dimensions, sort_by,
def get_alarm_definitions(self, tenant_id, name, dimensions, severity, sort_by,
offset, limit):
pass

View File

@ -76,7 +76,7 @@ class AlarmDefinitionsRepository(mysql_repository.MySQLRepository,
raise exceptions.DoesNotExistException
@mysql_repository.mysql_try_catch_block
def get_alarm_definitions(self, tenant_id, name, dimensions,
def get_alarm_definitions(self, tenant_id, name, dimensions, severity,
sort_by, offset, limit):
parms = [tenant_id]
@ -89,6 +89,10 @@ class AlarmDefinitionsRepository(mysql_repository.MySQLRepository,
where_clause += " and ad.name = %s "
parms.append(name.encode('utf8'))
if severity:
parms.append(severity.encode('utf8'))
where_clause += " and ad.severity = %s "
if sort_by is not None:
order_by_clause = " order by " + ','.join(sort_by)
if 'id' not in sort_by:

View File

@ -85,6 +85,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
tenant_id = helpers.get_tenant_id(req)
name = helpers.get_query_name(req)
dimensions = helpers.get_query_dimensions(req)
severity = helpers.get_query_param(req, "severity")
sort_by = helpers.get_query_param(req, 'sort_by', default_val=None)
if sort_by is not None:
if isinstance(sort_by, basestring):
@ -104,7 +105,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
'Offset value {} must be an integer'.format(offset))
limit = helpers.get_limit(req)
result = self._alarm_definition_list(tenant_id, name, dimensions,
result = self._alarm_definition_list(tenant_id, name, dimensions, severity,
req.uri, sort_by, offset, limit)
res.body = helpers.dumpit_utf8(result)
@ -219,6 +220,7 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
definitions = self._alarm_definitions_repo.get_alarm_definitions(tenant_id=tenant_id,
name=name,
dimensions=None,
severity=None,
sort_by=None,
offset=None,
limit=0)
@ -297,12 +299,12 @@ class AlarmDefinitions(alarm_definitions_api_v2.AlarmDefinitionsV2API,
alarm_metric_rows, sub_alarm_rows, None, None)
@resource.resource_try_catch_block
def _alarm_definition_list(self, tenant_id, name, dimensions, req_uri, sort_by,
def _alarm_definition_list(self, tenant_id, name, dimensions, severity, req_uri, sort_by,
offset, limit):
alarm_definition_rows = (
self._alarm_definitions_repo.get_alarm_definitions(tenant_id, name,
dimensions, sort_by,
dimensions, severity, sort_by,
offset, limit))
result = []

View File

@ -356,6 +356,40 @@ class TestAlarmDefinitions(base.BaseMonascaTest):
links = response_body['links']
self._verify_list_alarm_definitions_links(links)
@test.attr(type="gate")
def test_list_alarm_definitions_with_severity(self):
name = data_utils.rand_name('alarm_definition')
expression = 'avg(cpu_utilization) >= 1000'
alarm_definition = helpers.create_alarm_definition(
name=name,
description="description",
expression=expression,
severity="LOW")
resp, res_body_create_alarm_def = self.monasca_client.\
create_alarm_definitions(alarm_definition)
self.assertEqual(201, resp.status)
name = data_utils.rand_name('alarm_definition')
expression = 'avg(cpu_utilization) >= 1000'
alarm_definition = helpers.create_alarm_definition(
name=name,
description="description",
expression=expression,
severity="MEDIUM")
resp, res_body_create_alarm_def = self.monasca_client.\
create_alarm_definitions(alarm_definition)
self.assertEqual(201, resp.status)
query_param = '?severity=MEDIUM'
resp, response_body = self.monasca_client.\
list_alarm_definitions(query_param)
self._verify_list_alarm_definitions_response_body(resp, response_body)
elements = response_body['elements']
self._verify_list_get_alarm_definitions_elements(
elements, 1, res_body_create_alarm_def)
links = response_body['links']
self._verify_list_alarm_definitions_links(links)
@test.attr(type='gate')
def test_list_alarm_definitions_sort_by(self):
alarm_definitions = []