diff options
author | ZhiQiang Fan <aji.zqfan@gmail.com> | 2015-11-17 00:34:16 +0800 |
---|---|---|
committer | ZhiQiang Fan <aji.zqfan@gmail.com> | 2015-11-26 09:15:03 +0800 |
commit | 40c5ceefa96d93cf9b12fa189787ed3f26e853cc (patch) | |
tree | e95140e4b63b052e2287c468407a2a90aa91438d | |
parent | 1fae4ddf0dd69746715a35159929c674876d7d68 (diff) | |
download | ceilometer-40c5ceefa96d93cf9b12fa189787ed3f26e853cc.tar.gz |
don't pass ceilometer options to oslo.db engine facade
oslo.db EngineFacade class only support options defined by oslo.db,
but we're passing options defined by ceilometer, so oslo.db complains
with a warning message:
NotSupportedWarning: Configuration option(s) ['alarm_connection', \
'alarm_history_time_to_live', 'db2nosql_resource_id_maxlen', \
'event_connection', 'event_time_to_live', 'metering_connection', \
'metering_time_to_live'] not supported exception.NotSupportedWarning
This patch makes sure only options defined by oslo.db will be sent
to EngineFacade
Note: Ceilometer stable/kilo still has alarm code, so this backport
also contains change in Aodh project.
Change-Id: I2a39737a5f7824918c28ff2180f2ea95e7e82537
Closes-Bug: #1516515
(cherry picked from commit 43c65a3b658c0af03948780ab0452b5ec2d05963)
-rw-r--r-- | ceilometer/alarm/storage/impl_sqlalchemy.py | 4 | ||||
-rw-r--r-- | ceilometer/event/storage/impl_sqlalchemy.py | 4 | ||||
-rw-r--r-- | ceilometer/storage/impl_sqlalchemy.py | 3 | ||||
-rw-r--r-- | ceilometer/tests/functional/storage/test_impl_sqlalchemy.py | 14 |
4 files changed, 25 insertions, 0 deletions
diff --git a/ceilometer/alarm/storage/impl_sqlalchemy.py b/ceilometer/alarm/storage/impl_sqlalchemy.py index 3efd74bb..6c8544b4 100644 --- a/ceilometer/alarm/storage/impl_sqlalchemy.py +++ b/ceilometer/alarm/storage/impl_sqlalchemy.py @@ -25,6 +25,7 @@ from sqlalchemy import desc from ceilometer.alarm.storage import base from ceilometer.alarm.storage import models as alarm_api_models from ceilometer.i18n import _LI +from ceilometer import storage from ceilometer.storage.sqlalchemy import models from ceilometer.storage.sqlalchemy import utils as sql_utils from ceilometer import utils @@ -85,6 +86,9 @@ class Connection(base.Connection): # in storage.__init__.get_connection_from_config function options = dict(cfg.CONF.database.items()) options['max_retries'] = 0 + # oslo.db doesn't support options defined by Ceilometer + for opt in storage.OPTS: + options.pop(opt.name, None) self._engine_facade = db_session.EngineFacade(url, **options) def upgrade(self): diff --git a/ceilometer/event/storage/impl_sqlalchemy.py b/ceilometer/event/storage/impl_sqlalchemy.py index b8d31fa1..b185a444 100644 --- a/ceilometer/event/storage/impl_sqlalchemy.py +++ b/ceilometer/event/storage/impl_sqlalchemy.py @@ -27,6 +27,7 @@ import sqlalchemy as sa from ceilometer.event.storage import base from ceilometer.event.storage import models as api_models from ceilometer.i18n import _LE, _LI +from ceilometer import storage from ceilometer.storage.sqlalchemy import models from ceilometer import utils @@ -130,6 +131,9 @@ class Connection(base.Connection): # in storage.__init__.get_connection_from_config function options = dict(cfg.CONF.database.items()) options['max_retries'] = 0 + # oslo.db doesn't support options defined by Ceilometer + for opt in storage.OPTS: + options.pop(opt.name, None) self._engine_facade = db_session.EngineFacade(url, **options) def upgrade(self): diff --git a/ceilometer/storage/impl_sqlalchemy.py b/ceilometer/storage/impl_sqlalchemy.py index 95e229ea..e557bb9b 100644 --- a/ceilometer/storage/impl_sqlalchemy.py +++ b/ceilometer/storage/impl_sqlalchemy.py @@ -223,6 +223,9 @@ class Connection(base.Connection): # in storage.__init__.get_connection_from_config function options = dict(cfg.CONF.database.items()) options['max_retries'] = 0 + # oslo.db doesn't support options defined by Ceilometer + for opt in storage.OPTS: + options.pop(opt.name, None) self._engine_facade = db_session.EngineFacade(url, **options) def upgrade(self): diff --git a/ceilometer/tests/functional/storage/test_impl_sqlalchemy.py b/ceilometer/tests/functional/storage/test_impl_sqlalchemy.py index 6ce0cfc7..0143da71 100644 --- a/ceilometer/tests/functional/storage/test_impl_sqlalchemy.py +++ b/ceilometer/tests/functional/storage/test_impl_sqlalchemy.py @@ -19,8 +19,10 @@ """ import datetime +import warnings import mock +from oslo_db import exception from oslo_utils import timeutils from six.moves import reprlib @@ -44,6 +46,18 @@ class CeilometerBaseTest(tests_db.TestBase): self.assertEqual('value', base['key']) +@tests_db.run_with('sqlite') +class EngineFacadeTest(tests_db.TestBase): + + @mock.patch.object(warnings, 'warn') + def test_no_not_supported_warning(self, mocked): + impl_sqlalchemy.Connection('sqlite://') + impl_sqla_alarm.Connection('sqlite://') + impl_sqla_event.Connection('sqlite://') + self.assertNotIn(mock.call(mock.ANY, exception.NotSupportedWarning), + mocked.call_args_list) + + @tests_db.run_with('sqlite', 'mysql', 'pgsql') class EventTypeTest(tests_db.TestBase): # EventType is a construct specific to sqlalchemy |