summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhiQiang Fan <aji.zqfan@gmail.com>2015-11-17 00:34:16 +0800
committerZhiQiang Fan <aji.zqfan@gmail.com>2015-11-26 09:15:03 +0800
commit40c5ceefa96d93cf9b12fa189787ed3f26e853cc (patch)
treee95140e4b63b052e2287c468407a2a90aa91438d
parent1fae4ddf0dd69746715a35159929c674876d7d68 (diff)
downloadceilometer-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.py4
-rw-r--r--ceilometer/event/storage/impl_sqlalchemy.py4
-rw-r--r--ceilometer/storage/impl_sqlalchemy.py3
-rw-r--r--ceilometer/tests/functional/storage/test_impl_sqlalchemy.py14
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