Move 'alarm_connection' to 'connection'

- Removes the specific alarm_connection option
- Simplify get_connection*() functions and hardcode the namespace

Change-Id: I9ac13c6e9356867a815e0b8afec4815916bf3a65
This commit is contained in:
Julien Danjou 2015-06-29 18:04:16 +02:00
parent a16fa7ae8a
commit 7a5bddd6d9
8 changed files with 21 additions and 32 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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)

View File

@ -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):

View File

@ -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')

View File

@ -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)

View File

@ -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

View File

@ -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()