Merge "ceph: fix write emulation"

This commit is contained in:
Jenkins 2016-08-21 09:37:34 +00:00 committed by Gerrit Code Review
commit 7a40269a68
3 changed files with 5 additions and 16 deletions

View File

@ -415,12 +415,6 @@ class AggregatedTimeSerie(TimeSerie):
return int((self.first.value - split) // (self.sampling * 10e8) return int((self.first.value - split) // (self.sampling * 10e8)
* self.SERIAL_LEN) * self.SERIAL_LEN)
@staticmethod
def padding(offset):
offset = offset // AggregatedTimeSerie.SERIAL_LEN
pad = [False] * offset * 2
return struct.pack('<' + '?d' * offset, *pad)
def _truncate(self, quick=False): def _truncate(self, quick=False):
"""Truncate the timeserie.""" """Truncate the timeserie."""
if self.max_size is not None: if self.max_size is not None:

View File

@ -257,12 +257,7 @@ class CephStorage(_carbonara.CarbonaraBasedStorage):
granularity, data, offset=0, version=3): granularity, data, offset=0, version=3):
name = self._get_object_name(metric, timestamp_key, name = self._get_object_name(metric, timestamp_key,
aggregation, granularity, version) aggregation, granularity, version)
try: self.ioctx.write(name, data, offset=offset)
self.ioctx.write(name, data, offset=offset)
except rados.ObjectNotFound:
# first time writing data
self.ioctx.write_full(
name, carbonara.AggregatedTimeSerie.padding(offset) + data)
self.ioctx.set_xattr("gnocchi_%s_container" % metric.id, name, "") self.ioctx.set_xattr("gnocchi_%s_container" % metric.id, name, "")
def _delete_metric_measures(self, metric, timestamp_key, aggregation, def _delete_metric_measures(self, metric, timestamp_key, aggregation,

View File

@ -140,11 +140,11 @@ class FakeRadosModule(object):
self._validate_key(key) self._validate_key(key)
try: try:
current = self.kvs[key] current = self.kvs[key]
if len(current) < offset:
current += b'\x00' * (offset - len(current))
self.kvs[key] = current[:offset] + value
except KeyError: except KeyError:
raise FakeRadosModule.ObjectNotFound current = b""
if len(current) < offset:
current += b'\x00' * (offset - len(current))
self.kvs[key] = current[:offset] + value
def stat(self, key): def stat(self, key):
self._validate_key(key) self._validate_key(key)