diff --git a/setup.cfg b/setup.cfg index 8d77162..63a0b8f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [metadata] description-file = README.md name = winchester -version = 0.4 +version = 0.5 author = Monsyne Dragon author_email = mdragon@rackspace.com summary = An OpenStack notification event processing library. diff --git a/tests/test_db.py b/tests/test_db.py index abdb800..6421376 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -486,6 +486,10 @@ class TestDB(unittest.TestCase): for event in events: self.assertTrue(event['message_id'] in self.events) + def test_find_event_count(self): + count = self.db.find_events(count=True) + self.assertEqual([{'count': 4}], count) + def test_find_events_date_filter(self): _from = datetime.datetime(2014,8,1,10) _to = datetime.datetime(2014,8,1,16) diff --git a/winchester/db/interface.py b/winchester/db/interface.py index 2b5b79f..11a53f7 100644 --- a/winchester/db/interface.py +++ b/winchester/db/interface.py @@ -130,7 +130,7 @@ class DBInterface(object): @sessioned def find_events(self, from_datetime=None, to_datetime=None, event_name=None, traits=None, mark=None, limit=None, - session=None): + session=None, count=False): order_desc = True @@ -161,6 +161,10 @@ class DBInterface(object): models.Trait.name == name, models.Trait.value == val))) + if count: + q = q.count() + return [{"count": q}] + if order_desc: q = q.order_by(models.Event.id.desc()) mark_fmt = '%x'