Allow filtering alarm definitions by severity
Change-Id: I85b9ea6f9b7f194a7c14276901e96cd07353f8d0
This commit is contained in:
parent
b3d174493a
commit
5e55919512
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 = []
|
||||
|
|
|
@ -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 = []
|
||||
|
|
Loading…
Reference in New Issue