Modify driver for bp add-mysql-support-for-freezer

Modify driver for sqlalchemy.

ref: https://storyboard.openstack.org/#!/story/2004132

Story: #2004132
Task: #27578

Change-Id: I8f5edca2b921ca4c8b12dc7f26ef7eb2c4242fef
Implements: bp add-mysql-support-for-freezer
This commit is contained in:
gengchc2 2018-10-28 22:48:27 -07:00
parent e1c01f8467
commit 25a9065324
1 changed files with 36 additions and 3 deletions

View File

@ -12,8 +12,14 @@
# License for the specific language governing permissions and limitations
# under the License.
import os
import threading
from stevedore import driver
from oslo_config import cfg
from oslo_db import api as db_api
from oslo_db.sqlalchemy import migration
from oslo_log import log
from freezer_api.db import base as db_base
@ -21,9 +27,20 @@ from freezer_api.db.sqlalchemy import api as db_session
from freezer_api.db.sqlalchemy import models
INIT_VERSION = 0
_IMPL = None
_LOCK = threading.Lock()
CONF = cfg.CONF
LOG = log.getLogger(__name__)
MIGRATE_REPO_PATH = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
'migrate_repo',
)
_BACKEND_MAPPING = {'sqlalchemy': 'freezer_api.db.sqlalchemy.api'}
@ -40,12 +57,28 @@ class SQLDriver(db_base.DBDriver):
return self._engine
def get_api(self):
return self.get_engine()
self.get_engine()
return self.IMPL
def get_backend(self):
global _IMPL
if _IMPL is None:
with _LOCK:
if _IMPL is None:
_IMPL = driver.DriverManager(
"freezer.database.migration_backend",
cfg.CONF.database.backend).driver
return _IMPL
def db_sync(self, version=None, init_version=INIT_VERSION, engine=None):
"""Migrate the database to `version` or the most recent version."""
def db_sync(self):
if not self._engine:
self._engine = self.get_engine()
models.register_models(self._engine)
return migration.db_sync(engine=self._engine,
abs_path=MIGRATE_REPO_PATH,
version=version,
init_version=init_version)
def db_show(self):
if not self._engine: