Merge "Correct the order when sorting by "severity""
This commit is contained in:
commit
ea55d8c28c
@ -25,6 +25,9 @@ from oslo_db.sqlalchemy import utils as oslo_sql_utils
|
||||
from oslo_log import log
|
||||
from oslo_utils import timeutils
|
||||
import six
|
||||
from sqlalchemy import asc
|
||||
from sqlalchemy import desc
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy.orm import exc
|
||||
|
||||
from aodh.i18n import _LI
|
||||
@ -161,6 +164,16 @@ class Connection(base.Connection):
|
||||
raise storage.InvalidMarker(
|
||||
'Marker %s not found.' % pagination['marker'])
|
||||
limit = pagination.get('limit')
|
||||
# we sort by "severity" by its semantic than its alphabetical
|
||||
# order when "severity" specified in sorts.
|
||||
for sort_key, sort_dir in pagination['sort'][::-1]:
|
||||
if sort_key == 'severity':
|
||||
sort_dir_func = {'asc': asc, 'desc': desc}[sort_dir]
|
||||
query = query.order_by(sort_dir_func(
|
||||
func.field(getattr(model, sort_key), 'low',
|
||||
'moderate', 'critical')))
|
||||
pagination['sort'].remove((sort_key, sort_dir))
|
||||
|
||||
sort_keys = [s[0] for s in pagination['sort']]
|
||||
sort_dirs = [s[1] for s in pagination['sort']]
|
||||
return oslo_sql_utils.paginate_query(
|
||||
|
@ -3313,6 +3313,18 @@ class TestPaginationQuery(TestAlarmsBase):
|
||||
names = [a['name'] for a in data]
|
||||
self.assertEqual(['name1', 'name2', 'name3', 'name4'], names)
|
||||
|
||||
def test_sort_by_severity_with_its_value(self):
|
||||
data = self.get_json('/alarms?sort=severity:asc',
|
||||
headers=self.auth_headers)
|
||||
severities = [a['severity'] for a in data]
|
||||
self.assertEqual(['low', 'moderate', 'critical', 'critical'],
|
||||
severities)
|
||||
data = self.get_json('/alarms?sort=severity:desc',
|
||||
headers=self.auth_headers)
|
||||
severities = [a['severity'] for a in data]
|
||||
self.assertEqual(['critical', 'critical', 'moderate', 'low'],
|
||||
severities)
|
||||
|
||||
def test_pagination_query_limit(self):
|
||||
data = self.get_json('/alarms?limit=2', headers=self.auth_headers)
|
||||
self.assertEqual(2, len(data))
|
||||
|
Loading…
x
Reference in New Issue
Block a user