Merge "Moving entry sorting to interface" into to_production
This commit is contained in:
commit
46ba984c71
@ -15,7 +15,7 @@
|
|||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
import auth
|
import auth
|
||||||
from constants import date_format
|
from constants import date_format, other_date_format
|
||||||
import config
|
import config
|
||||||
from datetime import timedelta, datetime
|
from datetime import timedelta, datetime
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
@ -95,6 +95,21 @@ def add_dates(start, end):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def sort_entries(data):
|
||||||
|
"""
|
||||||
|
Setup timestamps as datetime objects,
|
||||||
|
and sort.
|
||||||
|
"""
|
||||||
|
for entry in data:
|
||||||
|
try:
|
||||||
|
entry['timestamp'] = datetime.strptime(
|
||||||
|
entry['timestamp'], date_format)
|
||||||
|
except ValueError:
|
||||||
|
entry['timestamp'] = datetime.strptime(
|
||||||
|
entry['timestamp'], other_date_format)
|
||||||
|
return sorted(data, key=lambda x: x['timestamp'])
|
||||||
|
|
||||||
|
|
||||||
class Tenant(object):
|
class Tenant(object):
|
||||||
"""A wrapper object for the tenant recieved from keystone."""
|
"""A wrapper object for the tenant recieved from keystone."""
|
||||||
def __init__(self, tenant, conn):
|
def __init__(self, tenant, conn):
|
||||||
@ -130,6 +145,6 @@ class Tenant(object):
|
|||||||
data=json.dumps({'q': fields}))
|
data=json.dumps({'q': fields}))
|
||||||
|
|
||||||
if r.status_code == 200:
|
if r.status_code == 200:
|
||||||
return json.loads(r.text)
|
return sort_entries(json.loads(r.text))
|
||||||
else:
|
else:
|
||||||
raise InterfaceException('%d %s' % (r.status_code, r.text))
|
raise InterfaceException('%d %s' % (r.status_code, r.text))
|
||||||
|
@ -42,8 +42,8 @@ class Uptime(Transformer):
|
|||||||
|
|
||||||
def sort_and_clip_end(usage):
|
def sort_and_clip_end(usage):
|
||||||
cleaned = (self._clean_entry(s) for s in usage)
|
cleaned = (self._clean_entry(s) for s in usage)
|
||||||
clipped = (s for s in cleaned if s['timestamp'] < end)
|
clipped = [s for s in cleaned if s['timestamp'] < end]
|
||||||
return sorted(clipped, key=lambda x: x['timestamp'])
|
return clipped
|
||||||
|
|
||||||
state = sort_and_clip_end(data)
|
state = sort_and_clip_end(data)
|
||||||
|
|
||||||
@ -92,14 +92,9 @@ class Uptime(Transformer):
|
|||||||
'flavor.id', entry['resource_metadata'].get(
|
'flavor.id', entry['resource_metadata'].get(
|
||||||
'instance_flavor_id', 0
|
'instance_flavor_id', 0
|
||||||
)
|
)
|
||||||
)
|
),
|
||||||
|
'timestamp': entry['timestamp']
|
||||||
}
|
}
|
||||||
try:
|
|
||||||
result['timestamp'] = datetime.datetime.strptime(
|
|
||||||
entry['timestamp'], constants.date_format)
|
|
||||||
except ValueError:
|
|
||||||
result['timestamp'] = datetime.datetime.strptime(
|
|
||||||
entry['timestamp'], constants.other_date_format)
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
@ -183,8 +178,7 @@ class GaugeSum(Transformer):
|
|||||||
def _transform_usage(self, name, data, start, end):
|
def _transform_usage(self, name, data, start, end):
|
||||||
sum_vol = 0
|
sum_vol = 0
|
||||||
for sample in data:
|
for sample in data:
|
||||||
t = datetime.datetime.strptime(sample['timestamp'],
|
t = sample['timestamp']
|
||||||
'%Y-%m-%dT%H:%M:%S.%f')
|
|
||||||
if t >= start and t < end:
|
if t >= start and t < end:
|
||||||
sum_vol += sample["counter_volume"]
|
sum_vol += sample["counter_volume"]
|
||||||
return {name: sum_vol}
|
return {name: sum_vol}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user