diff --git a/stacktach/stacky_server.py b/stacktach/stacky_server.py index 9dc8e02..fae1b70 100644 --- a/stacktach/stacky_server.py +++ b/stacktach/stacky_server.py @@ -83,6 +83,13 @@ def get_event_names(service='nova'): return _model_factory(service).values('event').distinct() +def get_all_event_names(): + services = ['nova', 'glance', 'generic'] + events = [] + for service in services: + events.extend(get_event_names(service)) + return events + def get_host_names(): # TODO: We need to upgrade to Django 1.4 so we can get tenent id and # host and just do distinct on host name. @@ -156,7 +163,13 @@ def do_deployments(request): def do_events(request): - events = get_event_names() + service = str(request.GET.get('service', 'all')) + print service + if service == 'all': + events = get_all_event_names() + else: + events = get_event_names(service=service) + print events results = [["Event Name"]] for event in events: results.append([event['event']]) diff --git a/tests/unit/test_stacky_server.py b/tests/unit/test_stacky_server.py index c8f902d..dbda963 100644 --- a/tests/unit/test_stacky_server.py +++ b/tests/unit/test_stacky_server.py @@ -235,13 +235,14 @@ class StackyServerTestCase(StacktachBaseTestCase): self.assertEqual(json_resp[2], [2, 'dep2']) self.mox.VerifyAll() - def test_do_events(self): + def test_do_events_of_a_single_service(self): fake_request = self.mox.CreateMockAnything() + fake_request.GET = {'service': 'nova'} event1 = {'event': 'some.event.1'} event2 = {'event': 'some.event.2'} events = [event1, event2] self.mox.StubOutWithMock(stacky_server, 'get_event_names') - stacky_server.get_event_names().AndReturn(events) + stacky_server.get_event_names(service='nova').AndReturn(events) self.mox.ReplayAll() resp = stacky_server.do_events(fake_request) @@ -254,6 +255,28 @@ class StackyServerTestCase(StacktachBaseTestCase): self.assertEqual(json_resp[2], ['some.event.2']) self.mox.VerifyAll() + def test_do_events_of_all_services(self): + fake_request = self.mox.CreateMockAnything() + fake_request.GET = {'service': 'all'} + event1 = {'event': 'some.event.1'} + event2 = {'event': 'some.event.2'} + events = [event1, event2] + self.mox.StubOutWithMock(stacky_server, 'get_event_names') + stacky_server.get_event_names('nova').AndReturn(events) + stacky_server.get_event_names('glance').AndReturn(events) + stacky_server.get_event_names('generic').AndReturn(events) + self.mox.ReplayAll() + + resp = stacky_server.do_events(fake_request) + + self.assertEqual(resp.status_code, 200) + json_resp = json.loads(resp.content) + self.assertEqual(len(json_resp), 7) + self.assertEqual(json_resp[0], ['Event Name']) + self.assertEqual(json_resp[1], ['some.event.1']) + self.assertEqual(json_resp[2], ['some.event.2']) + self.mox.VerifyAll() + def test_do_hosts(self): fake_request = self.mox.CreateMockAnything() host1 = {'host': 'www.demo.com'}