diff --git a/ceilometer/event/storage/impl_sqlalchemy.py b/ceilometer/event/storage/impl_sqlalchemy.py index 0a35018..9a737eb 100644 --- a/ceilometer/event/storage/impl_sqlalchemy.py +++ b/ceilometer/event/storage/impl_sqlalchemy.py @@ -16,20 +16,21 @@ from __future__ import absolute_import import datetime import os from oslo_config import cfg from oslo_db import exception as dbexc from oslo_db.sqlalchemy import session as db_session from oslo_log import log from oslo_utils import timeutils import sqlalchemy as sa +from sqlalchemy import desc as descending from ceilometer.event.storage import base from ceilometer.event.storage import models as api_models from ceilometer.i18n import _LE, _LI from ceilometer import storage from ceilometer.storage.sqlalchemy import models from ceilometer import utils LOG = log.getLogger(__name__) @@ -288,21 +289,22 @@ class Connection(base.Connection): session.query(models.TraitText.event_id).filter(sa.and_( models.TraitText.key == 'project_id', models.TraitText.value == event_filter.admin_proj, models.Event.id == models.TraitText.event_id)))) query = query.filter(sa.exists().where( models.Event.id == admin_q.subquery().c.trait_text_event_id)) if event_filter_conditions: query = query.filter(sa.and_(*event_filter_conditions)) - query = query.order_by(models.Event.generated).limit(limit) + query = \ + query.order_by(descending(models.Event.generated)).limit(limit) event_list = {} # get a list of all events that match filters for (id_, generated, message_id, desc, raw) in query.add_columns( models.Event.generated, models.Event.message_id, models.EventType.desc, models.Event.raw).all(): event_list[id_] = api_models.Event(message_id, desc, generated, [], raw) # Query all traits related to events. # NOTE (gordc): cast is done because pgsql defaults to TEXT when