Merge "ceph: fix write emulation"
This commit is contained in:
commit
7a40269a68
@ -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:
|
||||||
|
@ -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,
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user