Refactoring views.aggregate_usage to be a bit more pythonic

This commit is contained in:
Andrew Melton 2013-01-23 12:55:25 -05:00
parent 212f60c6a8
commit 3526d0da6c

View File

@ -199,6 +199,7 @@ def aggregate_lifecycle(raw):
update_kpi(lifecycle, timing, raw)
timing.save()
INSTANCE_EVENT = {
'create_start': 'compute.instance.create.start',
'create_end': 'compute.instance.create.end',
@ -211,27 +212,6 @@ INSTANCE_EVENT = {
'exists': 'compute.instance.exists',
}
def aggregate_usage(raw):
if not raw.instance:
return
if raw.event == INSTANCE_EVENT['create_start'] or \
raw.event == INSTANCE_EVENT['resize_prep_start'] or\
raw.event == INSTANCE_EVENT['resize_revert_start']:
_process_usage_for_new_launch(raw)
elif raw.event == INSTANCE_EVENT['create_end'] or\
raw.event == INSTANCE_EVENT['resize_prep_end'] or\
raw.event == INSTANCE_EVENT['resize_finish_end'] or\
raw.event == INSTANCE_EVENT['resize_revert_end']:
_process_usage_for_updates(raw)
elif raw.event == INSTANCE_EVENT['delete_end']:
_process_delete(raw)
elif raw.event == INSTANCE_EVENT['exists']:
_process_exists(raw)
def _process_usage_for_new_launch(raw):
notif = json.loads(raw.json)
@ -253,7 +233,7 @@ def _process_usage_for_updates(raw):
instance_id = payload['instance_id']
request_id = notif[1]['_context_request_id']
instance = models.InstanceUsage.objects.get(instance=instance_id,
request_id=request_id)
request_id=request_id)
if raw.event == INSTANCE_EVENT['create_end'] or\
raw.event == INSTANCE_EVENT['resize_finish_end'] or\
@ -287,7 +267,7 @@ def _process_exists(raw):
launched_at = payload['launched_at']
launched_at = str_time_to_unix(launched_at)
usage = models.InstanceUsage.objects.get(instance=instance_id,
launched_at=launched_at)
launched_at=launched_at)
values = {}
values['message_id'] = notif[1]['message_id']
values['instance'] = instance_id
@ -305,6 +285,27 @@ def _process_exists(raw):
exists.save()
USAGE_PROCESS_MAPPING = {
INSTANCE_EVENT['create_start']: _process_usage_for_new_launch,
INSTANCE_EVENT['resize_prep_start']: _process_usage_for_new_launch,
INSTANCE_EVENT['resize_revert_start']: _process_usage_for_new_launch,
INSTANCE_EVENT['create_end']: _process_usage_for_updates,
INSTANCE_EVENT['resize_prep_end']: _process_usage_for_updates,
INSTANCE_EVENT['resize_finish_end']: _process_usage_for_updates,
INSTANCE_EVENT['resize_revert_end']: _process_usage_for_updates,
INSTANCE_EVENT['delete_end']: _process_delete,
INSTANCE_EVENT['exists']: _process_exists,
}
def aggregate_usage(raw):
if not raw.instance:
return
if raw.event in USAGE_PROCESS_MAPPING:
USAGE_PROCESS_MAPPING[raw.event](raw)
def str_time_to_unix(when):
try:
try: