Remove MongoDB TTL support for MongoDB < 2.2
We already depends on MongoDB >= 2.2 Change-Id: I3d91fb08eb51ba6cfd5256abbeca43ed98321412
This commit is contained in:
parent
92bed7c1cc
commit
1e8b2b9b3a
@ -22,7 +22,6 @@
|
||||
|
||||
import calendar
|
||||
import copy
|
||||
import datetime
|
||||
import operator
|
||||
import uuid
|
||||
import weakref
|
||||
@ -34,7 +33,6 @@ import pymongo
|
||||
from oslo.config import cfg
|
||||
|
||||
from ceilometer.openstack.common import log
|
||||
from ceilometer.openstack.common import timeutils
|
||||
from ceilometer import storage
|
||||
from ceilometer.storage import base
|
||||
from ceilometer.storage import models
|
||||
@ -287,11 +285,6 @@ class Connection(base.Connection):
|
||||
self.db.meter.ensure_index([('timestamp', pymongo.DESCENDING)],
|
||||
name='timestamp_idx')
|
||||
|
||||
# Since mongodb 2.2 support db-ttl natively
|
||||
if self._is_natively_ttl_supported():
|
||||
self._ensure_meter_ttl_index()
|
||||
|
||||
def _ensure_meter_ttl_index(self):
|
||||
indexes = self.db.meter.index_information()
|
||||
|
||||
ttl = cfg.CONF.database.time_to_live
|
||||
@ -316,10 +309,6 @@ class Connection(base.Connection):
|
||||
name='meter_ttl'
|
||||
)
|
||||
|
||||
def _is_natively_ttl_supported(self):
|
||||
# Assume is not supported if we can get the version
|
||||
return self.conn.server_info().get('versionArray', []) >= [2, 2]
|
||||
|
||||
def clear(self):
|
||||
self.conn.drop_database(self.db)
|
||||
# Connection will be reopened automatically if needed
|
||||
@ -377,13 +366,6 @@ class Connection(base.Connection):
|
||||
:param ttl: Number of seconds to keep records for.
|
||||
|
||||
"""
|
||||
# Before mongodb 2.2 we need to clear expired data manually
|
||||
if not self._is_natively_ttl_supported():
|
||||
end = timeutils.utcnow() - datetime.timedelta(seconds=ttl)
|
||||
f = storage.SampleFilter(end=end)
|
||||
q = make_query_from_filter(f, require_meter=False)
|
||||
self.db.meter.remove(q)
|
||||
|
||||
results = self.db.meter.group(
|
||||
key={},
|
||||
condition={},
|
||||
|
@ -102,55 +102,27 @@ class IndexTest(MongoDBEngineTestBase):
|
||||
# create a fake index and check it is deleted
|
||||
self.conn.db.meter.ensure_index('foo', name='meter_ttl')
|
||||
cfg.CONF.set_override('time_to_live', -1, group='database')
|
||||
|
||||
self.conn._ensure_meter_ttl_index()
|
||||
self.conn.upgrade()
|
||||
self.assertTrue(self.conn.db.meter.ensure_index('foo',
|
||||
name='meter_ttl'))
|
||||
cfg.CONF.set_override('time_to_live', 456789, group='database')
|
||||
self.conn._ensure_meter_ttl_index()
|
||||
self.conn.upgrade()
|
||||
self.assertFalse(self.conn.db.meter.ensure_index('foo',
|
||||
name='meter_ttl'))
|
||||
|
||||
def test_meter_ttl_index_present(self):
|
||||
cfg.CONF.set_override('time_to_live', 456789, group='database')
|
||||
self.conn._ensure_meter_ttl_index()
|
||||
self.conn.upgrade()
|
||||
self.assertFalse(self.conn.db.meter.ensure_index('foo',
|
||||
name='meter_ttl'))
|
||||
self.assertEqual(self.conn.db.meter.index_information()[
|
||||
'meter_ttl']['expireAfterSeconds'], 456789)
|
||||
|
||||
cfg.CONF.set_override('time_to_live', -1, group='database')
|
||||
self.conn._ensure_meter_ttl_index()
|
||||
self.conn.upgrade()
|
||||
self.assertTrue(self.conn.db.meter.ensure_index('foo',
|
||||
name='meter_ttl'))
|
||||
|
||||
def test_ttl_index_is_supported(self):
|
||||
self.mox.StubOutWithMock(self.conn.conn, "server_info")
|
||||
self.conn.conn.server_info().AndReturn({'versionArray': [2, 4, 5, 0]})
|
||||
|
||||
self.mox.ReplayAll()
|
||||
self.assertTrue(self.conn._is_natively_ttl_supported())
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
|
||||
def test_ttl_index_is_not_supported(self):
|
||||
self.mox.StubOutWithMock(self.conn.conn, "server_info")
|
||||
self.conn.conn.server_info().AndReturn({'versionArray': [2, 0, 1, 0]})
|
||||
|
||||
self.mox.ReplayAll()
|
||||
self.assertFalse(self.conn._is_natively_ttl_supported())
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
|
||||
def test_ttl_index_is_unkown(self):
|
||||
self.mox.StubOutWithMock(self.conn.conn, "server_info")
|
||||
self.conn.conn.server_info().AndReturn({})
|
||||
|
||||
self.mox.ReplayAll()
|
||||
self.assertFalse(self.conn._is_natively_ttl_supported())
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
|
||||
|
||||
class UserTest(base.UserTest, MongoDBEngineTestBase):
|
||||
pass
|
||||
@ -173,25 +145,10 @@ class MeterTestPagination(base.MeterTestPagination, MongoDBEngineTestBase):
|
||||
|
||||
|
||||
class RawSampleTest(base.RawSampleTest, MongoDBEngineTestBase):
|
||||
# NOTE(jd) Override this test in MongoDB because our code doesn't clear
|
||||
# the collections, this is handled by MongoDB TTL feature.
|
||||
def test_clear_metering_data(self):
|
||||
# NOTE(sileht): ensure this tests is played for any version of mongo
|
||||
self.mox.StubOutWithMock(self.conn, "_is_natively_ttl_supported")
|
||||
self.conn._is_natively_ttl_supported().AndReturn(False)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
super(RawSampleTest, self).test_clear_metering_data()
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
|
||||
def test_clear_metering_data_no_data_to_remove(self):
|
||||
# NOTE(sileht): ensure this tests is played for any version of mongo
|
||||
self.mox.StubOutWithMock(self.conn, "_is_natively_ttl_supported")
|
||||
self.conn._is_natively_ttl_supported().AndReturn(False)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
super(RawSampleTest, self).test_clear_metering_data_no_data_to_remove()
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
pass
|
||||
|
||||
|
||||
class StatisticsTest(base.StatisticsTest, MongoDBEngineTestBase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user