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()
|
timeframe = self._sm.get_state()
|
||||||
self.usage_start = timeframe
|
self.usage_start = timeframe
|
||||||
self.usage_start_dt = datetime.datetime.fromtimestamp(timeframe)
|
self.usage_start_dt = datetime.datetime.fromtimestamp(timeframe)
|
||||||
end_frame = timeframe + self._period
|
self.usage_end = timeframe + self._period
|
||||||
self.usage_end = datetime.datetime.fromtimestamp(end_frame)
|
self.usage_end_dt = datetime.datetime.fromtimestamp(self.usage_end)
|
||||||
metadata = self._sm.get_metadata()
|
metadata = self._sm.get_metadata()
|
||||||
self.total = metadata.get('total', 0)
|
self.total = metadata.get('total', 0)
|
||||||
|
|
||||||
|
|||||||
@@ -15,12 +15,20 @@
|
|||||||
#
|
#
|
||||||
# @author: Stéphane Albert
|
# @author: Stéphane Albert
|
||||||
#
|
#
|
||||||
|
import decimal
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from cloudkitty import writer
|
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):
|
class OSRFBackend(writer.BaseReportWriter):
|
||||||
"""OpenStack Report Format Writer:
|
"""OpenStack Report Format Writer:
|
||||||
|
|
||||||
@@ -51,7 +59,7 @@ class OSRFBackend(writer.BaseReportWriter):
|
|||||||
|
|
||||||
def _write_total(self):
|
def _write_total(self):
|
||||||
total = {'total': self.total}
|
total = {'total': self.total}
|
||||||
self._report.write(json.dumps(total))
|
self._report.write(json.dumps(total, cls=DecimalEncoder))
|
||||||
self._report.write(']')
|
self._report.write(']')
|
||||||
self._report.flush()
|
self._report.flush()
|
||||||
|
|
||||||
@@ -88,6 +96,6 @@ class OSRFBackend(writer.BaseReportWriter):
|
|||||||
'end': self.usage_end_dt.isoformat()}
|
'end': self.usage_end_dt.isoformat()}
|
||||||
data['usage'] = self._usage_data
|
data['usage'] = self._usage_data
|
||||||
|
|
||||||
self._report.write(json.dumps(data))
|
self._report.write(json.dumps(data, cls=DecimalEncoder))
|
||||||
self._report.write(', ')
|
self._report.write(', ')
|
||||||
self._report.flush()
|
self._report.flush()
|
||||||
|
|||||||
Reference in New Issue
Block a user