From e08924f1f83faa80e8c8f1f92675ed9e96e53fad Mon Sep 17 00:00:00 2001 From: Eddie Sheffield Date: Fri, 20 Mar 2015 14:43:02 +0000 Subject: [PATCH] Add functionality for counting events Similar to the existing streams functionality, this patch adds the ability to get just a count of filtered events rather than the full list of events. There are corresponding changes in quince, quincy, and klugman. Change-Id: Ic14845db48170a8481c764f5f2468f137758bd19 --- setup.cfg | 2 +- tests/test_db.py | 4 ++++ winchester/db/interface.py | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) 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'