From 7a5bddd6d964dff70201a3544cc0c97270b370e5 Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Mon, 29 Jun 2015 18:04:16 +0200 Subject: [PATCH] Move 'alarm_connection' to 'connection' - Removes the specific alarm_connection option - Simplify get_connection*() functions and hardcode the namespace Change-Id: I9ac13c6e9356867a815e0b8afec4815916bf3a65 --- aodh/api/app.py | 2 +- aodh/cmd/eventlet/storage.py | 4 ++-- aodh/storage/__init__.py | 23 +++++++---------------- aodh/tests/db.py | 10 +++++----- aodh/tests/gabbi/fixtures.py | 2 +- aodh/tests/storage/test_get_connection.py | 8 +++----- setup.cfg | 2 +- tools/test_hbase_table_utils.py | 2 +- 8 files changed, 21 insertions(+), 32 deletions(-) diff --git a/aodh/api/app.py b/aodh/api/app.py index ef346704..558cdf81 100644 --- a/aodh/api/app.py +++ b/aodh/api/app.py @@ -64,7 +64,7 @@ def setup_app(pecan_config=None, extra_hooks=None): # FIXME: Replace DBHook with a hooks.TransactionHook app_hooks = [hooks.ConfigHook(), hooks.DBHook( - storage.get_connection_from_config(cfg.CONF, 'alarm'),), + storage.get_connection_from_config(cfg.CONF)), hooks.TranslationHook()] if extra_hooks: app_hooks.extend(extra_hooks) diff --git a/aodh/cmd/eventlet/storage.py b/aodh/cmd/eventlet/storage.py index 18ad47b4..6e26f00e 100644 --- a/aodh/cmd/eventlet/storage.py +++ b/aodh/cmd/eventlet/storage.py @@ -28,7 +28,7 @@ LOG = logging.getLogger(__name__) def dbsync(): service.prepare_service() - storage.get_connection_from_config(cfg.CONF, 'alarm').upgrade() + storage.get_connection_from_config(cfg.CONF).upgrade() def expirer(): @@ -36,7 +36,7 @@ def expirer(): if cfg.CONF.database.alarm_history_time_to_live > 0: LOG.debug("Clearing expired alarm history data") - storage_conn = storage.get_connection_from_config(cfg.CONF, 'alarm') + storage_conn = storage.get_connection_from_config(cfg.CONF) storage_conn.clear_expired_alarm_history_data( cfg.CONF.database.alarm_history_time_to_live) else: diff --git a/aodh/storage/__init__.py b/aodh/storage/__init__.py index 82db5b8e..4776d3d4 100644 --- a/aodh/storage/__init__.py +++ b/aodh/storage/__init__.py @@ -24,6 +24,8 @@ from stevedore import driver from aodh import utils +_NAMESPACE = 'aodh.storage' + LOG = log.getLogger(__name__) @@ -38,11 +40,6 @@ cfg.CONF.register_opts(OLD_OPTS) OPTS = [ - cfg.StrOpt('alarm_connection', - secret=True, - default=None, - help='The connection string used to connect to the alarm ' - 'database. (if unset, connection is used)'), cfg.IntOpt('alarm_history_time_to_live', default=-1, help=("Number of seconds that alarm histories are kept " @@ -88,25 +85,19 @@ class StorageBadAggregate(Exception): code = 400 -def get_connection_from_config(conf, purpose='alarm'): +def get_connection_from_config(conf): retries = conf.database.max_retries # Convert retry_interval secs to msecs for retry decorator @retrying.retry(wait_fixed=conf.database.retry_interval * 1000, stop_max_attempt_number=retries if retries >= 0 else None) def _inner(): - if conf.database_connection: - conf.set_override('connection', conf.database_connection, - group='database') - namespace = 'aodh.%s.storage' % purpose - url = (getattr(conf.database, '%s_connection' % purpose) or - conf.database.connection) - return get_connection(url, namespace) + return get_connection(conf.database.connection) return _inner() -def get_connection(url, namespace): +def get_connection(url): """Return an open connection to the database.""" connection_scheme = urlparse.urlparse(url).scheme # SqlAlchemy connections specify may specify a 'dialect' or @@ -114,8 +105,8 @@ def get_connection(url, namespace): engine_name = connection_scheme.split('+')[0] # NOTE: translation not applied bug #1446983 LOG.debug('looking for %(name)r driver in %(namespace)r', - {'name': engine_name, 'namespace': namespace}) - mgr = driver.DriverManager(namespace, engine_name) + {'name': engine_name, 'namespace': _NAMESPACE}) + mgr = driver.DriverManager(_NAMESPACE, engine_name) return mgr.driver(url) diff --git a/aodh/tests/db.py b/aodh/tests/db.py index b240b6ee..2684d37e 100644 --- a/aodh/tests/db.py +++ b/aodh/tests/db.py @@ -50,7 +50,7 @@ class MongoDbManager(fixtures.Fixture): message='.*you must provide a username and password.*') try: self.alarm_connection = storage.get_connection( - self.url, 'aodh.alarm.storage') + self.url) except storage.StorageBadVersion as e: raise testcase.TestSkipped(six.text_type(e)) @@ -66,7 +66,7 @@ class SQLManager(fixtures.Fixture): def setUp(self): super(SQLManager, self).setUp() self.alarm_connection = storage.get_connection( - self.url, 'aodh.alarm.storage') + self.url) @property def url(self): @@ -104,7 +104,7 @@ class HBaseManager(fixtures.Fixture): def setUp(self): super(HBaseManager, self).setUp() self.alarm_connection = storage.get_connection( - self.url, 'aodh.alarm.storage') + self.url) # Unique prefix for each test to keep data is distinguished because # all test data is stored in one table data_prefix = str(uuid.uuid4().hex) @@ -141,7 +141,7 @@ class SQLiteManager(fixtures.Fixture): def setUp(self): super(SQLiteManager, self).setUp() self.alarm_connection = storage.get_connection( - self.url, 'aodh.alarm.storage') + self.url) class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): @@ -193,7 +193,7 @@ class TestBase(testscenarios.testcase.WithScenarios, test_base.BaseTestCase): self.alarm_conn = None super(TestBase, self).tearDown() - def _get_connection(self, url, namespace): + def _get_connection(self, url): return self.alarm_conn def _get_driver_manager(self, engine): diff --git a/aodh/tests/gabbi/fixtures.py b/aodh/tests/gabbi/fixtures.py index fcafb90f..30f719ae 100644 --- a/aodh/tests/gabbi/fixtures.py +++ b/aodh/tests/gabbi/fixtures.py @@ -60,7 +60,7 @@ class ConfigFixture(fixture.GabbiFixture): group='oslo_policy') database_name = '%s-%s' % (db_url, str(uuid.uuid4())) - conf.set_override('alarm_connection', database_name, group='database') + conf.set_override('connection', database_name, group='database') conf.set_override('pecan_debug', True, group='api') diff --git a/aodh/tests/storage/test_get_connection.py b/aodh/tests/storage/test_get_connection.py index 692e9663..ff452b17 100644 --- a/aodh/tests/storage/test_get_connection.py +++ b/aodh/tests/storage/test_get_connection.py @@ -27,14 +27,12 @@ import six class EngineTest(base.BaseTestCase): def test_get_connection(self): - engine = storage.get_connection('log://localhost', - 'aodh.alarm.storage') + engine = storage.get_connection('log://localhost') self.assertIsInstance(engine, impl_log.Connection) def test_get_connection_no_such_engine(self): try: - storage.get_connection('no-such-engine://localhost', - 'aodh.metering.storage') + storage.get_connection('no-such-engine://localhost') except RuntimeError as err: self.assertIn('no-such-engine', six.text_type(err)) @@ -63,5 +61,5 @@ class ConnectionConfigTest(base.BaseTestCase): def test_only_default_url(self): self.CONF.set_override("connection", "log://", group="database") - conn = storage.get_connection_from_config(self.CONF, 'alarm') + conn = storage.get_connection_from_config(self.CONF) self.assertIsInstance(conn, impl_log.Connection) diff --git a/setup.cfg b/setup.cfg index 604d4396..49183360 100644 --- a/setup.cfg +++ b/setup.cfg @@ -26,7 +26,7 @@ packages = aodh [entry_points] -aodh.alarm.storage = +aodh.storage = log = aodh.storage.impl_log:Connection mongodb = aodh.storage.impl_mongodb:Connection mysql = aodh.storage.impl_sqlalchemy:Connection diff --git a/tools/test_hbase_table_utils.py b/tools/test_hbase_table_utils.py index a17c2bd0..8a88a65a 100644 --- a/tools/test_hbase_table_utils.py +++ b/tools/test_hbase_table_utils.py @@ -24,7 +24,7 @@ def main(argv): url = ("%s?table_prefix=%s" % (os.getenv("AODH_TEST_HBASE_URL"), os.getenv("AODH_TEST_HBASE_TABLE_PREFIX", "test"))) - alarm_conn = storage.get_connection(url, 'AODH.alarm.storage') + alarm_conn = storage.get_connection(url) for arg in argv: if arg == "--upgrade": alarm_conn.upgrade()