Fixed OSRF format writer to support Decimal
Change-Id: Ib554a1fe529ab7182e5a35ad061f1341c30acb47
This commit is contained in:
@@ -81,8 +81,8 @@ class BaseReportWriter(object):
|
||||
timeframe = self._sm.get_state()
|
||||
self.usage_start = timeframe
|
||||
self.usage_start_dt = datetime.datetime.fromtimestamp(timeframe)
|
||||
end_frame = timeframe + self._period
|
||||
self.usage_end = datetime.datetime.fromtimestamp(end_frame)
|
||||
self.usage_end = timeframe + self._period
|
||||
self.usage_end_dt = datetime.datetime.fromtimestamp(self.usage_end)
|
||||
metadata = self._sm.get_metadata()
|
||||
self.total = metadata.get('total', 0)
|
||||
|
||||
|
@@ -15,12 +15,20 @@
|
||||
#
|
||||
# @author: Stéphane Albert
|
||||
#
|
||||
import decimal
|
||||
import json
|
||||
import os
|
||||
|
||||
from cloudkitty import writer
|
||||
|
||||
|
||||
class DecimalEncoder(json.JSONEncoder):
|
||||
def default(self, o):
|
||||
if isinstance(o, decimal.Decimal):
|
||||
return float(o)
|
||||
return super(DecimalEncoder, self).default(o)
|
||||
|
||||
|
||||
class OSRFBackend(writer.BaseReportWriter):
|
||||
"""OpenStack Report Format Writer:
|
||||
|
||||
@@ -51,7 +59,7 @@ class OSRFBackend(writer.BaseReportWriter):
|
||||
|
||||
def _write_total(self):
|
||||
total = {'total': self.total}
|
||||
self._report.write(json.dumps(total))
|
||||
self._report.write(json.dumps(total, cls=DecimalEncoder))
|
||||
self._report.write(']')
|
||||
self._report.flush()
|
||||
|
||||
@@ -88,6 +96,6 @@ class OSRFBackend(writer.BaseReportWriter):
|
||||
'end': self.usage_end_dt.isoformat()}
|
||||
data['usage'] = self._usage_data
|
||||
|
||||
self._report.write(json.dumps(data))
|
||||
self._report.write(json.dumps(data, cls=DecimalEncoder))
|
||||
self._report.write(', ')
|
||||
self._report.flush()
|
||||
|
Reference in New Issue
Block a user