Merge branch 'usage_json_body' of github.com:ramielrowe/stacktach into opt_migr_verif

This commit is contained in:
Andrew Melton 2013-03-21 16:05:25 -04:00
commit a9c5ce87df
3 changed files with 32 additions and 29 deletions

View File

@ -218,12 +218,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)
@ -234,11 +233,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)
@ -256,9 +254,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 = {
@ -276,9 +273,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)
@ -287,7 +283,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']
@ -321,12 +317,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):
@ -353,7 +349,7 @@ def process_raw_data(deployment, args, json_args):
STACKDB.save(record)
aggregate_lifecycle(record)
aggregate_usage(record)
aggregate_usage(record, body)
return record

View File

@ -174,7 +174,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()
@ -203,7 +203,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()
@ -417,7 +417,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()
@ -457,7 +457,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')
@ -510,7 +510,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')
@ -535,7 +535,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')
@ -565,7 +565,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)
@ -590,7 +590,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()
@ -625,7 +625,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):
@ -664,6 +664,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()

View File

@ -17,7 +17,6 @@
# to set TENANT_ID and URL to point to your StackTach web server.
import datetime
import json
import kombu
import kombu.entity
import kombu.mixins
@ -25,6 +24,14 @@ import logging
import sys
import time
try:
import ujson as json
except ImportError:
try:
import simplejson as json
except ImportError:
import json
from pympler.process import ProcessMemoryInfo
from stacktach import db, views