Use oslo.db create_engine instead of SQLAlchemy
Change-Id: I327c40bcebe8d40cd515038dcf59a1926486f45e Closes-Bug: #1589673
This commit is contained in:
parent
8a220595e6
commit
314a204600
@ -26,7 +26,7 @@ from functionaltests.api.v1.behaviors import secret_behaviors
|
||||
from functionaltests.api.v1.models import container_models
|
||||
from functionaltests.api.v1.models import secret_models
|
||||
from functionaltests.common import config
|
||||
from sqlalchemy import create_engine
|
||||
from oslo_db.sqlalchemy import session
|
||||
|
||||
# Import and configure logging.
|
||||
BCONF = barbican_config.CONF
|
||||
@ -46,7 +46,7 @@ class DBManageTestCase(base.TestCase):
|
||||
|
||||
time.sleep(5)
|
||||
# Setup session for tests to query DB
|
||||
engine = create_engine(db_url)
|
||||
engine = session.create_engine(db_url)
|
||||
self.conn = engine.connect()
|
||||
|
||||
def tearDown(self):
|
||||
|
@ -16,7 +16,7 @@ import base64
|
||||
import json
|
||||
import traceback
|
||||
|
||||
import sqlalchemy
|
||||
from oslo_db.sqlalchemy import session
|
||||
from sqlalchemy import orm
|
||||
from sqlalchemy.orm import scoping
|
||||
|
||||
@ -32,7 +32,7 @@ class KekRewrap(object):
|
||||
|
||||
def __init__(self, conf):
|
||||
self.dry_run = False
|
||||
self.db_engine = sqlalchemy.create_engine(conf.sql_connection)
|
||||
self.db_engine = session.create_engine(conf.sql_connection)
|
||||
self._session_creator = scoping.scoped_session(
|
||||
orm.sessionmaker(
|
||||
bind=self.db_engine,
|
||||
|
@ -16,7 +16,7 @@ import base64
|
||||
import json
|
||||
import traceback
|
||||
|
||||
import sqlalchemy
|
||||
from oslo_db.sqlalchemy import session
|
||||
from sqlalchemy import orm
|
||||
from sqlalchemy.orm import scoping
|
||||
|
||||
@ -33,7 +33,7 @@ class KekSignatureMigrator(object):
|
||||
|
||||
def __init__(self, db_connection, library_path, login, slot_id):
|
||||
self.dry_run = False
|
||||
self.db_engine = sqlalchemy.create_engine(db_connection)
|
||||
self.db_engine = session.create_engine(db_connection)
|
||||
self._session_creator = scoping.scoped_session(
|
||||
orm.sessionmaker(
|
||||
bind=self.db_engine,
|
||||
|
@ -15,7 +15,7 @@
|
||||
from __future__ import with_statement
|
||||
|
||||
from alembic import context
|
||||
from sqlalchemy import create_engine, pool
|
||||
from oslo_db.sqlalchemy import session
|
||||
|
||||
from barbican.model import models
|
||||
|
||||
@ -77,9 +77,8 @@ def run_migrations_online():
|
||||
and associate a connection with the context.
|
||||
|
||||
"""
|
||||
engine = create_engine(
|
||||
get_sqlalchemy_url(),
|
||||
poolclass=pool.NullPool)
|
||||
engine = session.create_engine(
|
||||
get_sqlalchemy_url())
|
||||
connection = engine.connect()
|
||||
context.configure(
|
||||
connection=connection,
|
||||
|
@ -26,6 +26,8 @@ import sys
|
||||
import time
|
||||
import uuid
|
||||
|
||||
from oslo_db import exception as db_exc
|
||||
from oslo_db.sqlalchemy import session
|
||||
from oslo_utils import timeutils
|
||||
import sqlalchemy
|
||||
from sqlalchemy import func as sa_func
|
||||
@ -170,14 +172,9 @@ def _get_engine(engine):
|
||||
# connection_dict = sqlalchemy.engine.url.make_url(_CONNECTION)
|
||||
|
||||
engine_args = {
|
||||
'pool_recycle': CONF.sql_idle_timeout,
|
||||
'echo': False,
|
||||
'convert_unicode': True}
|
||||
if CONF.sql_pool_class:
|
||||
engine_args['poolclass'] = utils.get_class_for(
|
||||
'sqlalchemy.pool', CONF.sql_pool_class)
|
||||
'idle_timeout': CONF.sql_idle_timeout}
|
||||
if CONF.sql_pool_size:
|
||||
engine_args['pool_size'] = CONF.sql_pool_size
|
||||
engine_args['max_pool_size'] = CONF.sql_pool_size
|
||||
if CONF.sql_pool_max_overflow:
|
||||
engine_args['max_overflow'] = CONF.sql_pool_max_overflow
|
||||
|
||||
@ -233,7 +230,7 @@ def _create_engine(connection, **engine_args):
|
||||
LOG.debug('Sql connection: please check "sql_connection" property in '
|
||||
'barbican configuration file; Args: %s', engine_args)
|
||||
|
||||
engine = sqlalchemy.create_engine(connection, **engine_args)
|
||||
engine = session.create_engine(connection, **engine_args)
|
||||
|
||||
# TODO(jfwood): if 'mysql' in connection_dict.drivername:
|
||||
# TODO(jfwood): sqlalchemy.event.listen(_ENGINE, 'checkout',
|
||||
@ -408,9 +405,9 @@ class BaseRepo(object):
|
||||
try:
|
||||
LOG.debug("Saving entity...")
|
||||
entity.save(session=session)
|
||||
except sqlalchemy.exc.IntegrityError as e:
|
||||
except db_exc.DBDuplicateEntry as e:
|
||||
LOG.exception(u._LE('Problem saving entity for create'))
|
||||
error_msg = re.sub('[()]', '', str(e.orig.args))
|
||||
error_msg = re.sub('[()]', '', str(e.args))
|
||||
raise exception.ConstraintCheck(error=error_msg)
|
||||
|
||||
LOG.debug('Elapsed repo '
|
||||
@ -1432,7 +1429,7 @@ class ContainerConsumerRepo(BaseRepo):
|
||||
container.updated_at = timeutils.utcnow()
|
||||
container.consumers.append(new_consumer)
|
||||
container.save(session=session)
|
||||
except sqlalchemy.exc.IntegrityError:
|
||||
except db_exc.DBDuplicateEntry:
|
||||
session.rollback() # We know consumer already exists.
|
||||
|
||||
# This operation is idempotent, so log this and move on
|
||||
|
@ -17,6 +17,7 @@ from barbican.model import clean
|
||||
from barbican.model import models
|
||||
from barbican.model import repositories as repos
|
||||
from barbican.tests import database_utils as utils
|
||||
from oslo_db import exception as db_exc
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
import datetime
|
||||
@ -434,4 +435,4 @@ class WhenTestingDBCleanUpCommand(utils.RepositoryTestCase):
|
||||
secret.deleted = True
|
||||
secret_metadatum.deleted = False
|
||||
|
||||
self.assertRaises(IntegrityError, clean.cleanup_all)
|
||||
self.assertRaises(db_exc.DBReferenceError, clean.cleanup_all)
|
||||
|
@ -11,6 +11,7 @@
|
||||
# under the License.
|
||||
|
||||
import fixtures
|
||||
from oslo_db.sqlalchemy import session
|
||||
from oslo_utils import timeutils
|
||||
import sqlalchemy as sa
|
||||
|
||||
@ -25,7 +26,7 @@ class SessionQueryFixture(fixtures.Fixture):
|
||||
"""
|
||||
|
||||
def _setUp(self):
|
||||
self._engine = sa.create_engine('sqlite:///:memory:')
|
||||
self._engine = session.create_engine('sqlite:///:memory:')
|
||||
self.Session = sa.orm.sessionmaker(bind=self._engine)
|
||||
self.external_id = 'EXTERNAL_ID'
|
||||
models.BASE.metadata.create_all(self._engine)
|
||||
|
@ -259,11 +259,8 @@ class WhenTestingGetEnginePrivate(utils.BaseTestCase):
|
||||
engine.connect.assert_called_once_with()
|
||||
mock_create_engine.assert_called_once_with(
|
||||
'connection',
|
||||
pool_recycle=3600,
|
||||
convert_unicode=True,
|
||||
echo=False,
|
||||
poolclass=sqlalchemy.pool.QueuePool,
|
||||
pool_size=repositories.CONF.sql_pool_size,
|
||||
idle_timeout=3600,
|
||||
max_pool_size=repositories.CONF.sql_pool_size,
|
||||
max_overflow=repositories.CONF.sql_pool_max_overflow
|
||||
)
|
||||
|
||||
@ -289,11 +286,8 @@ class WhenTestingGetEnginePrivate(utils.BaseTestCase):
|
||||
engine.connect.assert_called_once_with()
|
||||
mock_create_engine.assert_called_once_with(
|
||||
'connection',
|
||||
pool_recycle=3600,
|
||||
convert_unicode=True,
|
||||
echo=False,
|
||||
poolclass=sqlalchemy.pool.QueuePool,
|
||||
pool_size=22,
|
||||
idle_timeout=3600,
|
||||
max_pool_size=22,
|
||||
max_overflow=11
|
||||
)
|
||||
|
||||
|
@ -9,6 +9,7 @@ eventlet!=0.18.3,>=0.18.2 # MIT
|
||||
jsonschema!=2.5.0,<3.0.0,>=2.0.0 # MIT
|
||||
oslo.config>=3.22.0 # Apache-2.0
|
||||
oslo.context>=2.12.0 # Apache-2.0
|
||||
oslo.db>=4.19.0 # Apache-2.0
|
||||
oslo.i18n>=2.1.0 # Apache-2.0
|
||||
oslo.messaging>=5.19.0 # Apache-2.0
|
||||
oslo.middleware>=3.10.0 # Apache-2.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user