From 8dba9e2e8b4aa61de083b75d06c367274ebac82c Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Tue, 19 Mar 2013 14:33:53 -0400 Subject: [PATCH] Providing json dict to usage parsing --- stacktach/views.py | 32 ++++++++++++++------------------ tests/unit/test_stacktach.py | 20 ++++++++++---------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/stacktach/views.py b/stacktach/views.py index 170cc58..ab46d2d 100644 --- a/stacktach/views.py +++ b/stacktach/views.py @@ -216,12 +216,11 @@ INSTANCE_EVENT = { } -def _process_usage_for_new_launch(raw): - notif = json.loads(raw.json) - payload = notif[1]['payload'] +def _process_usage_for_new_launch(raw, body): + payload = body['payload'] values = {} values['instance'] = payload['instance_id'] - values['request_id'] = notif[1]['_context_request_id'] + values['request_id'] = body['_context_request_id'] (usage, new) = STACKDB.get_or_create_instance_usage(**values) @@ -231,11 +230,10 @@ def _process_usage_for_new_launch(raw): STACKDB.save(usage) -def _process_usage_for_updates(raw): - notif = json.loads(raw.json) - payload = notif[1]['payload'] +def _process_usage_for_updates(raw, body): + payload = body['payload'] instance_id = payload['instance_id'] - request_id = notif[1]['_context_request_id'] + request_id = body['_context_request_id'] (usage, new) = STACKDB.get_or_create_instance_usage(instance=instance_id, request_id=request_id) @@ -252,9 +250,8 @@ def _process_usage_for_updates(raw): STACKDB.save(usage) -def _process_delete(raw): - notif = json.loads(raw.json) - payload = notif[1]['payload'] +def _process_delete(raw, body): + payload = body['payload'] instance_id = payload['instance_id'] deleted_at = utils.str_time_to_unix(payload['deleted_at']) values = { @@ -272,9 +269,8 @@ def _process_delete(raw): STACKDB.save(delete) -def _process_exists(raw): - notif = json.loads(raw.json) - payload = notif[1]['payload'] +def _process_exists(raw, body): + payload = body['payload'] instance_id = payload['instance_id'] launched_at = utils.str_time_to_unix(payload['launched_at']) launched_range = (launched_at, launched_at+1) @@ -283,7 +279,7 @@ def _process_exists(raw): delete = STACKDB.get_instance_delete(instance=instance_id, launched_at__range=launched_range) values = {} - values['message_id'] = notif[1]['message_id'] + values['message_id'] = body['message_id'] values['instance'] = instance_id values['launched_at'] = launched_at values['instance_type_id'] = payload['instance_type_id'] @@ -315,12 +311,12 @@ USAGE_PROCESS_MAPPING = { } -def aggregate_usage(raw): +def aggregate_usage(raw, body): if not raw.instance: return if raw.event in USAGE_PROCESS_MAPPING: - USAGE_PROCESS_MAPPING[raw.event](raw) + USAGE_PROCESS_MAPPING[raw.event](raw, body) def process_raw_data(deployment, args, json_args): @@ -347,7 +343,7 @@ def process_raw_data(deployment, args, json_args): STACKDB.save(record) aggregate_lifecycle(record) - aggregate_usage(record) + aggregate_usage(record, body) return record diff --git a/tests/unit/test_stacktach.py b/tests/unit/test_stacktach.py index f24e6d0..ffa721f 100644 --- a/tests/unit/test_stacktach.py +++ b/tests/unit/test_stacktach.py @@ -172,7 +172,7 @@ class StacktachRawParsingTestCase(unittest.TestCase): self.mox.StubOutWithMock(views, "aggregate_lifecycle") views.aggregate_lifecycle(raw) self.mox.StubOutWithMock(views, "aggregate_usage") - views.aggregate_usage(raw) + views.aggregate_usage(raw, dict) self.mox.ReplayAll() views.process_raw_data(deployment, args, json_args) self.mox.VerifyAll() @@ -201,7 +201,7 @@ class StacktachRawParsingTestCase(unittest.TestCase): self.mox.StubOutWithMock(views, "aggregate_lifecycle") views.aggregate_lifecycle(raw) self.mox.StubOutWithMock(views, "aggregate_usage") - views.aggregate_usage(raw) + views.aggregate_usage(raw, dict) self.mox.ReplayAll() views.process_raw_data(deployment, args, json_args) self.mox.VerifyAll() @@ -415,7 +415,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): .AndReturn((usage, True)) views.STACKDB.save(usage) self.mox.ReplayAll() - views._process_usage_for_new_launch(raw) + views._process_usage_for_new_launch(raw, notif[1]) self.assertEquals(usage.instance_type_id, '1') self.mox.VerifyAll() @@ -439,7 +439,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.save(usage) self.mox.ReplayAll() - views._process_usage_for_updates(raw) + views._process_usage_for_updates(raw, notif[1]) self.assertEqual(usage.instance, INSTANCE_ID_1) self.assertEqual(usage.request_id, REQUEST_ID_1) self.assertEqual(usage.instance_type_id, '1') @@ -465,7 +465,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.save(usage) self.mox.ReplayAll() - views._process_usage_for_updates(raw) + views._process_usage_for_updates(raw, notif[1]) self.assertEqual(usage.instance, INSTANCE_ID_1) self.assertEqual(usage.request_id, REQUEST_ID_1) self.assertEqual(usage.instance_type_id, '1') @@ -490,7 +490,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.save(usage) self.mox.ReplayAll() - views._process_usage_for_updates(raw) + views._process_usage_for_updates(raw, notif[1]) self.assertEqual(usage.instance, INSTANCE_ID_1) self.assertEqual(usage.request_id, REQUEST_ID_1) self.assertEqual(usage.instance_type_id, '2') @@ -520,7 +520,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.save(delete) self.mox.ReplayAll() - views._process_delete(raw) + views._process_delete(raw, notif[1]) self.assertEqual(delete.instance, INSTANCE_ID_1) self.assertEqual(delete.launched_at, launch_decimal) self.assertEqual(delete.deleted_at, delete_decimal) @@ -545,7 +545,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.save(delete) self.mox.ReplayAll() - views._process_delete(raw) + views._process_delete(raw, notif[1]) self.assertEqual(delete.instance, INSTANCE_ID_1) self.assertEqual(delete.deleted_at, delete_decimal) self.mox.VerifyAll() @@ -580,7 +580,7 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists) views.STACKDB.save(exists) self.mox.ReplayAll() - views._process_exists(raw) + views._process_exists(raw, notif[1]) self.mox.VerifyAll() def test_process_exists_with_deleted_at(self): @@ -619,6 +619,6 @@ class StacktackUsageParsingTestCase(unittest.TestCase): views.STACKDB.create_instance_exists(**exists_values).AndReturn(exists) views.STACKDB.save(exists) self.mox.ReplayAll() - views._process_exists(raw) + views._process_exists(raw, notif[1]) self.mox.VerifyAll()